精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android混淆從入門到精通

移動開發 Android
作為Android開發者,如果你不想開源你的應用,那么在應用發布前,就需要對代碼進行混淆處理,從而讓我們代碼即使被反編譯,也難以閱讀。本篇文章的目的就是讓一個初學者在看完后,能在不進行任何幫助的情況下,獨立寫出適合自己代碼的混淆規則。

簡介

作為Android開發者,如果你不想開源你的應用,那么在應用發布前,就需要對代碼進行混淆處理,從而讓我們代碼即使被反編譯,也難以閱讀。混淆概念雖然容易,但很多初學者也只是網上搜一些成型的混淆規則粘貼進自己項目,并沒有對混淆有個深入的理解。本篇文章的目的就是讓一個初學者在看完后,能在不進行任何幫助的情況下,獨立寫出適合自己代碼的混淆規則。

說在前面

這里我們直接用Android Studio來說明如何進行混淆,Android Studio自身集成Java語言的ProGuard作為壓縮,優化和混淆工具,配合Gradle構建工具使用很簡單,只需要在工程應用目錄的gradle文件中設置minifyEnabled為true即可。然后我們就可以到proguard-rules.pro文件中加入我們的混淆規則了。

  1. android { 
  2.     ... 
  3.     buildTypes { 
  4.         release { 
  5.             minifyEnabled true 
  6.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
  7.         } 
  8.     } 
  9.  

以上示例代碼表示對release版本就行混淆處理。下面我們先來簡介下ProGuard的三大作用,并簡要說明下它們常用的命令。

ProGuard作用

壓縮(Shrinking):默認開啟,用以減小應用體積,移除未被使用的類和成員,并且會在優化動作執行之后再次執行(因為優化后可能會再次暴露一些未被使用的類和成員)。 

  1. -dontshrink 關閉壓縮 

優化(Optimization):默認開啟,在字節碼級別執行優化,讓應用運行的更快。

  1. -dontoptimize  關閉優化 
  2. -optimizationpasses n 表示proguard對代碼進行迭代優化的次數,Android一般為5  

混淆(Obfuscation):默認開啟,增大反編譯難度,類和類成員會被隨機命名,除非用keep保護。

  1. -dontobfuscate 關閉混淆 

混淆后默認會在工程目錄app/build/outputs/mapping/release下生成一個mapping.txt文件,這就是混淆規則,我們可以根據這個文件把混淆后的代碼反推回源本的代碼,所以這個文件很重要,注意保護好。原則上,代碼混淆后越亂越無規律越好,但有些地方我們是要避免混淆的,否則程序運行就會出錯,所以就有了下面我們要教大家的,如何讓自己的部分代碼避免混淆從而防止出錯。

基本規則

先看如下兩個比較常用的命令,很多童鞋可能會比較迷惑以下兩者的區別。

  1. -keep class cn.hadcn.test.** 
  2. -keep class cn.hadcn.test.*  

一顆星表示只是保持該包下的類名,而子包下的類名還是會被混淆;兩顆星表示把本包和所含子包下的類名都保持;用以上方法保持類后,你會發現類名雖然未混淆,但里面的具體方法和變量命名還是變了,這時如果既想保持類名,又想保持里面的內容不被混淆,我們就需要以下方法了

  1. -keep class cn.hadcn.test.* {*;} 

在此基礎上,我們也可以使用Java的基本規則來保護特定類不被混淆,比如我們可以用extend,implement等這些Java規則。如下例子就避免所有繼承Activity的類被混淆

  1. -keep public class * extends android.app.Activity 

如果我們要保留一個類中的內部類不被混淆則需要用$符號,如下例子表示保持ScriptFragment內部類JavaScriptInterface中的所有public內容不被混淆。

  1. -keepclassmembers class cc.ninty.chat.ui.fragment.ScriptFragment$JavaScriptInterface { 
  2.    public *; 
  3.  

再者,如果一個類中你不希望保持全部內容不被混淆,而只是希望保護類下的特定內容,就可以使用

  1. <init>;     //匹配所有構造器 
  2. <fields>;   //匹配所有域 
  3. <methods>;  //匹配所有方法方法  

你還可以在<fields>或<methods>前面加上private 、public、native等來進一步指定不被混淆的內容,如

  1. -keep class cn.hadcn.test.One { 
  2.     public <methods>; 
  3.  

表示One類下的所有public方法都不會被混淆,當然你還可以加入參數,比如以下表示用JSONObject作為入參的構造函數不會被混淆 

  1. -keep class cn.hadcn.test.One { 
  2.    public <init>(org.json.JSONObject); 
  3.  

有時候你是不是還想著,我不需要保持類名,我只需要把該類下的特定方法保持不被混淆就好,那你就不能用keep方法了,keep方法會保持類名,而需要用keepclassmembers ,如此類名就不會被保持,為了便于對這些規則進行理解,官網給出了以下表格

保留 防止被移除或者被重命名 防止被重命名
類和類成員 -keep -keepnames
僅類成員 -keepclassmembers -keepclassmembernames
如果擁有某成員,保留類和類成員 -keepclasseswithmembers -keepclasseswithmembernames

移除是指在壓縮(Shrinking)時是否會被刪除。以上內容時混淆規則中需要重點掌握的,了解后,基本所有的混淆規則文件你應該都能看懂了。再配合以下幾點注意事項,

注意事項

1,jni方法不可混淆,因為這個方法需要和native方法保持一致;

  1. -keepclasseswithmembernames class * { # 保持native方法不被混淆 
  2.     native <methods>; 
  3.  

2,反射用到的類不混淆(否則反射可能出現問題);

3,AndroidMainfest中的類不混淆,所以四大組件和Application的子類和Framework層下所有的類默認不會進行混淆。自定義的View默認也不會被混淆;所以像網上貼的很多排除自定義View,或四大組件被混淆的規則在Android Studio中是無需加入的;

4,與服務端交互時,使用GSON、fastjson等框架解析服務端數據時,所寫的JSON對象類不混淆,否則無法將JSON解析成對應的對象;

5,使用第三方開源庫或者引用其他第三方的SDK包時,如果有特別要求,也需要在混淆文件中加入對應的混淆規則;

6,有用到WebView的JS調用也需要保證寫的接口方法不混淆,原因和***條一樣;

7,Parcelable的子類和Creator靜態成員變量不混淆,否則會產生Android.os.BadParcelableException異常; 

  1. -keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 
  2.     public static final Android.os.Parcelable$Creator *; 
  3.  

8,使用enum類型時需要注意避免以下兩個方法混淆,因為enum類的特殊性,以下兩個方法會被反射調用,見第二條規則。 

  1. -keepclassmembers enum * { 
  2.     public static **[] values(); 
  3.     public static ** valueOf(java.lang.String); 
  4.  

寫在***

發布一款應用除了設minifyEnabled為ture,你也應該設置zipAlignEnabled為true,像Google Play強制要求開發者上傳的應用必須是經過zipAlign的,zipAlign可以讓安裝包中的資源按4字節對齊,這樣可以減少應用在運行時的內存消耗。

責任編輯:龐桂玉 來源: Android開發中文站
相關推薦

2010-02-06 15:31:18

ibmdwAndroid

2009-07-22 14:55:16

ibmdwAndroid

2022-06-10 08:17:52

HashMap鏈表紅黑樹

2017-05-09 08:48:44

機器學習

2012-02-29 00:49:06

Linux學習

2025-02-24 10:07:10

2022-09-02 15:11:18

開發工具

2024-02-26 08:52:20

Python傳遞函數參數參數傳遞類型

2010-11-08 10:20:18

2011-06-07 10:33:11

Android Activity

2011-10-26 20:47:36

ssh 安全

2017-01-09 09:34:03

Docker容器傳統虛擬機

2025-03-21 14:31:14

NumPyPython數組

2009-03-19 13:36:53

SSH安全通道遠程

2024-06-07 08:51:50

OpenPyXLPythonExcel文件

2009-07-03 18:49:00

網吧綜合布線

2023-10-13 08:23:05

2010-02-07 10:25:11

Android

2024-01-11 09:35:12

單元測試Python編程軟件開發

2023-05-09 08:34:51

PythonWith語句
點贊
收藏

51CTO技術棧公眾號

日韩毛片视频在线看| 中文字幕免费在线观看视频| 99riav国产| 伊人久久大香线蕉综合网站| 亚洲黄色尤物视频| 久久99久久亚洲国产| 天堂av8在线| 啊v视频在线| 亚洲第一福利专区| 欧美日韩三级一区| 色姑娘综合网| 午夜精品一区二| 欧美亚洲色图校园春色| 亚洲午夜精品17c| 亚洲影视中文字幕| 综合五月激情网| 欧美电影在线观看网站| 国产亚洲精品久| 日本精品免费观看| 蜜桃无码一区二区三区| 成人欧美大片| 日本一区二区三级电影在线观看 | 久久国产精品99久久久久久丝袜| 青青草原免费观看| 日韩精品一区国产| 亚洲精品成人精品456| 欧美资源一区| 亚洲天堂视频在线播放| 精品久久精品| 欧美日韩视频专区在线播放| 最新中文字幕久久| www.99视频| 激情视频一区二区三区| 亚洲精品动漫久久久久| 久久国产成人精品国产成人亚洲 | 亚洲剧情一区二区| 黄色片久久久久| 成人精品一区二区三区免费| 成人97人人超碰人人99| 国产91精品视频在线观看| 成年人在线观看av| yw.尤物在线精品视频| 一区二区中文字幕在线| 日本精品一区| 青青草超碰在线| 奇米一区二区三区| 久久成人免费视频| 91丝袜在线观看| 亚洲承认视频| 中文字幕一区三区| 成人综合色站| 亚洲av无码不卡| 小处雏高清一区二区三区| 精品国产青草久久久久福利| 无码aⅴ精品一区二区三区浪潮| 免费av不卡在线观看| 久久综合九色综合97婷婷女人| 国产欧美日韩精品专区| 精品无码人妻一区二区免费蜜桃 | 国产精品嫩草69影院| hd国产人妖ts另类视频| 国产人妖乱国产精品人妖| 精品一区二区三区视频日产| 中文字幕久久久久| 欧美涩涩视频| 伊人一区二区三区久久精品| 久久久久亚洲av片无码v| 在线天堂资源| 亚洲精品免费视频| 精品视频在线观看一区二区| 精品亚洲综合| 成人精品亚洲人成在线| 国产精品都在这里| 久久网一区二区| 成人午夜国产| 日韩精品免费在线播放| 伊人色在线视频| 亚洲天堂一区二区| 欧美日韩三级在线| 亚洲成a人无码| 日日夜夜亚洲| 日韩欧美aaa| 久久艹国产精品| 久久日韩视频| 国产精品欧美久久久久一区二区| 久久久久国产精品视频| 国产在线三区| 亚洲精品视频在线看| 亚洲一区三区| 国产三级视频在线播放线观看| gogo大胆日本视频一区| 97自拍视频| 精品国自产在线观看| av在线不卡免费看| 五月天亚洲综合| 色女人在线视频| 亚洲欧洲一区二区在线播放| 青青在线免费观看| 欧美xnxx| 精品va天堂亚洲国产| 日韩视频在线观看免费视频| 欧洲专线二区三区| 日韩精品久久久久久福利| 精品亚洲aⅴ无码一区二区三区| 综合国产在线| 欧美第一黄色网| 麻豆视频在线免费看| 亚洲综合欧美| 欧美一级成年大片在线观看| 国产又粗又猛又黄又爽无遮挡| 美女mm1313爽爽久久久蜜臀| 国产精品免费一区| 久久久国产免费| 国产69精品久久99不卡| 亚洲aⅴ男人的天堂在线观看| 无码国产精品96久久久久| 成人av先锋影音| 中文字幕精品—区二区日日骚| 日韩毛片久久久| 最新日韩在线视频| 国产成人亚洲精品无码h在线| 亚洲精品高潮| 亚洲国产日韩欧美在线动漫| 国产探花在线视频| 91av精品| 国产激情久久久久| 中文字幕日产av| 不卡电影免费在线播放一区| 国产一二三四五| 在线中文字幕电影| 亚洲国产欧美另类丝袜| 99热在线这里只有精品| 日本精品网站| 亚洲欧美日韩第一区| 日韩高清精品免费观看| 国产日韩欧美在线播放不卡| 国产999精品久久久| 成人午夜福利视频| 91首页免费视频| 天堂√在线观看一区二区| 国产ktv在线视频| 欧洲一区二区三区在线| 日本高清免费观看| 日韩中出av| 日韩性xxxx爱| 久久精品欧美一区二区| 久久久精品网| 91免费人成网站在线观看18| 人妻少妇一区二区三区| 久久精品一级爱片| 亚洲最新免费视频| 国产精品蜜月aⅴ在线| 国产亚洲欧美另类中文| 欧美在线视频第一页| 久久精品国产免费看久久精品| 婷婷精品国产一区二区三区日韩| 日韩在线免费| 精品国产91九色蝌蚪| 免费一级a毛片夜夜看| 国产suv一区二区三区88区| 中文字幕乱码免费| 福利片在线一区二区| 中文字幕精品一区二区精品| 国产精品第九页| 成人sese在线| 亚洲成熟丰满熟妇高潮xxxxx| 精品久久亚洲| 亚洲欧美精品一区二区| 日韩黄色片网站| 国产精品全国免费观看高清| 欧洲美女亚洲激情| 国产成人短视频在线观看| 欧美丰满少妇xxxxx| 丰满肥臀噗嗤啊x99av| 欧美日韩激情视频| 中文字幕亚洲日本| 亚洲人成免费| 99三级在线| 免费a级毛片在线播放| 日韩欧美极品在线观看| 非洲一级黄色片| 韩国午夜理伦三级不卡影院| 欧洲一区二区在线| 3d动漫一区二区三区在线观看| 日韩精品在线第一页| 久久久久香蕉视频| 久久综合狠狠综合久久激情| 日日噜噜夜夜狠狠| 国产精品欧美三级在线观看| 91精品久久久久久久久久另类| 欧洲成人av| 欧美精品乱码久久久久久| 国产成人无码精品久久二区三| 美女网站视频久久| 台湾成人av| 中文字幕一区二区三区中文字幕| 欧洲成人性视频| 色欲久久久天天天综合网| 伊人夜夜躁av伊人久久| 青青草视频成人| 国产精品18久久久久久久久 | 在线免费看黄网站| 91精品福利视频| 中国黄色a级片| 亚洲一区图片| 国产911在线观看| 精品午夜视频| 欧美在线免费看| 在线看三级电影| 中文字幕不卡av| 视频国产在线观看| 欧美视频13p| 久久久久久久久久久久久女过产乱| 91视频xxxx| 扒开伸进免费视频| 一区二区日韩免费看| 久久久久资源| 日韩一区二区三区精品| 国产精品入口福利| 免费成人动漫| 91国内在线视频| 免费a级毛片在线观看| 一本大道av伊人久久综合| 精品无人区无码乱码毛片国产| 国产成人免费在线| 天天久久综合网| 麻豆91在线看| the porn av| 日精品一区二区| 在线天堂一区av电影| 国产99久久精品一区二区300| 激情伦成人综合小说| 91精品国产自产精品男人的天堂| 91九色单男在线观看| 欧美亚洲黄色| 国产精品一区二区久久久| 欧美性xxx| 国产高清视频一区三区| 小黄鸭精品aⅴ导航网站入口| 欧美中文字幕在线观看| 中文字幕在线直播| 欧美综合激情网| 日本免费一区二区六区| 最新亚洲国产精品| 国产成人毛毛毛片| 高跟丝袜欧美一区| 国产精品午夜影院| 中文字幕综合网| 欧美a级片免费看| 国产精品久久久久久久蜜臀 | 亚洲精品美国一| 久久精品视频免费在线观看| 91热门视频在线观看| 国产精品久久AV无码| 美洲天堂一区二卡三卡四卡视频 | 欧美影视资讯| 国产精品h在线观看| jizzjizz少妇亚洲水多| 九九久久精品一区| 日本理论片午伦夜理片在线观看| 久久99热这里只有精品国产| 精灵使的剑舞无删减版在线观看| 欧美激情日韩图片| 激情aⅴ欧美一区二区欲海潮| 91精品91久久久久久| 樱花草涩涩www在线播放| 国产精品扒开腿做爽爽爽视频| 日韩制服诱惑| 99视频国产精品免费观看| 国产suv精品一区| 久久久影院一区二区三区 | av午夜精品一区二区三区| 成人网站免费观看| 欧美国产精品v| 国产+高潮+白浆+无码| 99久久国产综合色|国产精品| 999在线观看| 国产成人在线免费| 国产在线观看无码免费视频| 国产精品乱码人人做人人爱| 亚洲国产成人精品综合99| 精品久久久久久久久久久| 天天操天天操天天操天天操天天操| 亚洲精选在线视频| 特黄视频免费看| 欧美裸体bbwbbwbbw| 成人免费视频国产| 国产一区二区三区精品久久久| 大片免费在线看视频| 中文日韩在线观看| 午夜小视频在线观看| 精品欧美一区二区久久久伦| 日韩制服诱惑| 国产高清在线一区| 亚洲人成网亚洲欧洲无码| 亚洲欧美影院| 九色丨蝌蚪丨成人| 99久re热视频这里只有精品6| 老司机精品视频在线播放| 亚洲欧美精品| av成人毛片| 天天操精品视频| 久久久精品黄色| 免费无码毛片一区二区app| 欧美中文字幕一区| 性感美女福利视频| 欧美乱大交xxxxx另类电影| 欧美激情喷水| 国产一区二区视频在线免费观看| 6080成人| 一区二区三区精品国产| 中文亚洲字幕| 日韩久久久久久久久久久| 国产亚洲精品资源在线26u| 日韩久久久久久久久| 日韩一本二本av| 国产91麻豆视频| 久久久极品av| 国产黄色在线网站| 国产精品久久久久秋霞鲁丝 | 欧美一区二区日韩| 97人妻精品一区二区三区软件| 国产丝袜精品视频| www.youjizz.com在线| 91黄在线观看| 五月天久久网站| 日韩欧美视频免费在线观看| 免费高清在线一区| 色一情一交一乱一区二区三区| 精品国产乱码久久久久久婷婷| 成人乱码一区二区三区| 欧美日韩国产123| 秋霞一区二区三区| 国产资源第一页| 国产精品一区二区在线看| 波多野结衣办公室双飞 | 免费成人深夜夜行网站视频| 全国精品久久少妇| 国产精品美女高潮无套 | www.黄色国产| 久久99青青精品免费观看| 免费一区二区三区在线视频| 8x8x华人在线| 国产suv精品一区二区三区| 国产小视频在线观看免费| 欧美tickling网站挠脚心| 日韩电影免费| 秋霞午夜一区二区| 精品一区亚洲| 免费国产成人av| 国产精品自拍一区| 欧美风情第一页| 无码av中文一区二区三区桃花岛| 免费观看国产精品| 97精品国产91久久久久久| 国产成人77亚洲精品www| 日本一区二区三区四区在线观看 | 色婷婷一区二区三区在线观看| 亚洲欧美偷拍卡通变态| 国产乱国产乱老熟| 亚洲欧美一区二区三区久久| 欧美一区国产| 亚洲午夜激情| 国产美女在线精品| 国产1区2区在线观看| 欧美麻豆精品久久久久久| 亚洲妇熟xxxx妇色黄| 国产区一区二区三区| 六月天综合网| 久久av红桃一区二区禁漫| 亚洲午夜无码久久久久| 久久综合伊人77777| 999精品视频在这里| 日日噜噜噜夜夜爽爽| 国产成人综合亚洲91猫咪| 国产亚洲精品久久久久久无几年桃 | 亚洲欧洲日产国码二区| 精品国产99久久久久久宅男i| 97在线视频免费播放| 日韩国产在线| av丝袜天堂网| 日韩理论片网站| 四虎免费在线观看| 国产精品永久免费观看| 欧美午夜在线| 中国女人特级毛片| 欧美大片国产精品| 麻豆tv入口在线看| 国产欧美一区二区在线播放| 日韩av一级片| 18精品爽视频在线观看| 一区二区三区在线播放欧美| 亚洲日本视频在线| 超碰在线人人爱| 亚洲福利一二三区| 精品麻豆一区二区三区| 久久综合福利| 久久久久久久高潮| 久草福利资源在线观看| 国产性猛交xxxx免费看久久|