aapt2命令行實(shí)現(xiàn)apk打包
apk文件結(jié)構(gòu)
-
classes.dex:Dex,即Android Dalvik執(zhí)行文件
-
AndroidManifest.xml:工程中AndroidManifest.xml編譯后得到的二進(jìn)制xml文件
-
META-INF:主要保存各個(gè)資源文件的SHA1 hash值,用于校驗(yàn)資源文件是否被篡改,防止二次打包時(shí)資源文件被替換,該目錄下主要包括下面三個(gè)文件:
- MANIFEST.MF:保存版本號(hào)以及對(duì)每個(gè)文件(包括資源文件)整體的SHA1 hash
- CERT.SF:保存對(duì)每個(gè)文件頭3行的SHA1 hash
- CERT.RSA:保存簽名和公鑰證書(shū)
-
res:res目錄下資源文件編譯后得到的二進(jìn)制xml文件
-
resources.arsc:包含了所有資源文件的映射,可以理解為資源索引,通過(guò)該文件能找到對(duì)應(yīng)的資源文件信息
aapt2打包流程
- 通過(guò)aapt2打包res資源文件:生成R.java、resoucres.arsc和res文件
- 通過(guò)Javac編譯R.java、Java源文件:生成class文件
- 通過(guò)d8命令:將class文件和第三方庫(kù)中的class文件處理生成classes.dex
- 通過(guò)aapt2工具:將aapt生成的resoucres.arsc和res文件、未編譯的資源assets文件和classes.dex一起打包生成apk
- 通過(guò)zipalign工具:將未簽名的apk進(jìn)行對(duì)齊處理
- 通過(guò)apksigner工具:對(duì)上面的apk進(jìn)行debug或release簽名
aapt2命令行實(shí)現(xiàn)打包
按照上面的順序使用各個(gè)命令便可以打包生成一個(gè)apk包了。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-672973.html
Gradle構(gòu)建工具打包
如果使用傳統(tǒng)的aapt2的方式打包,在多模塊的情況下將會(huì)十分的麻煩。幸好,gradle已經(jīng)將上述的命令集成了在了各個(gè)task中。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-672973.html
APK安全攻守道
風(fēng)險(xiǎn)種類(lèi) | 風(fēng)險(xiǎn)描述 | 解決方案 |
---|---|---|
App防止反編譯 | 被反編譯會(huì)暴露客戶端邏輯,加密算法,密鑰等等 | I加密,邦邦加固,360加固包等 |
資源文件泄漏風(fēng)險(xiǎn) | 獲取圖片,js等文件 | 資源混淆(AndResGuard),加固等 |
so文件破解風(fēng)險(xiǎn) | 導(dǎo)致核心代碼邏輯泄漏 | so加固 |
測(cè)試開(kāi)關(guān)的代碼被打包發(fā)布 | 通過(guò)測(cè)試的url,測(cè)試賬號(hào)等對(duì)正式服務(wù)器進(jìn)行攻擊 | 正式服務(wù)器與測(cè)試服務(wù)器不要使用同一個(gè) |
Root設(shè)備運(yùn)行風(fēng)險(xiǎn) | 已經(jīng)root的手機(jī)通過(guò)獲取應(yīng)用的敏感信息等 | root手機(jī)禁止應(yīng)用啟動(dòng) |
模擬器運(yùn)行風(fēng)險(xiǎn) | 刷單,模擬虛擬位置等 | 禁止在虛擬器上運(yùn)行 |
截屏攻擊風(fēng)險(xiǎn) | 對(duì)app運(yùn)行中的界面進(jìn)行截圖或錄制來(lái)獲取用戶信息 | 添加屬性getWindow().setFlags(FLAG_SECURE,FLAG_SECURE)不讓用戶截圖和錄屏 |
輸入監(jiān)聽(tīng)風(fēng)險(xiǎn) | 用戶輸入的信息被監(jiān)聽(tīng) | 自定義鍵盤(pán) |
到了這里,關(guān)于Android中的APK打包與安全的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!