共通のライブラリプロジェクトを使用する複数のアプリケーションプロジェクトがあります。私は最近、各アプリケーションプロジェクトのAndroidManifest.xmlからいくつかの一般的なActivity宣言をライブラリのマニフェストに移動し、のマニフェストマージをproject.properties
に入れてみました。Proguardは、マージされたライブラリマニフェストのアクティビティ名を難読化しています
すべてはデバッグビルドでうまく動作しますが、リリースビルド(Proguardによって難読化されています)はActivityNotFoundException
で失敗します。これは、Proguardがライブラリマニフェストで宣言されているアクティビティの名前を難読化しているが、アプリケーションマニフェストの名前を難読化しているためです。
アプリケーションプロジェクトのファイルbin/AndroidManifest.xml
がマージされているかどうか調べました。アクティビティ名が正しく表示されています。
誰かが回避策を提案できますか?
@ Eric、私はそれがビルドシステムのバグだと思う(https://code.google.com/p/android/issues/detail?id=36077)。回避策や提案はありますか? – user802421
@ user802421明示的に上記の-keep行を追加すると回避できます。 –
@ Ericは明示的に追加しても機能しませんでした。 apkプロジェクトのマニフェストのクラス定義のみが保持されました。今私は合併をオフにし、libプロジェクトからすべてをコピーする必要があります。 :( – user802421