1. 程式人生 > >Android學習筆記(二)

Android學習筆記(二)

1.Android的APK瘦身方法

在這裡給大家推薦一個網站,關於圖片線上壓縮的TinyPNG,然後使用android studio自帶工具Lint剔除無用資源(res資原始檔),如果你閒的話那就再手動剔除一遍(LZ當年也是這麼幹的);然後你可以去實驗一下,解壓一個APK包,然後看看他的內部結構: (1)、classes.dex:這是java原始碼編譯後生成的java位元組碼檔案 (2)、resources.arsc:這是編譯後的二進位制資原始檔 (3)、AndroidManifest.xml:這個Manifest檔案裡面都是編譯之後的,都是二進位制,看不到什麼資訊 (4)、proguard.cfg:這是程式碼混淆配置檔案 (5)、META-INF:該目錄下存放的是簽名信息,用來保證apk包的完整性和系統的安全 (6)、res:該目錄下存放的是資原始檔,但是也是編譯之後的,二進位制的。 你試過就會知道,真正容量大的就是classes.dex、資原始檔,當然了有時候也會有lib目錄,lib目錄下放的是一些jar包和so包,容量也是挺大的,所以這裡我們重點對這三類進行瘦身: (1)、classes.dex:使用Proguard ,這可以讓你在編譯的時候對程式碼進行混淆和優化,刪掉不必要的jar包和無用的程式碼。 (2)、res:使用Lint程式碼分析器,由於Proguard 只會對Java程式碼起作用,所以使用我們還得結合Lint工具,來幫你找到無用的資原始檔。 (3)、lib:一個硬體裝置對應一個架構(mips、arm或者x86),只保留與裝置架構相關的庫資料夾(主流的架構都是arm的,mips屬於小眾,預設也是支援arm的so的,但x86的不支援),這樣可以大大降低lib資料夾的大小。

2.關於Android的反編譯   

(1)、dex2jar:這個工具用於將dex檔案轉換成jar檔案。下載地址 (2)、jd-gui:這個工具用於將jar檔案轉換成java程式碼。下載地址 (3)、apktool 這個工具用於最大幅度地還原APK檔案中的9-patch圖片、佈局、字串等等一系列的資源。下載地址

3.Android的多渠道打包

多渠道打包:就是指分不同的市場打包,如安卓市場、百度市場、谷歌市場等等,Android的這個市場有點多,就不一一列舉了,多渠道打包是為了針對不同市場做出不同的一些統計,資料分析,收集使用者資訊。 百度一下多渠道打包,發現用的最多的應該是AndroidStudio用的多的友盟多渠道打包和Eclipse用的多的蘭貝殼兒外掛多渠道打包,具體的步驟可以參考下面: 友盟多渠道打包:

使用Android studio Gradle 實現友盟多渠道打包 蘭貝殼兒外掛多渠道打包:使用蘭貝殼兒Android多渠道批量打包

4.Android的apk加固

APK加固,說白了就是給APK加密,然後再套上一層殼就可以了,現在比較流行的第三方加固平臺有,愛加密、梆梆加固、360加固: (1)、愛加密 (2)、梆梆加固 (3)、360加固 他們的原理都是差不多的,主要的步驟就是:我們拿到需要加密的Apk和自己的殼程式Apk,然後用加密演算法對源Apk進行加密在將殼Apk進行合併得到新的Dex檔案,最後替換殼程式中的dex檔案即可,得到新的Apk,那麼這個新的Apk我們也叫作脫殼程式Apk。他已經不是一個完整意義上的Apk程式了,他的主要工作是:負責解密源Apk.然後載入Apk,讓其正常執行起來。具體的操作方法可以參考

Android中的Apk的加固(加殼)原理解析和實現