APK 本地化
一個APK反編譯利器Apktool(android漢化) 2010-07-19 18:52
轉(zhuǎn)載自:http://blog.sina.com.cn/s/blog_5752764e0100kv34.html APK 本地化[http://www.andmoto.com/viewthread.php?tid=3873] 說起APK的漢化,目前大部分教程都是讓用Hex Workshop或者Android ResEdit來做。但是實際操作后,就會發(fā)現(xiàn):1、Hex Workshop操作繁瑣,經(jīng)常出現(xiàn)搜不到想要修改的字符的情況; 2、Android ResEdit簡單用用可以,修改稍微復(fù)雜一點就會出現(xiàn)整條整條丟字符串的情況;并且新內(nèi)容不能比原內(nèi)容長——誰能保證我的本地化語言就一定比原來的短 呢? 現(xiàn)在好了,老外寫的《android-apktool》軟件,可以幫助我們把APK反編譯,生成程序的源代碼和圖片、XML配置、語言資源等文件。我們對 圖片和語言資源等文件修改后,可以再把它們編譯打包成APK,簽名后就是手機可以安裝的本地化/修正版APK了。 《android-apktool》軟件軟件可以訪問它的主頁http://code.google.com/p/android-apktool/下 載獲得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個包都要下。下載 后解開,為了方便使用,按作者的推薦把得到的4個文件復(fù)制到C:\Windows文件夾里。 這個工具是Java寫的,需要你的電腦安裝了JRE或者JDK,并在系統(tǒng)環(huán)境變量Path里加入java.exe所在路徑。 以上準備工作做好后,就可以用它來反編譯APK了。這里我用動態(tài)壁紙的APK來做示范。 如果用過動態(tài)壁紙,你也許會發(fā)現(xiàn)在設(shè)置壁紙時,界面的顯示有點問題:“動態(tài)壁紙”,在手機上中文顯示為“當(dāng)前壁紙”。這是“動態(tài)壁紙選擇 器”LiveWallpapersPicker.apk的翻譯錯誤造成的。 (假設(shè)LiveWallpapersPicker.apk放在C盤根目錄) 開始 > 運行,輸入cmd,回車。 這樣,LiveWallpapersPicker.apk就被反編譯了,輸出內(nèi)容在C:\LiveWallpapersPicker文件夾里。 打開C:\LiveWallpapersPicker文件夾,我們發(fā)現(xiàn)里面有一些XML文件和一些文件夾。絕大部分情況下,語言和圖片資源都在res文件 夾里,我們這個例子當(dāng)然不例外。 打開res文件夾,可以其中又是很多文件夾。(又是)絕大部分情況下,語言資源都放在values*文件夾里。比如說values放默認語言(英語居 多),values-de放德語,values-fr放法語等等。一般我們關(guān)心的是values-zh-rCN(簡體中文)和values-zh- rTW(繁體中文)。 打開values-zh-rCN文件夾,其中有個strings.xml。打開看看: <?xml version="1.0" encoding="UTF-8"?> <resources> <string name="application_name">動態(tài)壁紙選擇器</string> <string name="live_wallpaper_picker_title">當(dāng)前壁紙</string> <string name="live_wallpaper_preview_title">當(dāng)前壁紙預(yù)覽</string> <string name="configure_wallpaper">設(shè)置...</string> <string name="wallpaper_instructions">設(shè)置壁紙</string> <string name="live_wallpaper_empty">無當(dāng)前壁紙。</string> <string name="set_live_wallpaper">設(shè)置壁紙</string> <string name="wallpaper_title_and_author">%1$s提供者:%2$s</string> <string name="live_wallpaper_loading">正在載入當(dāng)前壁紙…</string> </resources> 很好,就是它了。把“當(dāng)前壁紙”都改為“動態(tài)壁紙”,再檢查和修正標點——中文內(nèi)容用中文標點(強烈呼吁大家注意標點問題,目前馬大哈太多了)后, 保存。 本例改這么多就夠了。其它復(fù)雜的APK建議把res文件夾里的內(nèi)容都檢查下,至少你關(guān)心的語言文件夾里的內(nèi)容都檢查下。 改完后,就可以重打包了。還是在cmd命令行里,輸入: 就可以了。生成的APK在C:\LiveWallpapersPicker\dist文件夾里,叫out.apk。 這個out.apk是沒有簽名的,所以不能直接裝到手機里。簽名工具和方法見http://www.hiapk.com/bbs/thread-21261-1-1.html, 這里不說了。 簽名后得到的APK,就是可以裝到手機里的了。 操練:去掉免費版軟件的廣告條 [http://bbs.ophone8.net/viewthread.php?tid=18082] 打開google code發(fā)現(xiàn)Apktool更新了,居然支持win了。。。。 那本文就是一篇介紹在windows環(huán)境下使用Apktool的筆記。 安裝 1.先裝JAVA環(huán)境,JDK/JRE都行,官網(wǎng)下載 裝過的就跳過吧 2.下載apktool.jar及相關(guān)文件,這里下apktool-1.0.0.tar.bz2 和apktool-install-windows-2.1_r01-1.zip 3.解壓apktool.jar到 C:\Windows 解壓apktool-install-windows.zip到任意文件夾(例如E盤根目錄) 4.Win+R 運行CMD,用cd命令轉(zhuǎn)到apktool-install-windows所在文件夾,輸入apktool看看。會列出一些幫助的話就成功了。 Apktool 命令 apktool d XXX.apk ABC 反編譯 XXX.apk到文件夾ABC apktool b ABC 從文件夾ABC重建APK,輸出到ABC\dist\out.apk 然后我們反編譯一枚軟件玩玩… AutoMemoryManager的免費版底部有一條廣告,去掉它吧。 把com.lim.android.automemman.apk放到同文件夾(我的就是E盤根目錄) Win+R 運行CMD E:<回車> E:\>apktool d com.lim.android.automemman.apk AMM <回車> I: Baksmaling… I: Decoding resource table… I: Decoding resources… I: Copying assets and libs… 現(xiàn)在文件被decode到E:\AMM了,打開E:\AMM\res\layout\main.xml看,所有都可見了吧~ 編輯第59行 <com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”fill_parent” android:layout_height=”wrap_content” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” /> 改為 <com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”0.0dip” android:layout_height=”0.0dip” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” /> 然后CMD輸入 E:\>apktool b AMM I: Checking whether sources has changed… I: Smaling… I: Checking whether resources has changed… I: Building resources… I: Building apk file… 用Auto-sign簽名E:\AMM\dist\out.apk 安裝 這樣廣告就不見了 再看,嘿嘿~很帥吧… 這其實就是改了AndroidManifest.xml里的ADmob廣告ID罷了 |
轉(zhuǎn)載于:https://www.cnblogs.com/moonvan/archive/2011/04/15/2017039.html
總結(jié)
- 上一篇: MULTISIM仿真2
- 下一篇: [导入]九个笑话能告诉你九个人生的道理