近期在研究rom過程中發現一個非常不錯的軟件,可以幫助我們把APK反編譯,生成程序的源代碼和圖片、XML配置、語言資源等文件。我們對圖片和語言資源等文件修改後,可以再把它們編譯打包成APK,簽名後就是手機可以安裝的本地化/修正版APK了。需要的朋友可以下載試用!
用法介紹(來自網絡並稍加修改):
這個工具是Java寫的,需要你的電腦安裝了JRE或者JDK,並在系統環境變量Path里加入java.exe所在路徑。
以上準備工作做好後,就可以用它來反編譯APK了。這裏我用動態壁紙的APK來做示範。
如果用過動態壁紙,你也許會發現在設置壁紙時,界面的顯示有點問題:“動態壁紙”,在手機上中文顯示爲“當前壁紙”。這是“動態壁紙選擇器”LiveWallpapersPicker.apk的翻譯錯誤造成的。
(假設LiveWallpapersPicker.apk放在C盤根目錄)
開始 > 運行,輸入cmd,回車。
(命令行解釋:apktool d 要反編譯的文件 輸出文件夾)
這樣,LiveWallpapersPicker.apk就被反編譯了,輸出內容在C:\LiveWallpapersPicker文件夾裏。
打開C:\LiveWallpapersPicker文件夾,我們發現裏面有一些XML文件和一些文件夾。絕大部分情況下,語言和圖片資源都在res文件夾裏,我們這個例子當然不例外。
打開res文件夾,可以其中又是很多文件夾。(又是)絕大部分情況下,語言資源都放在values*文件夾裏。比如說values放默認語言(英語居多),values-de放德語,values-fr放法語等等。一般我們關心的是values-zh-rCN(簡體中文)和values-zh-rTW(繁體中文)。
打開values-zh-rCN文件夾,其中有個strings.xml。打開看看:
<?xml version=”1.0″ encoding=”UTF-8″?>
<resources>
<string name=”application_name”>動態壁紙選擇器</string>
<string name=”live_wallpaper_picker_title”>當前壁紙</string>
<string name=”live_wallpaper_preview_title”>當前壁紙預覽</string>
<string name=”configure_wallpaper”>設置…</string>
<string name=”wallpaper_instructions”>設置壁紙</string>
<string name=”live_wallpaper_empty”>無當前壁紙。</string>
<string name=”set_live_wallpaper”>設置壁紙</string>
<string name=”wallpaper_title_and_author”>%1$s提供者:%2$s</string>
<string name=”live_wallpaper_loading”>正在載入當前壁紙…</string>
</resources>
很好,就是它了。把“當前壁紙”都改爲“動態壁紙”,再檢查和修正標點——中文內容用中文標點(強烈呼籲大家注意標點問題,目前馬大哈太多了)後,保存。
本例改這麼多就夠了。其它複雜的APK建議把res文件夾裏的內容都檢查下,至少你關心的語言文件夾裏的內容都檢查下。
改完後,就可以重打包了。還是在cmd命令行裏,輸入:
(命令行解釋:apktool b 要打包內容所在文件夾)
就可以了。生成的APK在C\:LiveWallpapersPicker\dist文件夾裏,叫out.apk。
這個out.apk是沒有簽名的,所以不能直接裝到手機裏。簽名工具和方法自己在網上找些相關文章。
簽名後得到的APK,就是可以裝到手機裏的了。