對手機應用程序的簡單實用性修改
一、工具準備:apktool , dex2jar , jd-gui
二、使用dex2jar + jd-gui 得到apk的java源碼 1.用解壓工具從 apk包中取出 classes.dex 文件 用命令(dex2jar.bat classes.dex)得到一個 jar文件2.用jd-gui反編譯工具將得到.jar文件反編譯成.java文件
三、使用apktool得到apk的xml文件 1.用命令(apktool d xxx.apk xxx_xml)反編譯xxx.apk包2.從 xxx_xml 文件夾得到xml文件四、第二步 得到的程序源代碼 和 第三步 得到的xml文件組合下,即可得到完整的apk源碼。
五、應用: 漢化/去廣告,加 values-zh-rCN, values-zh-rTW, values-de, values-fr
1.在步驟三的文件夾xxx_xml/res/ 下, 建文件夾: values-zh-rCN,values-zh-rTW
2.1複製valuesstrings.xml 到 values-zh-rCN 並翻譯.
2.2 去廣告見;
3.重建APK,用命令(apktool b xxx) ,輸出到ABC/dist/out.apk
或命令( apktool b xxx out.apk)
六、重新打包 和 簽名
1, 漢化apk應用程序
漢化apk就是 把 反編譯之後apk 下的res/values文件夾內string.xml文件的內容 漢化(注意:我們的例子里 只有一個string.xml,有時候 可能 不止 一個 *xml 文件,那麼 我們 需要把 相應的 位置 都漢化)。
一個apk應用在漢化後應該能在英文和中文系統下都能使用。/values目錄下的是英文語言包。為了建一個中文語言包,與/values並行創建一個子文件夾:/values-zh-rCN(必須用這個文件名!)。這裡values-zh是中國地區語言包(包含港澳台及內地),values-zh-rCN是中文簡體語言包(只包含內地),values-zh-rTW是中文繁體語言包(港澳台)。
把/values文件夾里的strings.xml等語言文件複製進/values-zh-rCN。在我們的例子中,只有strings.xml一個文件。進入/values-zh-rCN,用文本編輯器打開strings.xml,然後你就翻譯吧,把英文描述譯成相應的中文。高級內容:以上的漢化是修改string.xml,把英文譯成相應的中文就好了,然後打包和簽名。但是,在有些apk文件里,所顯示的字元文字並不都在xml文件里。apk原作者把某些字元寫在代碼中。反編譯後,存放在/smali文件夾里。一層一層地找下去,最後你會看到一大堆Dalvik碼文件,都是以.smali為文件擴展名。舉一個例子,用文本編輯器打開某個.smali文件,看到:
const-string v5, "ServiceMode"
「ServiceMode」會在apk執行時顯示為英文。因此,需要漢化。在I897 ROM里,用工程模式特殊代碼看到的多半屬於這一類。漢譯起來非常花時間。我們要把ServiceMode譯成「服務模式」。怎麼處理呢?你不能把const-string v5, "ServiceMode"直接改成const-string v5, "服務模式"。打包會失敗的。正確的做法是把相應的中文字元用16進位的unicode來表示。例如:把「服務模式」用16進位的unicode表示就是u670du52a1u6a21u5f0f 。每一個漢字用4個字元表示,u表示為16進位的unicode碼。好了,正確的漢譯是:const-string v5, "u670du52a1u6a21u5f0f "網上有中文字元與16進位unicode碼的對照表或轉換工具。2, 修改圖標標籤 每一個apk文件都有一個「圖標標籤」。將apk程序安裝進手機後,在圖標下面顯示圖標標籤文字。這個圖標標籤的內容是可以修改的。在
esvalues下找到strings.xml,修改其中的一行:
推薦閱讀: