精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产乱码午夜在线视频| 国产日产亚洲系列最新| 国产aⅴ精品一区二区三区久久| 欧美日韩一区二区在线| 日韩欧美一区二区三区久久婷婷| 亚洲视屏在线观看| 欧美人成在线| 日韩电影网在线| 国产日韩成人内射视频| 黄网页免费在线观看| 成人av网站免费| 国产精品高潮呻吟久久av黑人| 2025国产精品自拍| 亚洲第一福利社区| 日韩限制级电影在线观看| 国模吧无码一区二区三区| 欧美jizz18性欧美| 99久久免费国产| 国产在线观看精品| 久久狠狠高潮亚洲精品| 99久久www免费| 日韩av影视在线| √天堂资源在线| 亚洲一二三四| 亚洲已满18点击进入久久| 欧美视频小说| 欧美性受xxxx狂喷水| 蜜芽一区二区三区| 欧美中文字幕在线播放| 青青青在线免费观看| 欧美日中文字幕| 亚洲精品电影久久久| 想看黄色一级片| 美女福利一区二区三区| 亚洲图片欧美一区| 一本二本三本亚洲码| 国自产拍在线网站网址视频| 成人禁用看黄a在线| 91沈先生作品| 一级黄色大片免费| 男同在线观看| 成人影院av| 亚洲精品水蜜桃| 一区二区三区我不卡| 精品成人一区二区三区免费视频| 成人一级视频在线观看| 亚洲最大av在线| 97免费观看视频| 六月婷婷色综合| 国产精品免费网站| 成人公开免费视频| 久久av在线| 奇米四色中文综合久久| 黄色在线观看国产| 国产欧美三级| 欧美性在线视频| 欧美一区二区激情视频| 亚洲欧洲日本一区二区三区| 欧美大片第1页| 久久久久久久久久久久久久免费看 | 国产欧美一区二区精品忘忧草| 欧美在线视频一区二区三区| 黄色网址在线播放| 国产日韩精品久久久| 日本一区二区精品视频| xxxxx日韩| 国产精品视频九色porn| 亚洲最大色综合成人av| 欧美激情免费| 亚洲精品一二三| 久久手机在线视频| 亚洲人成在线网站| 日本道色综合久久| 怡红院亚洲色图| 日韩一二三区| 亚洲国产欧美一区二区三区同亚洲| 在线观看国产网站| 精品一区三区| 色婷婷综合久久久久| 免费黄色国产视频| 欧美久久影院| 97人洗澡人人免费公开视频碰碰碰| 日韩伦人妻无码| 日本成人在线不卡视频| 91免费人成网站在线观看18| 国产91免费看| 久久久久9999亚洲精品| 艳色歌舞团一区二区三区| 在线观看中文字幕的网站| 亚洲国产欧美日韩另类综合| 日韩亚洲在线视频| 精品一区二区三区亚洲| 亚洲国产中文字幕久久网 | 国产精品毛片a∨一区二区三区| 中国一级大黄大黄大色毛片| 6699嫩草久久久精品影院| 色综合久久久久久久久久久| 在线播放黄色av| 秋霞影视一区二区三区| www.亚洲免费视频| 日本熟妇毛耸耸xxxxxx| 美女在线一区二区| 激情视频一区二区| 免费观看在线黄色网| 婷婷综合在线观看| 91国内在线播放| 欧美激情影院| 久久精品国产亚洲精品2020| 日韩精品1区2区| 国产乱码精品一区二区三区五月婷| 久久riav| 性欧美videos高清hd4k| 欧美网站大全在线观看| bl动漫在线观看| 综合一区在线| 日韩av免费在线看| 亚洲美女综合网| 国产精品久久国产精麻豆99网站| 男人的天堂狠狠干| 9999在线精品视频| 国产一区二区三区在线观看视频 | 在线播放av网址| 欧美成人激情| 国产精品高潮在线| 天天摸夜夜添狠狠添婷婷| 最新久久zyz资源站| av动漫在线观看| 东京久久高清| 九九精品在线视频| 国产理论片在线观看| 日本一区二区三区dvd视频在线 | 欧洲高清一区二区| 欧产日产国产精品视频| 337p日本欧洲亚洲大胆精品| 免费中文字幕在线| 麻豆成人免费电影| 亚洲不卡中文字幕| 日韩精品美女| 亚洲国产精品小视频| 国产一级理论片| 国产高清视频一区| 免费观看黄色大片| 亚洲视频资源| 久久在线观看视频| 国产精品国产av| 一色桃子久久精品亚洲| 色国产在线视频| 成人影视亚洲图片在线| 国产精品黄页免费高清在线观看| 男女污污视频在线观看| 天涯成人国产亚洲精品一区av| 91九色蝌蚪porny| 亚洲三级免费| 久久久久久草| 欧美日韩国产v| 尤物九九久久国产精品的分类 | 精品国产中文字幕| caoporn视频在线观看| 亚洲精品国产综合久久| 成人毛片18女人毛片| 久久久久久久久久久久久夜| 能在线观看的av网站| 俺要去色综合狠狠| 国产中文字幕91| 成年视频在线观看| 欧美精品一区二区三区四区 | 天天干天天舔天天操| 奇米亚洲午夜久久精品| 在线观看成人av电影| 欧美激情三级| 国内免费精品永久在线视频| 秋霞av在线| 欧美日韩国产综合草草| 欧美爱爱免费视频| 成人免费视频免费观看| 国产97在线 | 亚洲| 国产精选一区| 成人精品一区二区三区电影免费| 美洲精品一卡2卡三卡4卡四卡| 亚洲第一综合天堂另类专| 国产伦精品一区二区三区视频我| 国产精品麻豆99久久久久久| 岛国精品一区二区三区| 午夜一级久久| 韩国黄色一级大片| 日韩三区视频| 成人黄色网免费| 麻豆免费版在线观看| 色阁综合伊人av| www.黄色国产| 色94色欧美sute亚洲线路二| 国产十六处破外女视频| 久久综合九色综合97婷婷| 一区二区在线免费看| 国产在线不卡| 偷拍视频一区二区| jizz国产精品| 国产精品视频精品视频| 超碰在线公开| www.欧美精品一二三区| 天天操天天爱天天干| 欧美日韩日日骚| 国产视频91在线| 自拍偷拍国产精品| 精品无人区无码乱码毛片国产| 国产高清视频一区| 国产免费又粗又猛又爽| 亚洲二区视频| 精品91一区二区三区| 欧美热在线视频精品999| av成人午夜| 欧美97人人模人人爽人人喊视频| 国产69久久精品成人| 污片在线免费观看| 日韩亚洲综合在线| 黄色在线小视频| 亚洲国产一区自拍| 亚洲国产精彩视频| 777奇米四色成人影色区| 免费黄色片视频| 精品久久久久久久久中文字幕| 国产日韩欧美在线观看视频| 欧美国产精品中文字幕| 亚洲熟妇一区二区三区| av动漫一区二区| 精品国产午夜福利在线观看| 美女一区二区视频| 日韩在线第三页| 久久久久久久尹人综合网亚洲| 美女扒开大腿让男人桶| 欧美精品三区| 久久久久久久免费视频| 国产精品88久久久久久| 水蜜桃亚洲精品| 色棕色天天综合网| 欧美日韩精品免费观看视一区二区| 精品福利一区| 国产精品一区免费观看| 国产精品香蕉| 国产伦精品一区二区三区视频黑人 | 91免费国产视频| 亚洲精品视频一二三区| 99国产超薄肉色丝袜交足的后果| 国产精品xnxxcom| 91九色单男在线观看| 精品国产亚洲一区二区在线观看| 成人综合国产精品| 国产aⅴ精品一区二区四区| 成人xxxxx| 91嫩草国产线观看亚洲一区二区| 91精品在线观| 麻豆精品久久| 91黄色国产视频| 91午夜精品| 精品国产综合久久| 亚洲免费观看高清完整版在线观| 久久亚洲午夜电影| 国产精品三级| 亚洲一区bb| 欧美 日韩 国产精品免费观看| 国产一级黄色录像片| 亚洲视频精品| 无码中文字幕色专区| 午夜在线精品| 男操女免费网站| 狠狠色狠狠色综合日日91app| 亚洲国产午夜精品| 成人性生交大合| 亚洲av片不卡无码久久| 国产欧美一区二区精品秋霞影院| 免费成人深夜夜行网站| 一区二区三区四区中文字幕| 国产亚洲欧美久久久久| 欧美视频在线观看免费网址| 中文字幕免费播放| 日韩欧美一级二级三级| 精品久久蜜桃| 国产刺激高潮av| 亚洲三级av在线| 免费黄色在线网站| 蜜臀av性久久久久av蜜臀妖精| 日韩中文不卡| 一区二区电影| 久久久999视频| 麻豆成人综合网| 亚洲成年人av| 国产日产欧美一区二区三区| 97成人资源站| 欧美日韩视频免费播放| 中文字幕在线观看精品| 欧美一级一级性生活免费录像| 五十路在线观看| 色偷偷9999www| 超碰成人av| 成人精品在线视频| 六月丁香久久丫| 一本色道久久99精品综合| 怡红院精品视频在线观看极品| 日本一极黄色片| 国产成人av影院| 亚洲色图 激情小说| 亚洲一区二区三区不卡国产欧美| 久久久精品毛片| 欧美本精品男人aⅴ天堂| 国产二区在线播放| 国内久久久精品| 亚洲资源在线| 日本免费一区二区三区| 激情综合自拍| av免费一区二区| 久久午夜电影网| 精品一区免费观看| 欧美一区永久视频免费观看| 国产在线观看网站| 国模私拍视频一区| 成人精品在线| 台湾成人av| 99精品国产一区二区青青牛奶| 欧美日韩精品区别| 久久久久久久久久久99999| 久久久久久久久久久网| 777奇米四色成人影色区| www.视频在线.com| 91av免费观看91av精品在线| 午夜久久av| 亚洲 欧洲 日韩| 青青国产91久久久久久| 97人妻天天摸天天爽天天| 亚洲国产精品综合小说图片区| 88av在线视频| 中文字幕精品在线视频| 欧美色网一区| 蜜桃传媒视频麻豆第一区免费观看| 亚洲国产高清一区| 亚洲美女精品视频| 亚洲精品视频在线观看网站| 一区二区不卡视频在线观看| 在线亚洲国产精品网| 快播电影网址老女人久久| 日本一区免费看| 亚洲欧美日本国产专区一区| 亚洲第一黄色网址| 欧美日韩综合视频网址| 无码精品视频一区二区三区| 911国产网站尤物在线观看| 日韩大片在线免费观看| 久久久性生活视频| www.欧美亚洲| 国产精品自拍99| 亚洲男人第一网站| 亚洲精品国产嫩草在线观看| 欧美午夜免费| 日韩av一区二区在线影视| 美国黑人一级大黄| 欧美日韩国产首页| 操你啦视频在线| 91久久久一线二线三线品牌| 欧美日韩ab| 日本一区二区在线观看视频| 亚洲动漫第一页| 午夜激情在线视频| 欧美重口另类videos人妖| 精品国产一区二区三区久久久蜜臀 | 国产精品分类| 国产精品熟妇一区二区三区四区| 亚洲妇熟xx妇色黄| 嫩草研究院在线观看| 国产精品夜间视频香蕉| 亚洲成人二区| 丰满岳乱妇一区二区| 一本一道综合狠狠老| 欧美高清视频| 国产精品一区二区av| 天堂成人国产精品一区| 欧日韩不卡视频| 精品女同一区二区| 日韩脚交footjobhd| 亚洲一区综合| 国产99精品国产| 日本中文字幕第一页| 色综合亚洲精品激情狠狠| 亚洲伦理网站| 亚洲 欧美 日韩 国产综合 在线 | av在线视屏| 日日夜夜精品网站| 国产成人亚洲综合a∨婷婷| 日本在线视频中文字幕| 一区二区福利视频| 免费观看亚洲视频大全| 精品无码一区二区三区在线| 国产拍欧美日韩视频二区| www.久久成人| 日韩av手机在线| 午夜日韩视频| 亚洲自拍偷拍图| 欧美成人精品高清在线播放| 免费观看成人性生生活片 | 欧美一区二区三区性视频| 鲁鲁在线中文| 国产精品久久久影院|