Android Studio混淆與發佈

一、混淆

       步驟1:在build.gradle(app)文件中添加

        buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

 minifyEnabled默認爲false改爲true表示混淆, proguard-android.txt是SDK自帶的文件無需修改,proguard-rules.pro便是混淆需要編輯的策略文件。

二、修改proguard-rules.pro文件

      

#-----------------混淆配置設定------------------------------------------------------------------------
-optimizationpasses5                                                        #指定代碼壓縮級別
-dontusemixedcaseclassnames                                                 #混淆時不會產生形形色色的類名
-dontskipnonpubliclibraryclasses                                            #指定不忽略非公共類庫
-dontpreverify                                                               #不預校驗,如果需要預校驗,是-dontoptimize
-ignorewarnings                                                              #屏蔽警告
-verbose                                                                      #混淆時記錄日誌
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*      #優化


#-----------------
不需要混淆第三方類庫------------------------------------------------------------------
-dontwarn android.support.v4.**                                             #去掉警告
-keep class android.support.v4.** { *; }                                    #過濾android.support.v4
-keep interface android.support.v4.app.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment

-keep class org.apache.**{*;}                                               #過濾commons-httpclient-3.1.jar
-keep class org.greenrobot.**{*;}                                               #過濾eventbus-3.0.0.jar
-keep class com.google.gson.**{*;}                                               #過濾gson-2.7.jar
-keep class com.google.inject.**{*;}                                   #過濾guice-3.0-no_aop.jar
-keep class roboguice.**{*;}                                            #過濾roboguice-2.0.jar
-keep class com.ndktools.javamd5.**{*;}                                 #過濾JavaMD5.jar
-keep class javax.inject.**{*;}                                       #過濾javax.inject-1.jar
-keep class javax.annotation.**{*;}                                     #過濾jsr305-1.3.9.jar
-keep class grgbanking.rcc.tools.**{*;}                                    #過濾rcctools.jar
-keep class com.android.volley.**{*;}                                    #過濾volley.jar

#-----------------不需要混淆系統組件等-------------------------------------------------------------------
-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.preference.Preference
-keep public classcom.android.vending.licensing.ILicensingService

-keep class com.client.volley.bean.**{*;}                                   #過濾掉自己編寫的實體類


#----------------
保護指定的類和類的成員,但條件是所有指定的類和類成員是要存在------------------------------------
-keepclasseswithmembernamesclass * {
   public <init>(android.content.Context, android.util.AttributeSet);
}

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

 按照這個模板,替換你自己不需要混淆的外部jar包和系統jar包。

 三、發佈

點擊Build-->genericsigned APK


第一次需要點擊【Create new】彈出密鑰設置界面


Certificate至少需要設置一項,設置好後點擊【ok】,便開始打apk包,並且在工程目錄下app文件夾下生成app-release.apk,這就是混淆後發佈的apk

參考:http://blog.csdn.net/ttccaaa/article/details/47687241

發佈了30 篇原創文章 · 獲贊 21 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章