0

さまざまなモジュールで構成される Android アプリがあります。Main モジュールは、Google の GSON や v4.support.package などのライブラリを使用しています。適切な proguard.cfg を使用したカスタム ビルド スクリプトでもビルドされます。ここで、部分的に同じライブラリ (GSON support.v4) を使用する別の「Android ライブラリ」を統合する必要があります。のようなたくさんのメモを取得する以外に

注: プログラム クラス [com.google.gson.Gson] の重複定義

次のようなメモも取得します

[proguard] 注: com.google.gson.UnsafeAllocator: 動的に参照されるクラス sun.misc.Unsafe が見つかりません

[proguard] 注: 構成は不明なクラス「sun.misc.Unsafe」を参照しています

特にそのために、Proguard.cfgにいくつかの「キープ」がある奇妙な原因を見つけました:

-keepattributes 署名、注釈

-keep class com.google.gson.** {*;}

-keep class sun.misc.Unsafe { *; }

これは、プロジェクト内のモジュール ライブラリを参照しなくても、プロジェクトでうまく機能します。私は最新の SDK とツールを使用しており、カスタムの proguard.cfg をモジュール ライブラリに追加しました。これは、モジュール ライブラリ自体でうまく機能します (スタンドアロン モードでビルドする場合)。ビルドは、ライブラリ プロジェクト内のカスタム proguard.cfg に依存していないように思えます。何を試すべきかについてのアイデアは高く評価されます

4

1 に答える 1

-1

私はついにそれに対する解決策を自分で見つけました。最後のAndroidTools(16)では、すべてのAndroidライブラリが最初に独自にコンパイルされます。したがって、libに「標準」ビルドがなく、proguard --keepsを含むカスタムビルドスクリプトを定義し、この--keepsが同じプロジェクトで定義されている場合(コンパイルされていないため、Android SDKクラスを除く)、プロガードエラー。解決策は、ライブラリからプロガードを削除し、メインアプリ内に--keepsをコピーすることでした

于 2012-01-23T01:33:10.237 に答える