漢化資料到到是整理了不少,自己實踐了一下,感覺做一些(除特別的外)基本漢化其實不難,今天跟大家分享一下個人整理收集的資料,有興趣的朋友可以學習下。
APK文件簡介:
APK是Android Package的縮寫, 即Android application package文件 或Android安裝包。
每個要安裝 到Android平臺的應用都要被編譯打包為 一個單獨的文件,擴展名為 .apk。APK文 件是用專業(yè)軟件ecliPSe編譯生成的文件 包,其中包含了應用的二進制代碼、資 源、配置文件等。通過將APK文件直接傳 到Android手機中執(zhí)行即可安裝。
APK文 件其實就是zip格式,但其擴展名被改 為apk,在Windows下用解壓軟 件winrar/WinZIP/7-Zip可以直接打 開。解壓后,你會看到有幾個文件和文件夾。
一個典型的APK文件通常有下列內(nèi)容 組成:
AndroidManifest.xml 程序全局配置 文件
classes.dex Dalvik字節(jié)碼
resources.arsc 編譯后的二進制 資源文件
META-INF\ 該目錄下存放的是 簽名信息
res\ 該目錄存放資源文件
assets\ 該目錄可以存放一些 配置文件 下面對這些文件和目錄做些基本的注釋和 介紹:
AndroidManifest.xml 該文件是每個apk應用程序都必須包含的 文件,它描述了應用程序的名字、版本、 權限、引用的庫文件等等信息。
classes.dex文件 classes.dex是java源碼編譯后生成 的java字節(jié)碼文件。dex是Dalvik VM executes的全稱,即Android Dalvik執(zhí)行 程序。利用解析工具可以將其轉(zhuǎn)換 成java來加以閱讀和理解。
resources.arsc 編譯后的二進制資源文件。在做主題美 化時要常與這個文件打交道。
META-INF目錄 META-INF目錄下存放的是簽名信息, 有三個簽名文件,用來保證apk包的完整 性和系統(tǒng)的安全。
在eclipse編譯生成一 個apk包時,會對所有要打包的文件做一 個校驗計算,并把計算結(jié)果放在META-INF目錄下。這就保證了apk包里的文件 不能被隨意替換。比如拿到一個apk包 后,如果想要替換里面的一幅圖片,一段 代碼, 或一段版權信息,想直接解壓縮、 替換再重新打包,基本是不可能的。如此 一來就給病毒感染和惡意修改增加了難 度,有助于保護系統(tǒng)的安全。
res目錄 res目錄存放資源文件。包括圖片,字符 串等等。res下有若干個子目錄,主要 為drawable,layout,xml。 解包后,幾乎所有可能的修改和編輯工作 基本都在這里。漢化ROM的主要工作就在 這里。漢化ROM實際上就是漢化所有 的apk應用程序的字符文件。
assets目錄 assets目錄可以存放一些配置文件,這 些文件的內(nèi)容在程序運行過程中可以通過 相關的API獲得。
下面以“設置”應用程序Settings.apk為 例。用winrar打開文件后,看到以上介 紹的六項內(nèi)容,F(xiàn)在,即使你已經(jīng)對文件 解壓,你還是無法直接閱讀每個文件的內(nèi) 容。為了讀出這些文件的內(nèi)容,從而進行 進一步的修改和編輯,你就必須具有相應 的工具。
APK應用程序的解包和打包工具: 這一節(jié)主要介紹在Windows系統(tǒng)中常用 的幾個工具包,用來對apk應用程序進行 解包、打包、反編譯、解析 所有apk工具包都要求java
下面介紹一些收集的:
dex2jar和XJad 該方法不是直接對apk文件進行解包。它是首先提取apk文件內(nèi)的classes.dex文 件,然后使用dex2jar.jar工具包 將classes.dex解包成jar文件,再通 過XJad 或者其他class反編譯工具進 行java反編譯,最后生成java源文件。
但是,使用這個工具包無法進 行classes.dex的還原(當然也無法進行apk的打包)。盡管如此,這個工具包 仍然很重要,因為它把classes.dex文件轉(zhuǎn) 換成了可以更容易閱讀的java源文件。在 修改apk應用程序時,必不可少,是一極 強的輔助工具。相比之下,apktool和apk manager反編譯后得到的是Dalvik 反編譯 碼 (Dalvik opcodes),需要很專業(yè)的知 識來閱讀,很不直觀。如果你讀懂 了java源文件,那修改相對應的Dalvik碼 就容易多了…
google Smali 有兩個程 序:baksmali.jar和smali.jar。baksmali .jar用來反解析dex和odex文件,得 到Dalvik碼。然后用smali.jar還原 成dex文件。例如,在修改狀態(tài)欄時間顯示顏色時,要用到的。
AXMLPrinter2.jar對apk文件內(nèi)的 AndroidManifest.xml和main.xml進行操作,將XML還原成文本文件,便于閱讀。
Apkdb 是一個集 成apktool,smali,Dex2jar,簽名等功 能的工具。
這里講apk漢化,首先說說apk
1 .apk解包后
2.在apk之下有兩個文件夾 /res和/smali,還有兩個文 件AndroidManifest.xml和apktool.yml 。用文本編輯器打 開AndroidManifest.xml看看,是不是在第一部分里介紹的內(nèi)容。你要修改的內(nèi)容 在/res文件夾內(nèi)
3.打開/res文件夾,看到里面有5個子 夾,/drawable存放apk應用的圖標 (Icon),drawable-hdpi(drawable-mdpi)存放其它要用的圖形文件,(這些都可以美化替換,需要注意的是格式尺寸必須相同,否則會出錯…),/layout是apk的布局文件,/values里是字符文件。漢化apk就是漢化/alues文件夾 內(nèi)string.xml文件的內(nèi)容
APK字符漢化 (英小白,谷歌翻譯…)
用Notepad++打開string.xml
我們只需漢化
xxxxxxxxxx</string>
成中文就好了。其他地方還有慢慢找。
一般有兩種漢化方法: 1.正規(guī)漢化, 2 .強制漢化。
這里說的是解包后的apk
1.正規(guī)漢化
一個apk應用在漢化后應該能在英文和中 文系統(tǒng)下都能使用。/values目錄下的是英文語言包。為了建一個中文語言包,與/values并行創(chuàng)建一個子文件夾:/values-zh-rCN(必須用這個文件名!)。這里values-zh是中國地區(qū)語言包(包含港 澳臺及內(nèi)地),values-zh-rCN是中文簡體語言包(只包含內(nèi)地),values-zh-rTW是中文繁體語言包(港澳臺)。 把/values文件夾里的strings.xml等語言 文件復制進/values-zh-rCN。在一些軟件中,只有strings.xml一個文件。 進入/values-zh-rCN,用文本編輯器打開strings.xml,然后你就翻譯吧,把英文描述譯成相應的中文。
例如,我們可以把上面的string.xml文件 譯成: 靜音啟 動 開啟 靜音啟動 關機 也是靜音 關機 不是靜音\n如果沒有開啟靜音啟動,關機 時播放開機音樂。 里面有個操作符“\n”是換行符,迫使換行 顯示文本內(nèi)容。之后存盤,用“另存 為”(Save As)存成UTF-8格式。這是保 持中文文本的格式。 在做漢化工作時,要對string.xml文件進行修改。有時也需要修改其它xml文件, 一個一個地認真查看,一個一個地漢化。
2.強制漢化
所謂“強制漢化”就是不產(chǎn)生/values-zh-rCN文件夾。而是在/values文件夾內(nèi)把 需要漢化的文件都直接譯成中文。顯然, 如果在英文操作系統(tǒng)中沒有中文字庫的 話,強制漢化的apk在英文系統(tǒng)中可能顯 示亂碼。所以,建議養(yǎng)成良好習慣,采用“正規(guī)漢化”。
以上的漢化是修改string.xml,把英文譯成相應的中文就 好了,然后打包和簽名。但是,在有些apk文件里,所顯示的字符文字并不都在xml文件里。apk原作者把某些字符寫 在代碼中。反編譯后,存放在/smali文件夾里。一層一層地找下去,最后你會看到 一大堆Dalvik碼文件,都是以.smali為 文件擴展名。舉一個例子,用文本編輯器 打開某個.smali文件,看到: const-string v5, “ServiceMode” “ServiceMode”會在apk執(zhí)行時顯示為英 文。因此,需要漢化。在ROM里, 用工程模式特殊代碼看到的多半屬于這一 類。漢譯起來非;〞r間。我們要 把ServiceMode譯成“服務模式”。怎么處 理呢?你不能把const-string v5, “ServiceMode”直接改成const-string v5, “服務模式”。打包會失敗的。正確的 做法是把相應的中文字符用16進制的unicode來表示。例如:把“服務模 式”用16進制的unicode表示就 是\u670d\u52a1\u6a21\u5f0f 。每一個 漢字用4個字符表示,\u表示為16進制 的unicode碼。好了,正確的漢譯是: const-string v5, “\u670d\u52a1\u6a21\u5f0f ”
網(wǎng)上有中文字符與16進制unicode碼的對照表或轉(zhuǎn)換工具。
Apk打包和簽名打包操作很簡單。 重新回編成apk,軟件不同會有細微差別,回編后簽名就行,有些程序是不能用簽名的,所生成的新的apk應用程序、這就是漢化好的apk程序了。 現(xiàn)在你需要把文件改成你需要的名字。