1

Android の Proguard ファイルでエラーが発生しました。

要点は、Android プロジェクトでの使用方法を知っていますが、今度はそれを Android ライブラリ プロジェクトに使用し、.jar抽出 (ライブラリにはリソースがありません) して、コードを難読化する必要があるということです。私のライブラリを誰もが使用できるように配布したいのですが、コードは難読化されています。

私の Android ライブラリ プロジェクトは通常のものです。ライブラリ プロジェクト.jarの「bin」フォルダに含まれているものを取り、Proguard を使用してこのように難読化しようとしています。

java -jar proguard.jar @proguard-project -verbose

私のProguardファイルは次のものです:

-injars in.jar -outjars out.jar

-libraryjars /home/jorider/wul4/adt-android/sdk/platforms/android-17/android.jar -libraryjars /home/jorider/wul4/adt-android/sdk/extras/android/support/v4/android-support -v4.jar -libraryjars commons-codec-repackaged-3.1-b36.jar -libraryjars httpmime-4.2.5.jar

-dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose

-dontoptimize -dontpreverify

-keepattributes Annotation -keep public class com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames クラス * { ネイティブ ; }

-keepclassmembers public class * extends android.view.View { void set*( *); ()を取得します。}

-keepclassmembers class * extends android.app.Activity { public void *(android.view.View); }

-keepclassmembers enum * { public static * [] values(); public static * valueOf(java.lang.String); }

-keep クラス * android.os.Parcelable を実装 { public static final android.os.Parcelable$Creator *; }

-keepclassmembers クラス * .R$ { public static ; }

-dontwarn android.support.**

コンソールで実行した結果は次のとおりです。

Shrinking...
java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options?

誰でも理由を知っていますか?

どうもありがとう!

4

1 に答える 1

3

ライブラリを処理するための構成は、ProGuard マニュアル > 例 >典型的なライブラリにあります。

特に、すべてのパブリック API を保持する必要があります。

-keep public class * {
    public protected *;
}
于 2013-08-13T22:36:31.597 に答える