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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章