一、工具準(zhǔn)備:apktool , dex2jar , jd-gui
二、使用dex2jar + jd-gui 得到apk的java源碼
1.用解壓工具從 apk包中取出 classes.dex 文件
用命令(dex2jar.bat classes.dex)得到一個(gè) jar文件
2.用jd-gui反編譯工具將得到.jar文件反編譯成.java文件
三、使用apktool得到apk的xml文件
1.用命令(apktool d xxx.apk xxx_xml)反編譯xxx.apk包
2.從 xxx_xml 文件夾得到xml文件
四、第二步 得到的程序源代碼 和 第三步 得到的xml文件組合下,即可得到完整的apk源碼。
五、應(yīng)用: 漢化/去廣告,加 values-zh-rCN, values-zh-rTW, values-de, values-fr
1.在步驟三的文件夾xxx_xml/res/ 下, 建文件夾: values-zh-rCN,values-zh-rTW
2.1復(fù)制values\strings.xml 到 values-zh-rCN 并翻譯.
2.2 去廣告見(jiàn);
3.重建APK,用命令(apktool b xxx) ,輸出到ABC/dist/out.apk
或命令( apktool b xxx out.apk)
六、重新打包 和 簽名
======================================================1) 漢化apk應(yīng)用程序
漢化apk就是 把 反編譯之后apk 下的res/values文件夾內(nèi)string.xml文件的內(nèi)容 漢化(注意:我們的例子里 只有一個(gè)string.xml,有時(shí)候 可能 不止 一個(gè) *xml 文件,那么 我們 需要把 相應(yīng)的 位置 都漢化)。
一個(gè)apk應(yīng)用在漢化后應(yīng)該能在英文和中文系統(tǒng)下都能使用。/values目錄下的是英文語(yǔ)言包。為了建一個(gè)中文語(yǔ)言包,與/values并行創(chuàng)建一個(gè)子文件夾:/values-zh-rCN(必須用這個(gè)文件名?。_@里values-zh是中國(guó)地區(qū)語(yǔ)言包(包含港澳臺(tái)及內(nèi)陸),values-zh-rCN是中文簡(jiǎn)體語(yǔ)言包(只包含內(nèi)陸),values-zh-rTW是中文繁體語(yǔ)言包(港澳臺(tái))。
把/values文件夾里的strings.xml等語(yǔ)言文件復(fù)制進(jìn)/values-zh-rCN。在我們的例子中,只有strings.xml一個(gè)文件。
進(jìn)入/values-zh-rCN,用文本編輯器打開strings.xml,然后你就翻譯吧,把英文描述譯成相應(yīng)的中文。
高級(jí)內(nèi)容:以上的漢化是修改string.xml,把英文譯成相應(yīng)的中文就好了,然后打包和簽名。但是,在有些apk文件里,所顯示的字符文字并不都在xml文件里。apk原作者把某些字符寫在代碼中。反編譯后,存放在/smali文件夾里。一層一層地找下去,最后你會(huì)看到一大堆Dalvik碼文件,都是以.smali為文件擴(kuò)展名。舉一個(gè)例子,用文本編輯器打開某個(gè).smali文件,看到:
const-string v5, 'ServiceMode'
“ServiceMode”會(huì)在apk執(zhí)行時(shí)顯示為英文。因此,需要漢化。在I897 ROM里,用工程模式特殊代碼看到的多半屬于這一類。漢譯起來(lái)非常花時(shí)間。我們要把ServiceMode譯成“服務(wù)模式”。怎么處理呢?你不能把const-string v5, 'ServiceMode'直接改成const-string v5, '服務(wù)模式'。打包會(huì)失敗的。正確的做法是把相應(yīng)的中文字符用16進(jìn)制的unicode來(lái)表示。例如:把“服務(wù)模式”用16進(jìn)制的unicode表示就是\u670d\u52a1\u6a21\u5f0f 。每一個(gè)漢字用4個(gè)字符表示,\u表示為16進(jìn)制的unicode碼。好了,正確的漢譯是:
const-string v5, '\u670d\u52a1\u6a21\u5f0f '
網(wǎng)上有中文字符與16進(jìn)制unicode碼的對(duì)照表或轉(zhuǎn)換工具。
2) 修改圖標(biāo)標(biāo)簽
每一個(gè)apk文件都有一個(gè)“圖標(biāo)標(biāo)簽”。將apk程序安裝進(jìn)手機(jī)后,在圖標(biāo)下面顯示圖標(biāo)標(biāo)簽文字。這個(gè)圖標(biāo)標(biāo)簽的內(nèi)容是可以修改的。在\res\values下找到strings.xml,修改其中的一行:
例如:
同理,如果是窗口小插件,要修改widget_name。
3) 去掉apk中的廣告
有很多apk應(yīng)用都帶有廣告。為了去掉程序中的廣告,要修改main.xml文件與廣告有關(guān)的內(nèi)容。在/res目錄下找到文件main.xml。通常在/layout目錄下,有時(shí)也被放在其它目錄下。甚至,有時(shí)不存在main.xml文件,廣告行被放在其它xml文件內(nèi)。只能細(xì)心逐個(gè)文件進(jìn)行查找。無(wú)論哪一種情況,查看其內(nèi)容,你會(huì)看到有一項(xiàng)類似的命令如下。這就是廣告顯示。
將其改為:
可以看到,關(guān)鍵是要把fill_parent改為0.0dip,把wrap_content改為0.0dip,其它內(nèi)容保持不變即可。這種改法就是不給廣告顯示空間,當(dāng)然你就看不到廣告了。
聯(lián)系客服