国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android代碼混淆的寫法總結

2019-10-22 18:14:35
字體:
來源:轉載
供稿:網友

Apk文件被反編譯出來能被獲取到里面的代碼。對于這種情況,我們可以對項目代碼進行混淆,隨機生成難理解的類名,方法名,讓代碼難以閱讀,加大功能被盜取的難度?;煜梢云鸬綁嚎sApk,混淆文件,預檢,優化的作用。

1. 使用方式,在gradle文件中設置minifyEnabled為true即可開啟混淆

buildTypes {    release {      minifyEnabled ture //是否開啟代碼混淆      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    }  }

混淆內容在proguard-android.txt文件中寫。

2. 混淆設置參數

-optimizationpasses 4 代碼混淆的壓縮比例,值介于0-7

-dontusemixedcaseclassnames 混淆后類型都為小寫

-dontskipnonpubliclibraryclasses 不去忽略非公共的庫類

-dontoptimize 不優化輸入的類文件

-dontpreverify 不做預校驗的操作

-ignorewarnings 忽略警告

-verbose 混淆時是否記錄日志

-keepattributes Annotation 保護注解

-printmapping proguardMapping.txt 生成原類名和混淆后的類名的映射文件

-optimizations !code/simplification/cast,!field/ ,!class/merging/ 指定混淆是采用的算法

3. 保持不被混淆的設置

保持實體類不混淆

-keep class 你的實體類所在的包.** { *; }

保持四大組件,Application,Fragment不混淆

-keep public class * extends android.app.Application-keep public class * extends android.app.Activity-keep public class * extends android.app.Fragment-keep public class * extends android.support.v4.app.Fragment-keep public class * extends android.app.Fragment-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

保持 native 方法不被混淆

-keepclasseswithmembernames class * {   native <methods>;}

保持枚舉enum類不被混淆

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

保持 Parcelable 不被混淆

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

保持第三方包不混淆,比如這里用到微信、支付寶支付第三方

#支付寶混淆-keep class com.alipay.android.app.IAlixPay{*;}-keep class com.alipay.android.app.IAlixPay$Stub{*;}-keep class com.alipay.android.app.IRemoteServiceCallback{*;}-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}-keep class com.alipay.sdk.app.PayTask{ public *;}-keep class com.alipay.sdk.app.AuthTask{ public *;}#微信支付混淆-keep class com.tencent.mm.opensdk.** {*;}-keep class com.tencent.wxop.** {*;}-keep class com.tencent.mm.sdk.** {*;}

4. 完整混淆示例:

#指定代碼的壓縮級別-optimizationpasses 5#包名不混合大小寫-dontusemixedcaseclassnames#不去忽略非公共的庫類-dontskipnonpubliclibraryclasses #優化 不優化輸入的類文件-dontoptimize #預校驗-dontpreverify #混淆時是否記錄日志-verbose#忽略警告-ignorewarning#保護注解-keepattributes *Annotation*-keep public class * extends android.app.Application-keep public class * extends android.app.Activity-keep public class * extends android.app.Fragment-keep public class * extends android.support.v4.app.Fragment-keep public class * extends android.app.Fragment-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-keepclasseswithmembernames class * {  native <methods>;}-keepclassmembers class * extends android.app.Activity {  public void *(android.view.View);}-keepclassmembers enum * {  public static **[] values();  public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *;}-keepclassmembers class **.R$* {  *;}-keep class * extends android.view.View{*;}-keep class * extends android.app.Dialog{*;}-keep class * implements java.io.Serializable{*;}#butterknife-keep class butterknife.** { *; }-dontwarn butterknife.internal.**-keep class **$$ViewBinder { *; }#volley-dontwarn com.android.volley.**-keep class com.android.volley.**{*;}#fastjson-dontwarn com.alibaba.fastjson.**-keep class com.alibaba.fastjson.**{*;}#happy-dns-dontwarn com.qiniu.android.dns.**-keep class com.qiniu.android.dns.**{*;}#okhttp-dontwarn com.squareup.okhttp.**-keep class com.squareup.okhttp.**{*;}-keep class okio.**{*;}-keep class android.net.**{*;}-keep class com.android.internal.http.multipart.**{*;}-keep class org.apache.**{*;}-keep class com.qiniu.android.**{*;}-keep class android.support.annotation.**{*;}-keep class com.squareup.wire.**{*;}-keep class com.ant.liao.**{*;}#騰訊-keep class com.tencent.**{*;}-keep class u.aly.**{*;}#ImageLoader-keep class com.nostra13.universalimageloader.**{*;}#友盟-dontwarn com.umeng.**-keep class com.umeng.**{*;}#pulltorefresh-keep class com.handmark.pulltorefresh.** { *; }-keep class android.support.v4.** { *;}-keep public class * extends android.support.v4.**{ public protected *;}-keep class android.support.v7.** {*;}

自己試著用一個簡單的項目加入混淆,打個包試試效果吧。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇东市| 江口县| 务川| 南通市| 长丰县| 独山县| 巩留县| 阿鲁科尔沁旗| 应用必备| 吉林市| 龙口市| 昌吉市| 重庆市| 云安县| 信阳市| 建阳市| 黄大仙区| 延津县| 健康| 普格县| 涿州市| 沾化县| 城口县| 吴堡县| 棋牌| 徐州市| 黄石市| 平湖市| 肇东市| 同心县| 民乐县| 石渠县| 布拖县| 杭州市| 托里县| 大兴区| 北辰区| 岳西县| 湘西| 永靖县| 丹寨县|