2

私は Android で難読化するのは初めてですが、ここ数日で Proguard を試し始めました。とにかく、私はいわゆるプロガード地獄で立ち往生しています。

私のアプリの構造は、3 つの異なるプロジェクトがあることです。1 つのライブラリと 2 つのアプリケーション プロジェクト。どちらのアプリケーション プロジェクトも、アプリケーションのすべてのロジックとライブラリを含むライブラリ プロジェクトに基づいています。アプリケーション プロジェクトにはほとんど何も配置されません。

しかし、Proguard を有効にしてアプリケーションの 1 つをエクスポートしようとすると、Jackson JSON 解析ライブラリでいくつかのエラーが発生します。私はさまざまなことを試しましたが、エラーを無視しようとしましたが、解析部分が失敗しました。したがって、エラーを無視することは正しいことではありません。

これは私のproguard-project.txtファイルです

-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
}
-keep public class com.google.android.vending.licensing.ILicensingService
-keep class org.codehaus.** { *; }

そして、これらは私が得るエラーです。

Warning: org.codehaus.jackson.map.ext.JodaSerializers$LocalDateTimeSerializer: 
  can't find referenced class org.joda.time.LocalDateTime
      You should check if you need to specify additional program jars.
Warning: there were 99 unresolved references to classes or interfaces.
         You may need to specify additional library jars (using '-libraryjars').
4

3 に答える 3

2

-keepjoda time クラスのオプションを追加してみてください:

-keep public class org.joda.time.** {public private protected *;}
-dontwarn org.joda.time.**
于 2012-12-13T19:48:55.943 に答える
0

「参照されたクラスが見つかりません」とは、これらのクラスを含む JAR ファイルを で指定する必要があることを意味し-libraryjarsますjavac

于 2012-12-14T07:56:41.683 に答える
0

プロガード自体に加えて、1.x ではなく、Jackson 2.x を使用していることを確認する必要があります。動的な (オプションの) 依存関係が少ないためです。これにより、PG によるノイズが低減されます。

于 2012-12-14T05:29:35.303 に答える