Androidコード混同簡単紹介1

2117 ワード

混同はパッケージ化の最も重要なプロセスの一つであり、特別な理由がない場合、すべてのappは混同を開くべきである.
まず,ここでいう混同は,コード圧縮,コード混同,リソース圧縮などの最適化過程を含む.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をチェックするのに役立ちます.コードを簡素化し、バグを検索し、徐々に自分の問題を認識します.