私は、Androidの比較可能性ライブラリ(android-support-v4)を利用するAndroid用のアプリケーションに取り組んでいます。SDK 20より前uses-sdk
は、マニフェストの次のエントリを使用してアプリケーションをコンパイルできました。
<uses-sdk android:minSdkVersion="7" />
結果のアクティビティを開始したすべてのフラグメントは、適切に結果を受け取りました。
ある日(SDK 20に更新する前)、lintの問題を修正android:targetSdkVersion
し、lintフラグの要求に従ってマニフェストに追加しましたが、すぐにフラグメントがonActivityResilt()呼び出しを受信していないことに気付きました。
SDK 20.0.1にアップデートしてから、マニフェストのandroid:targetSdkVersion
inuses-sdk
エントリを使用する必要があります。それ以外の場合、R.javaは生成されません。
これが私の現在のuses-sdk
マニフェストエントリです
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="16" />
現在、この奇妙なバグのために、私のアプリケーションは現在も壊れています。互換性のあるライブラリを最新バージョンr9に更新してみました。
また、フラグメント内のすべてのstartActivityForResult()
呼び出しを再確認しました。それらはすべて、フラグメントのメソッドを介して適切な呼び出しを使用します。
すなわち
this.startActivityForResult(intent, requestCode);
いいえ
this.getActivity().startActivityForResult(intent, requestCode);
私の現在の開発環境:
Android SDK 20.0.1
Android SDK Platform Tools 13
ADT 20.0.2
このバグは現在、私の最終的なベータテストを妨げているレンガの壁であるため、助けていただければ幸いです。
編集
これが私の出力ですant debug
$ ant debugビルドファイル:/home/ricky/Development/workspace/location_ringer/LocationRinger/build.xml
-set-mode-check:
-set-debug-files:
-check-env:[checkenv]AndroidSDKツールリビジョン20.0.1[checkenv]/ app/android-sdk-linux_86にインストール
-セットアップ:[echo]プロジェクト名:ListActivity [gettype]プロジェクトタイプ:アプリケーション
-set-debug-mode:
-デバッグ-難読化-チェック:
-build-setup:[echo]ListActivityのビルドターゲットを解決しています...[gettarget]プロジェクトターゲット:Google API [gettarget]ベンダー:Google Inc. [gettarget]プラットフォームバージョン:4.1 [gettarget] APIレベル:
16[echo]- ---------[echo]必要に応じて出力ディレクトリを作成しています...[echo]---------- [echo]ListActivityの依存関係を解決しています...[dependency]ライブラリの依存関係:[依存関係][依存関係]------------------[依存関係]順序付けられたライブラリ:[依存関係][依存関係]--------------- ---[依存関係]API<= 15:クラスパスにannotations.jarを追加します。[echo] ----------[echo]'debug'を使用したライブラリの構築...nodeps:
-set-mode-check:
-set-debug-files:
-check-env:[checkenv]AndroidSDKツールリビジョン20.0.1[checkenv]/ app/android-sdk-linux_86にインストール
-セットアップ:[echo]プロジェクト名:LocationLib [gettype]プロジェクトタイプ:Androidライブラリ
-set-debug-mode:
-デバッグ-難読化-チェック:
-build-setup:[echo]LocationLibのビルドターゲットを解決しています...[gettarget]プロジェクトターゲット:Google API [gettarget]ベンダー:Google Inc. [gettarget]プラットフォームバージョン:4.1 [gettarget] APIレベル:
16[echo]- ---------[echo]必要に応じて出力ディレクトリを作成しています...[echo]---------- [echo]LocationLibの依存関係を解決しています...[dependency]ライブラリの依存関係:[依存関係]ライブラリなし[依存関係][依存関係]------------------[依存関係]API<= 15:クラスパスにannotations.jarを追加します。-ビルド前:
-code-gen:[mergemanifest]AndroidManifestファイルに変更はありません。[echo]aidlファイルを処理しています...[aidl]コンパイルするAIDLファイルがありません。[echo] ----------[echo]RenderScriptファイルの処理...[renderscript]コンパイルするRenderScriptファイルがありません。[echo]----------[echo]リソースの処理...[aapt]変更されたリソースはありません。R.javaとManifest.javaはそのままです。[echo] ----------[echo]BuildConfigクラスを処理しています...[buildconfig]新しいBuildConfigを生成する必要はありません。
-プリコンパイル:
-コンパイル:[echo]ライブラリ出力jarファイルを作成しています...
-コンパイル後:
-難読化:
-dex:[echo]ライブラリプロジェクト:バイトコードを変換しない...
-crunch:[crunch]ソースディレクトリのPNGファイルのクランチ:/ home / ricky / Development / worksheet / location_library / LocationLib / res
[crunch]宛先ディレクトリ:/ home / ricky / Development / worksheet / location_library / LocationLib / bin / res [クランチ]キャッシュを更新するために0個のPNGファイルをクランチ-package-resources:[echo]ライブラリプロジェクト:リソースをパッケージ化しないでください...
-パッケージ:[echo]ライブラリプロジェクト:apkをパッケージ化しないでください...
-パッケージ後:
-do-debug:[echo]ライブラリプロジェクト:apkを作成しない... [propertyfile]プロパティファイルを更新しています:/home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile]プロパティファイルを更新しています: /home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile]プロパティファイルの更新:/home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile]プロパティファイルの更新: /home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop
-ビルド後:
デバッグ:
nodeps:
-set-mode-check:
-set-debug-files:
-check-env:[checkenv]AndroidSDKツールリビジョン20.0.1[checkenv]/ app/android-sdk-linux_86にインストール
-セットアップ:[echo]プロジェクト名:ExceptionHandlerLib [gettype]プロジェクトタイプ:Androidライブラリ
-set-debug-mode:
-デバッグ-難読化-チェック:
-build-setup:[echo]ExceptionHandlerLibのビルドターゲットを解決しています...[gettarget]プロジェクトターゲット:Android 4.1 [gettarget] APIレベル:
16 [echo]----------[echo]出力ディレクトリを作成しています必要に応じて...[echo]---------- [echo]ExceptionHandlerLibの依存関係を解決しています...[dependency]ライブラリの依存関係:[dependency]ライブラリなし[dependency] [dependency] ----- -------------[依存関係]API<= 15:クラスパスにannotations.jarを追加します。-ビルド前:
-code-gen:[mergemanifest]AndroidManifestファイルに変更はありません。[echo]aidlファイルを処理しています...[aidl]コンパイルするAIDLファイルがありません。[echo] ----------[echo]RenderScriptファイルの処理...[renderscript]コンパイルするRenderScriptファイルがありません。[echo]----------[echo]リソースの処理...[aapt]変更されたリソースはありません。R.javaとManifest.javaはそのままです。[echo] ----------[echo]BuildConfigクラスを処理しています...[buildconfig]新しいBuildConfigを生成する必要はありません。
-プリコンパイル:
-コンパイル:[echo]ライブラリ出力jarファイルを作成しています...
-コンパイル後:
-難読化:
-dex:[echo]ライブラリプロジェクト:バイトコードを変換しない...
-crunch:[crunch]ソースディレクトリ内のPNGファイルのクランチ:/ home / ricky / Development / worksheet / exception_handler_library / ExceptionHandlerLib / res [crunch]宛先ディレクトリへ:/ home / ricky / Development /ワークスペース/exception_handler_library/ ExceptionHandlerLib / bin / res [クランチ]キャッシュを更新するために0個のPNGファイルをクランチ
-package-resources:[echo]ライブラリプロジェクト:リソースをパッケージ化しないでください...
-パッケージ:[echo]ライブラリプロジェクト:apkをパッケージ化しないでください...
-パッケージ後:
-do-debug:[echo]ライブラリプロジェクト:apkを作成しない... [propertyfile]プロパティファイルを更新しています:/home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile]プロパティファイルを更新しています: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile]プロパティファイルの更新:/home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile]プロパティファイルの更新: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop
-ビルド後:
デバッグ:
-ビルド前:
-code-gen:[mergemanifest]AndroidManifestファイルを1つにマージします。[mergemanifest]プロジェクトと2つのライブラリからのマニフェストをマージします。[mergemanifest]警告:[AndroidManifest.xml:3、AndroidManifest.xml:3]メインマニフェストにはありますが、ライブラリはtargetSdkVersion = '16'を使用します[mergemanifest]注:メインマニフェストには宣言がなく、デフォルトで値minSdkVersionまたは1になります。[mergemanifest ]警告:[AndroidManifest.xml:3、AndroidManifest.xml:13]メインマニフェストにはありますが、ライブラリはtargetSdkVersion = '16'を使用します[mergemanifest]注:メインマニフェストには宣言がなく、デフォルトで値minSdkVersionまたは1になります。
ビルドに失敗しました/app/android-sdk-linux_86/tools/ant/build.xml:616:null
合計時間:2秒
編集
調べてみる/app/android-sdk-linux_86/tools/ant/build.xml:616
と、次の行がnullをスローしていることがわかりましたenabled="${manifestmerger.enabled}">
これがブロック全体です
マニフェストのマージオプションを無効にして、何が起こるかを確認します
編集
project.propertiesからmanifestmerger.enabled=trueを削除することで、私の問題は解決したようです。プロジェクトがコンパイルされ、完全に機能するようになりました。このバグをAndroidチームに報告する必要があると思います。私のマニフェストには次のエントリがあります
<uses-sdk android:minSdkVersion="7" />
ただし、targetSdkVersionを7より高くしても、onActivityResult()はまだ呼び出されないため、これは根本的な問題を実際には解決しませんが、プロジェクトは正常に機能しています。