編輯:關於android開發
一.apktool的作用
安卓應用apk文件不僅僅是包含有resource和編譯的java代碼的zip文件,如果你嘗試用解壓工具(如好壓)解壓後,你將會獲得classes.dex和resource.arsc等文件。但這些文件對我們來說一無用處。你可以嘗試打開AndroidManifest.xml:
二.apktool命令相關選項(options)說明
1.概要
使用:apktool
(1)-version,--version
查看apktool版本號。
(2)-v,--verbose
使用apktool命令時輸出詳細內容,該參數必須作為第一個參數。
(3)-q,--quiet
隱藏輸出(quiet output),即輸出是不顯示詳細信息,該參數必須作為第一個參數。
(4)-advance,--advances
輸出更詳細的信息。
2.反編譯(decode)
使用:apktool d testapp.apk
(1)--api
產生smail文件的api等級。(??)
(2)-b,--no-debug-info
阻止baksmail寫出debug信息。
(3)-d,--debug
在debug模式下decode apk。
(4)--debug-line-prefix
在debug模式下decode時,smali中有行號前綴。
(5)-f,--force
強制刪除目標目錄,如在再次decode時,刪除已經存在的文件夾。強制覆蓋存在。
(6)--keep-broken-res
如果存在類似這樣的錯誤:Invalid Config Flags Detected. Dropping Resouerces…,如果加上該選項,則仍然能夠通過decode,但需要手動修改文件夾中報錯的問題。
(7)-m,--match-original
盡量去保持跟原文件一致或接近,但不能夠重新編譯打包(rebuild)。
(8)-o,--output <dir>
apk反編譯後輸出到指定目錄
(9)-p,--frame-path <dir>
指定framework文件儲存的位置。
(10)-r,--no-res
阻止反編譯resource,不修改resources.arsc,若僅僅修改java(smail),建議使用該選項。
(11)-s,--no-src
阻止dex文件分割,在build時僅僅移動classes.dex,若需要快速打包,建議使用該選項。
(12)-t,--frame-tag <TAG>
給生成的framework文件打上標識。
2.編譯(rebuild)
使用:apktool b apptest
(1)-a,--aapt
從特殊的位置load appt,不在依賴path。
(2)-c,--copy-original
復制原始的AndroidManifest.xml 和 META-INF文件到apk,可用於保持簽名。
(3)-d,--debug
在debug模式下打包。
(4)-f,--force-all
在打包時重寫已經存在的文件,強制覆蓋。
(5)-o,-output <file>
輸出apk的位置和名字。
(6)-p,--frame-path <dir>
保存framework文件到指定目錄。
三.重要補充
1.framework文件
一般來說,在用apktool反編譯前不需要做其他任何事情,然而有些廠商,如小米,htc,三星等,定制了framework文件並且他們在系統應用中使用了這些文件,因此,為了能夠正常反編譯這些apk,則必須拷貝反編譯apk依賴framework文件。
如,我們嘗試編譯小米桌面的MiuiHome.apk,將會得到如下錯誤。
使用:apktool if/install-framework <framework.apk>
再次嘗試反編譯MiuiHome.apk
2.簽名問題
使用apktool b testapp –o out\testapp.apk,不出意外程序就會編譯成功,單編譯生成的testapp.apk並沒有簽名,還不能安裝測試。一般情況下,保持原始簽名不變,使用-c選項來保持。否則就要使用其他的簽名工具來對apk簽名了,如signapk.jar,auto-sign等。
META-INF包含apk的簽名,使用-c/--copy-original來保持簽名,使用原始的AndroidManifest.xml文件。但是如果修改AndroidManifest.xml文件,簽名也就丟失了。就要重新對其簽名。
參考文獻:
apktool官方網站:http://ibotpeaches.github.io/Apktool/
水滴效果的下拉刷新--第三方開源 開源--WaveSwipeRefreshLayout,swiperefreshlayout 下載地址:https://github.co
安卓四大組件之內容提供者,安卓四大提供者 內容提供者ContentProvider,是A
初識 Android,初識android 創建博客有一年的時間了,一直沒把它用起來,頗感慚愧。近日突感有寫博客的沖動,更可怕的是這種沖動似乎比我體內的洪荒之力更為凶猛。
Android自動連接指定的wifi,免密碼或指定密碼,androidwifi一、運行時的狀態 遇到一個這樣的要求:“不進行掃描操作,怎麼對指定的免密碼WIF