proguar在Android混淆中的用法
混淆器通過刪除從未用過的代碼和使用晦澀名字重命名類、字段和方法,對代碼進(jìn)行壓縮,優(yōu)化和混淆。結(jié)果是一個(gè)比較小的.apk文件,該文件比較難進(jìn)行逆向project。因此,當(dāng)你的應(yīng)用程序?qū)Π踩舾校ㄒ蟾撸?,比如?dāng)你授權(quán)應(yīng)用程序的時(shí)候,混淆器是一種重要的保護(hù)手段。
proguard 基本語法
// 保留native方法的方法的方法名和包含native方法的類的類名不變
-keepclasseswithmembernames class {
native<methods>;
}
// 保留繼承與View的類中的set*和get*方法
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
// 保留繼承與Activity的類中以View為參數(shù)的方法
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
// 保留實(shí)現(xiàn)了Parcelable 接口的類的類名以及實(shí)現(xiàn)了 Parcelanle$Creator 的內(nèi)部類
-keep class * implemenets android.os.Parcelable {
public static final android.os.Parcelanle$Creator *;
}
// 保留 R$*類中靜態(tài)字段的字段名
-keep class **.R$* {
public static <fields>;
}
也就是
類名不混淆 用keep
方法名不混淆 用keepclassmembers 或者 keepclasseswithmembernames(后者用于native不混淆)
不混淆的情況:
1 jni 調(diào)用java方法
2 四大組件
3 R文件
4 某些通過反射調(diào)用的類或方法
5 第三jar包(一般情況下不要混淆)
混淆去掉log
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String,int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
assumenosideeffects,proguard 配置文件里的參數(shù)。assume no side effects;假定無效;該屬性也就是標(biāo)識無效代碼。我們就是通過這個(gè)參數(shù)來讓proguard刪除日志代碼。
相關(guān)文章
Android使用Canvas?2D實(shí)現(xiàn)循環(huán)菜單效果
循環(huán)菜單有很多種自定義方式,我們可以利用ViewPager或者RecyclerView?+?CarouselLayoutManager?或者RecyclerView?+?PageSnapHelper來實(shí)現(xiàn)這種效果,今天我們使用Canvas?2D來實(shí)現(xiàn)這種效果,感興趣的朋友可以參考下2024-01-01
Android編程實(shí)現(xiàn)動(dòng)態(tài)更新ListView的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)動(dòng)態(tài)更新ListView的方法,結(jié)合實(shí)例形式詳細(xì)分析了ListView的布局及動(dòng)態(tài)更新實(shí)現(xiàn)方法,需要的朋友可以參考下2016-02-02
Android 使用地圖時(shí)的權(quán)限請求方法
今天小編就為大家分享一篇Android 使用地圖時(shí)的權(quán)限請求方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Android-ViewModel和LiveData使用詳解
這篇文章主要介紹了Android-ViewModel和LiveData使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Material Design系列之Behavior實(shí)現(xiàn)支付密碼彈窗和商品屬性選擇效果
這篇文章主要為大家詳細(xì)介紹了Material Design系列之Behavior實(shí)現(xiàn)支付密碼彈窗和商品屬性選擇效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Android網(wǎng)絡(luò)狀態(tài)實(shí)時(shí)監(jiān)聽實(shí)例代碼(二)
這篇文章主要介紹了Android網(wǎng)絡(luò)狀態(tài)實(shí)時(shí)監(jiān)聽實(shí)例代碼(2)的相關(guān)資料,需要的朋友可以參考下2016-03-03
Flutter多項(xiàng)選擇彈窗實(shí)現(xiàn)詳解
這篇文章介紹了Flutter多項(xiàng)選擇彈窗實(shí)現(xiàn)詳解,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2021-11-11
ListView實(shí)現(xiàn)下拉刷新加載更多的實(shí)例代碼(直接拿來用)
這篇文章主要介紹了ListView實(shí)現(xiàn)下拉刷新加載更多的實(shí)例代碼(直接拿來用)的相關(guān)資料,需要的朋友可以參考下2016-07-07
Android中不支持動(dòng)態(tài)申請權(quán)限的原因
這篇文章主要介紹了Android中不支持動(dòng)態(tài)申請權(quán)限的原因,本文列舉了幾個(gè)不支持動(dòng)態(tài)申請權(quán)限的原因,需要的朋友可以參考下2015-01-01

