2012-01-23 15 views
0

antとproguardを使用して私のアプリケーションのリリースバージョンを構築しています。私のアプリのリリース版は正常にビルドされていますが、難読化されるコードの唯一の部分はローカル変数です。メソッドとクラス変数はすべて正確な名前を保持しています。私の混乱に加えて、mapping.txtファイルはビルドするたびに生成され、メソッドとクラス変数が別のものにマップされているのが分かります。しかし、私が.apkファイルを分解するためにDex2Jarを使用すると、マッピングが表示されません。ProguardがAndroid Appで特定のコードを難読化していないのはなぜですか?

最近ADBをr16にアップグレードしました。このアップデートの前に、私はADBのバージョン14以前を使用していました。 ADBのr14より前のバージョンを使用して、私は約1年間私のアプリを難読化していました。私はこれらのpre-r14 .apksが完全に難読化されていることを検証することもできました。

誰かが、メソッド名とクラス変数が難読化されていない理由を教えてもらえますか?ビルドファイルを下に含めました。いくつかのビルドファイルの構造はr16にアップグレードした後に少し違っていますが、私は基本的に前r14 ADBを使用したときと同じ手順を踏襲しています。動作。

proguard.cfg:

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 
-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public interface com.android.vending.licensing.ILicensingService 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keepclasseswithmembernames class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembernames class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

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

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

のbuild.xml:私はあなたのbuild.xmlの参照番号で混乱していた

最初​​

+0

['-whyareyoukeeping classSpec'](http://proguard.sourceforge.net/manual/usage.html#whyareyoukeeping)オプションも参照してください。 – TWiStErRob

+0

apkをデコンパイルするには、私にはちょうど1ステップ。そして、すべての変数はそこでは価値のある平文です。それはプロガードが役に立たないようです。私が考えているのは、AESでAPKファイル全体を暗号化することです。まだ研究を行っている... – fordiy

答えて

0

へ」アドオンプロガード・リリース "ビルドプロセスにProguardサポートを追加するには、これらの参照であったことがわかりました。ただし、proguardのサポートは、マスターSDK_DIR/tools/ant.xml自体に組み込まれています。 (私はそれが実際にr16の前に来たと思います)

要するに、これらの参照は必要ありません。proguard.cfgファイルだけが存在する必要があります。私はdevのガイドに記載されているように、コマンドラインからサンプルプロジェクトを作成し、生成されたbuild.xmlをプロジェクトのbuild.xmlの基礎として使用します。それはおそらくすぐに正しく動作します。それは確かに私のためです。コマンドラインからAnt(Antバージョン1.8が必要)を使用してビルドされた私のリリースビルドは、メソッドが難読化されています。

P.S.また、project.propertiesファイルにproguard.config = proguard.cfgという行が必要です。

+0

ありがとうNickT!それがまさに問題の原因です。 「add-proguard-release」への両方の参照を削除した後は、すべてが正しく難読化されました。 – Michael

関連する問題