APKTool是GOOGLE提供的APK編譯工具,需要JAVA運行環境。如果你想對APK文件進行修改,那麼就不可避免的要使用到APKTool。論壇裏有很多關於ROM美化的帖子都需要自己動手修改APK文件,比如修改framework-res.apk、systemUI.apk等等。
相信各位有不少人看了後都想親自來修改一番,但是結果卻是遇到了各式各樣的錯誤卻無法進行改正,甚至都不知道自己錯在哪裏。
安裝JAVA並設置環境變量。
下載安裝都很簡單,關鍵是安裝完後還需要親自設置環境變量以方便其他程序能夠條用JAVA。
以WIN7為例,在桌麵上右鍵點擊計算機——>屬性——>高級係統設置——>環境變量——>在下邊的係統變量裏新建一個變量,變量名為JAVA_HOME,值為JAVA的安裝路徑,比如我的是H:\ProgramFiles\Java\jdk1.6.0_26
1.其實這個談不上安裝,不過如果你願意的話可以把下載到的APKTOOL中的三個文件(aapt.exe、apktool.bat、apktool.jar)解壓縮到你的Windows安裝目錄下,以方便使用Dos命令.
2.可能有些人下載的APKTOOL裏有個安裝的bat文件,並且有另外兩個方便使用的bat文件,在這裏我不推薦大家使用這些bat文件,雖然使用起來很方便(其實我並不覺得方便),但是如果出現錯誤不方便查看。
1.decode
該命令用於進行反編譯apk文件,一般用法為
apktool d
如果你給定的
apktool d –f
這樣就會強行覆蓋已經存在的文件
2.build
該命令用於編譯修改好的文件,一般用法為
apktool b
這裏的
3.install-framework
該命令用於為APKTool安裝特定的framework-res.apk文件,以方便進行反編譯一些與ROM相互依賴的APK文件。具體情況請看常見問題
1.關於安裝和管理framework文件
以下大部分其實是翻譯自http://code.google.com/p/android-apktool/wiki/FrameworkFiles
一般來說,你在使用apktool進行反編譯前不需要做其他的事情,然而由於有的廠商,如HTC,三星等,他們定製了framework文件並且在他們的係統應用中使用了這些文件,這時,為了能正常的反編譯這些apk文件,你就必須從你的設備中拷貝出framework文件並且安裝到apktool中。
舉一個例子,比如你想反編譯HTCHero這款手機中的HtcContacts.apk,當你嚐試反編譯的時候,你會得到以下錯誤信息。
$ apktool d HtcContacts.apk
I: Loading resource table...
I: Decoding resources...
I: Loading resource table from file: /home/brutall/apktool/framework/1.apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x02020542
...
W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x02020520
Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info.
複製代碼
這就是在通知你必須先安裝HTC定製的framework文件,事實上在修改一些三星的係統應用時也是如此。
以三星的設備來舉例,你需要複製兩個framework文件來進行安裝,framework-res.apk和tzframework-res.apk,一般來說,這兩個文件在手機中的位置應該是system\framework\
使用以下代碼進行安裝
apktool if C:\framework-res.apk
apktool if C:\tzframework-res.apk
這裏假設2個文件都放在C盤根目錄
2.直接用build編譯後在dist中找到的apk文件無法使用
其實這個問題我也不是特別理解,目前知道的就是,APK文件雖然本質是個zip文件,但是事實上zip包中的文件是按照兩種方式壓縮的,即XML文件進行deflate壓縮,其他文件不進行壓縮(使用store存儲),而直接編譯得到的APK文件對任何的文件都進行了deflate壓縮,因此你會發現編譯得到的文件比原文件小好多。
同樣的,當你使用build文件夾中的文件替換原apk文件中的資源時,請務必確認是使用store存儲還是deflate壓縮
3.其他錯誤
其實在編譯過程中會遇到很多其他的問題,大多數是由於刪除、修改、添加了資源後,沒有對應的修改res\values\public.xml文件而造成的,這裏我給大家說下修改的原則:
第一,public.xml文件中的資源不能重複定義。
第二,public.xml文件中的任意兩個資源的ID不能一樣
第三,public.xml文件中定義的資源必須能找到該文件(如果你刪除了一些文件,必須要對應的刪除public.xml中的該行)
第四,public.xml文件中盡可能全麵(如果你添加了某資源,最好確保在public.xml中也添加)
第五,public.xml文件中的資源的ID盡可能連續(當你為添加的文件添加聲明時,賦予的ID盡可能是連續的)
76.4M / 03-25
立即下載55M / 06-05
立即下載237.9M / 04-13
立即下載140.5M / 03-06
立即下載900.9M / 03-02
立即下載96.2M / 07-06
立即下載311.2M / 07-06
立即下載335M / 07-06
立即下載200M / 07-06
立即下載413.8M / 07-06
立即下載353.9M / 06-05
立即下載131.8M / 04-13
立即下載230.8M / 03-03
立即下載195.6M / 03-03
立即下載165.4M / 03-03
立即下載45.6M / 09-08
立即下載665.2M / 07-06
立即下載2.84G / 07-06
立即下載93M / 07-06
立即下載338.3M / 07-06
立即下載1.38G / 07-26
立即下載488.3M / 07-16
立即下載109.8M / 06-03
立即下載142M / 01-08
立即下載1.2M / 11-23
立即下載548.8M / 04-13
立即下載1.6M / 04-13
立即下載1.48G / 03-18
立即下載646.6M / 03-03
立即下載133.7M / 03-03
立即下載325.8M / 06-07
立即下載60M / 04-29
立即下載254M / 04-25
立即下載659M / 04-23
立即下載1M / 12-26
立即下載253.4M / 12-08
立即下載253M / 12-08
立即下載1.19G / 11-16
立即下載110.5M / 04-23
立即下載26.7M / 03-16
立即下載488.3M / 07-16
立即下載248.9M / 12-08
立即下載248.9M / 12-08
立即下載201.2M / 04-13
立即下載100.6M / 03-06
立即下載148.9M / 03-06
立即下載1.12G / 07-06
立即下載1.25G / 07-06
立即下載9.48G / 07-06
立即下載50KB / 07-06
立即下載116.2M / 04-10
立即下載1.92G / 04-17
立即下載201.5M / 04-13
立即下載7.31G / 07-01
立即下載94.3M / 07-06
立即下載2.48G / 07-06
立即下載7.63G / 07-06
立即下載1M / 07-06
立即下載778.1M / 07-06
立即下載509.7M / 07-06
立即下載561.8M / 07-11
立即下載1.32G / 01-19
立即下載72M / 07-06
立即下載548.7M / 07-06
立即下載1.00G / 07-06
立即下載9.13G / 07-06
立即下載126.2M / 07-06
立即下載72M / 07-06
立即下載105.1M / 07-06
立即下載132M / 07-06
立即下載