日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android默认代码混淆,Android SDK默认混淆配置文件

發(fā)布時間:2023/12/10 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android默认代码混淆,Android SDK默认混淆配置文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.介紹

通常情況下編譯后的字節(jié)碼包含了大量調試信息(如源類名/行號等)

混淆代碼就能刪除這些調試信息,并用無意義字符替換所有名字,增加反編譯難度!

ProGuard是一個混淆代碼的開源項目,主要作用如下:

混淆Obfuscate 用無意義字符替換類名/字段名/屬性名/方法名等

壓縮Shrink 移除無用類/字段/屬性/方法

優(yōu)化Optimize 移除無用字節(jié)碼指令

預檢preverify 預檢字節(jié)碼,確??蓤?zhí)行

二.混淆配置

在Android studio/build.gradle中

android {

...

buildTypes {

release {

//開啟混淆/壓縮

minifyEnabled true

//proguard-android.txt是Android SDK默認混淆配置文件,

//proguard-rules.pro是我們自定義混淆配置文件

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

1.自定義混淆文件proguard-rules.pro

#基本指令----------------------------------

-printmapping proguardMapping.txt #輸出混淆前后代碼映射關系

-keepattributes Signature #保留泛型

-keepattributes SourceFile, LineNumberTable #拋出異常時保留代碼行號

#移除log代碼

#確保沒有開啟--dontoptimize選項

#默認混淆文件不要用proguard-android.txt,應該用proguard-android-optimize.txt

#assume no side effects假定無效, 標識無效代碼

-assumenosideeffects class android.util.Log {

public static int v(...);

public static int d(...);

public static int i(...);

}

2.Android SDK默認混淆文件proguard-android.txt

AndroidSDK\tools\proguard\proguard-android.txt

\proguard-android-optimize.txt

其中proguard-android是不開啟優(yōu)化的配置文件

proguard-android-optimize.tx是開啟優(yōu)化的配置文件

#1.在proguard-android-optimize.txt中——————————————————————————————

#開啟優(yōu)化

-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* -optimizationpasses 5 -allowaccessmodification ......剩下部分同proguard-android.txt

#2.在proguard-android.txt中———————————————————————————————————————

#不開啟優(yōu)化, 會導致-assumenosideeffects無法去除log代碼

#如果要用-assumenosideeffects去除log代碼,默認混淆文件應該選proguard-android-optimize.txt

-dontoptimize

-dontusemixedcaseclassnames

-dontskipnonpubliclibraryclasses

-verbose

-dontpreverify

-keepattributes *Annotation*

-keep public class com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * {

native ;

}

-keepclassmembers public class * extends android.view.View {

void set*(***);

*** get*();

}

-keepclassmembers class * extends android.app.Activity {

public void *(android.view.View);

}

-keepclassmembers enum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keepclassmembers class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator CREATOR;

}

-keepclassmembers class **.R$* {

public static ;

}

-dontwarn android.support.**

-keep class android.support.annotation.Keep

-keep @android.support.annotation.Keep class * {*;}

-keepclasseswithmembers class * {

@android.support.annotation.Keep ;

}

-keepclasseswithmembers class * {

@android.support.annotation.Keep ;

}

-keepclasseswithmembers class * {

@android.support.annotation.Keep (...);

}

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的android默认代码混淆,Android SDK默认混淆配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。