APK體積減少攻略

APK體積減少攻略

整體7zip壓縮

  1. 將APK包解壓到文件夾
  2. 全選所有文件,右鍵“添加到壓縮包”
    3.“壓縮格式”必須“zip”
    4.“壓縮等級”選擇“極限壓縮”
    5.“壓縮方法”必須“Deflate”(試了Deflate64,BZip2,LZMA,PPMd都無法正常安裝)
    6.“單詞大小”選擇“256”
  3. 將后綴改為APK即可

apksigner簽名

原理:
jarsigner是對apk文件里面的每一個路徑都會簽名,而apksigner只對整體文件簽名,并將結果保存到METF中

制作jks簽名文件

cmd 命令 C:\Program Files\Java\jre1.8.0_111\bin>keytool -genkeypair -alias shy_debug.jks
-keyalg RSA -validity 7 -keystore shy_debug.jks

keytool: 是一個Java數(shù)據(jù)證書的管理工具,keytool 將密鑰(key)和證書(certificates)
存在一個keystore的文件中,或者是jks的文件

keystore:其中包含密鑰和公鑰,指定導出的證書位置和名稱

genkey: 在用戶目錄中創(chuàng)建一個默認.keystore文件

alias:指定別名名稱,不區(qū)分大小寫

keyalg: 指定密鑰算法,例如:RSA、DSA等。默認采用DSA

validity:指定證書有效期多少天

keysize:指定密鑰長度

storepass:指定密鑰庫的密碼(獲取keystroe信息所需的密碼)

keypass:指定別名條目的密碼(私鑰的密碼)

dname:證書擁有者的信息??梢圆挥迷诿钪凶⒚?,會提示你輸入

list:顯示密鑰庫中的證書信息

v:顯示密鑰庫中的證書詳細信息

export:將別名指定的證書導出到文件

file:指定導出到文件的文件名稱

deltete:刪除密鑰庫中的某條目

printcert:查看導出的信息
例子

keytool -genkey -alias fanle -keypass 123456 -keyalg RSA -keysize 1024 -validity 3650 -keystore D:\fanle.jks -storepass 123456 -dname "CN=fanle, OU=xx, O=xx, L=xx, ST=xx, C=xx"

簽名

java -jar /Users/sever1/shell/third/apksigner.jar sign  --ks /Users/sever1/shell/third/boxing.jks  --ks-key-alias jackzhous  --ks-pass pass:wsdyi100  --key-pass pass:wsdyi100  --out out.apk input.apk

剛剛試了一把,發(fā)現(xiàn)apk少了5M

刪除部分R文件

隨著項目越來越大,資源文件R會越來越大,大家都知道Android讀取資源文件時java里面都是通過R.x.x讀取的,再到R.java里面得到資源對應的ID,再回通過ID去resource.asrc里面找到我們的資源顯示即可;看看這個讀取過程,其實我們可
以省去java的R.x.x讀取方式,直接在Java里面用ID讀取,這里我們可以用Python自己寫個腳本完成;現(xiàn)在Android studio新版本應該是做了腳本這一步,我們所需要做的就是拿到打好的apk,然后完成以下幾步

  • apktool解包
  • 解開包后,刪除掉smali目錄下R文件除R.smali R$style.smali R$stleable.smali之外的其他幾個R文件
  • apktool和包簽名即可
delete_r.png

最后,能減小apk不少的體積

其它資源策略

1.首先考慮能否不用圖片,比如使用shape代碼實現(xiàn)。

2.其次如果用圖片的話,能否優(yōu)先使用.9圖來簡化圖片。

3.采用svg矢量圖和VectorDrawable類來替換傳統(tǒng)的圖片。

4.如果圖片只是旋轉角度或者顏色不同,可以用代碼實現(xiàn)變換。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 服務器https配置 配置https操作說明文檔 1、查看服務器環(huán)境配置(tomcat和apache合并使用) 2...
    南京楊小兵閱讀 9,255評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,662評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,234評論 25 708
  • 思憶深處的渴望 留在了向陽花上 那片耀眼的金黃 捂溫秋雨的涼 歌聲宛若雨燕在空中 尋覓萬物生靈 足音掠過高粱的紅 ...
    劉海波a閱讀 277評論 4 12
  • 我見過太多梧桐葉紛飛,雨穿細縫歸。 一直覺得秋天是一個傷感的季節(jié),特別是步入了深秋,走進一條深地發(fā)黑的弄堂,任...
    三川ning閱讀 566評論 0 0

友情鏈接更多精彩內容