Androidコード混同簡単紹介1
2117 ワード
混同はパッケージ化の最も重要なプロセスの一つであり、特別な理由がない場合、すべてのappは混同を開くべきである.
まず,ここでいう混同は,コード圧縮,コード混同,リソース圧縮などの最適化過程を含む.ProGuardによると、混同プロセスは、64 Kメソッド数のボトルネックを回避するのに役立ち、プライマリ・プロジェクトおよび依存ライブラリで使用されていないクラス、クラス・メンバー、メソッド、プロパティを除去します.また、クラス、クラスメンバー、メソッドの名前を無意味な短い名前に変更することで、逆方向エンジニアリングの難易度が向上します.GradleのAndroidプラグインにより、未使用のリソースを削除し、apkインストールパッケージのサイズを効果的に削減します.
ここでは一般的な混同を簡単に紹介するだけで、ほとんどの製品に適用されます.
まず,ここでいう混同は,コード圧縮,コード混同,リソース圧縮などの最適化過程を含む.ProGuardによると、混同プロセスは、64 Kメソッド数のボトルネックを回避するのに役立ち、プライマリ・プロジェクトおよび依存ライブラリで使用されていないクラス、クラス・メンバー、メソッド、プロパティを除去します.また、クラス、クラスメンバー、メソッドの名前を無意味な短い名前に変更することで、逆方向エンジニアリングの難易度が向上します.GradleのAndroidプラグインにより、未使用のリソースを削除し、apkインストールパッケージのサイズを効果的に削減します.
ここでは一般的な混同を簡単に紹介するだけで、ほとんどの製品に適用されます.
1、 build.gradle
android {
buildTypes {
release {
minifyEnabled true // release minifyEnabled true,
shrinkResources true //
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
2、
proguard-rules.pro , , , , 。
#
-optimizationpasses 5
#
-dontskipnonpubliclibraryclassmembers
#
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
#
-useuniqueclassmembernames
#
-allowaccessmodification
# “SourceFile”
-renamesourcefileattribute SourceFile
#
-keepattributes SourceFile,LineNumberTable
# Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
#Fragment AndroidManifest.xml ,
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Fragment
#
-dontnote junit.framework.**
-dontnote junit.runner.**
-dontwarn android.test.**
-dontwarn android.support.test.**
-dontwarn org.junit.**
, , ( )。 , 。
混同している間、codeをチェックするのに役立ちます.コードを簡素化し、バグを検索し、徐々に自分の問題を認識します.