APK文件簡介: 

APK是Android Package的縮寫,即Android application package文件或

Android安裝包。

每個要安裝到Android平台的應用都要被編譯打包為一個單獨的文件,擴展名

為.apk。APK文件是用專業軟件eclipse編譯生成的文件包,其中包含了應用的二進

制代碼、資源、配置文件等。通過將APK文件直接傳到Android手機中執行即可安

裝。

APK文件其實就是zip格式,但其擴展名被改為apk,在Windows下用解壓軟件

WinRAR/WinZIP/7-Zip可以直接打開。解壓後,你會看到有幾個文件和文 ​​件夾。

一個典型的APK文件通常有下列內容組成:   

AndroidManifest.xml 程序全局配置文件  

classes.dex的Dalvik字節碼

resources.arsc 編譯後的二進制資源文件

META-INF\ 該目錄下存放的是簽名信息

res\ 該目錄存放資源文件

assets\ 該目錄可以存放一些配置文件下面對這些文件和目錄做些基本的註釋和介

紹:

AndroidManifest.xml 該文件是每個apk應用程序都必須包含的文件,它描述了應

用程序的名字、版本、 權限、引用的庫文件等等信息。

classes.dex文件classes.dex是java源碼編譯後生成的java字節碼文件。dex是

Dalvik VM executes的全稱,即Android Dalvik執行程序。利用解析工具可以將

其轉換成java來加以閱讀和理解。

resources.arsc 編譯後的二進制資源文件。在做主題美化時要常與這個文件打交

道。

META-INF目錄META-INF目錄下存放的是簽名信息, 有三個簽名文件,用來保證

apk包的完整性和系統的安全。

在eclipse編譯生成一個apk包時,會對所有要打包的文件做一個校驗計算,並把計

算結果放在META-INF目錄下。這就保證了apk包裡的文件不能被隨意替換。比如拿

到一個apk包後,如果想要替換裡面的一幅圖片,一段代碼, 或一段版權信息,想

直接解壓縮、 替換再重新打包,基本是不可能的。如此一來就給病毒感染和惡意修

改增加了難度,有助於保護系統的安全。

res目錄res目錄存放資源文件。包括圖片,字符串等等。res下有若干個子目錄,主

要為drawable,layout,xml。解包後,幾乎所有可能的修改和編輯工作基本都在

這裡。中文化ROM的主要工作就在這裡。中文化ROM實際上就是中文化所有的apk

應用程序的字符文件。

assets目錄assets目錄可以存放一些配置文件,這些文件的內容在程序運行過程中

可以通過相關的API獲得。

下面以“設置”應用程序Settings.apk為例。用WinRAR打開文件後,看到以上介紹

的六項內容。現在,即使你已經對文件解壓,你還是無法直接閱讀每個文件的內

容。為了讀出這些文件的內容,從而進行進一步的修改和編輯,你就必須具有相應

的工具。

APK應用程序的解包和打包工具:這一節主要介紹在Windows系統中常用的幾個工

具包,用來對apk應用程序進行解包、打包、反編譯、解析所有apk工具包都要求

java

下面介紹一些收集的:

        dex2jar和XJad該方法不是直接對apk文件進行解包。它是首先提取apk文件

內的classes.dex文件,然後使用dex2jar.jar工具包將classes.dex解包成jar文

件,再通過XJad或者其他class反編譯工具進行java反編譯,最後生成java源文

件。
        但是,使用這個工具包無法進行classes.dex的還原(當然也無法進行apk的

打包)。儘管如此,這個工具包仍然很重要,因為它把classes.dex文件轉換成了可

以更容易閱讀的java源文件。在修改apk應用程序時,必不可少,是一極強的輔助

工具。相比之下,apktool和apk manager反編譯後得到的是Dalvik反編譯碼

(Dalvik opcodes),需要很專業的知識來閱讀,很不直觀。如果你讀懂了java源

文件,那修改相對應的Dalvik碼就容易多了… 

      google Smali有兩個程序:baksmali.jar和smali.jar。baksmali .jar用來

反解析dex和odex文件,得到Dalvik碼。然後用smali.jar還原成dex文件。例如,

在修改狀態欄時間顯示顏色時,要用到的。

      AXMLPrinter2.jar對apk文件內的AndroidManifest.xml和main.xml進行操

作,將XML還原成文本文件,便於閱讀。

      Apkdb是一個集成apktool,smali,Dex2jar,簽名等功能的工具。

這裡講apk中文化,首先說說apk

1 .apk解包後

2.在apk之下有兩個文件夾/res和/smali,還有兩個文件AndroidManifest.xml和

apktool.yml 。用文本編輯器打開AndroidManifest.xml看看,是不是在第一部分

裡介紹的內容。你要修改的內容在/res文件夾內

3.打開/res文件夾,看到裡面有5個子夾,/drawable存放apk應用的圖標

(Icon),drawable-hdpi(drawable-mdpi)存放其它要用的圖形文件,(這些

都可以美化替換,需要注意的是格式尺寸必須相同,否則會出錯…),/layout是

apk的佈局文件,/values ​​裡是字符文件。中文化apk就是中文化/alues ​​文件夾內

string.xml文件的內容

APK字符中文化(英小白,谷歌翻譯…)

用記事本+ +打開string.xml

我們只需中文化

xxxxxxxxxx</string> 

成中文就好了。其他地方還有慢慢找。

一般有兩種中文化方法: 1.正規中文化, 2 .強制中文化。

這裡說的是解包後的apk

1.正規中文化

        一個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文件譯成: 靜音啟動開啟靜音啟動關機也是靜

音關機不是靜音\n如果沒有開啟靜音啟動,關機時播放開機音樂。裡面有個操作

符“\n”是換行符,迫使換行顯示文本內容。之後存盤,用“另存為”(Save As)存

成UTF-8格式。這是保持中文文本的格式。在做中文化工作時,要對string.xml文

件進行修改。有時也需要修改其它xml文件, 一個一個地認真查看,一個一個地中

文化。

2.強制中文化  

        所謂“強制中文化”就是不產生/values​​-zh-rCN文件夾。而是在/values​​文件

夾內把需要中文化的文件都直接譯成中文。顯然, 如果在英文操作系統中沒有中文

字庫的話,強制中文化的apk在英文系統中可能顯示亂碼。所以,建議養成良好習

慣,採用“正規中文化”。

        以上的中文化是修改string.xml,把英文譯成相應的中文就好了,然後打包

和簽名。但是,在有些apk文件裡,所顯示的字符文字並不都在xml文件裡。apk原

作者把某些字符寫在代碼中。反編譯後,存放在/smali文件夾裡。一層一層地找下

去,最後你會看到一大堆Dalvik碼文件,都是以.smali為文件擴展名。舉一個例

子,用文本編輯器打開某個.smali文件,看到: const-string v5, “ServiceMode” 

“ServiceMode”會在apk執行時顯示為英文。因此,需要中文化。在ROM裡,用工

程模式特殊代碼看到的多半屬於這一類。漢譯起來非常花時間。我們要把

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 ” 

        網上有中文字符與16進制unicode碼的對照表或轉換工具。

     Apk打包和簽名打包操作很簡單。重新回編成apk,軟件不同會有細微差別,回

編後簽名就行,有些程序是不能用簽名的,所生成的新的apk應用程序、這就是中文

化好的apk程序了。現在你需要把文件改成你需要的名字。

文章標籤
全站熱搜
創作者介紹

android99 發表在 痞客邦 留言(0) 人氣(56)