apk是什麽文件、androids文件中怎麽反(fǎn)編譯?
apk即androids安裝包(bāo),通過將APK文(wén)件直接(jiē)傳到androids模擬器或androids手機中執行即可安裝(zhuāng)。安卓androids的軟件(jiàn)安裝包以.apk為文件(jiàn)擴展名,其文件格式是標準的.zip文件,可以通過WinZIP、winrar等壓縮文件工具直接打(dǎ)開(kāi),或是在(zài).apk文(wén)件(jiàn)名上添加.zip後綴,即可查看(kàn)封裝在其中的(de)具(jù)體文件內容,包括(kuò)程序、圖片(piàn)、配置文件等。apk文件和sis一樣,把androids sdk編譯的(de)工程打包成一個安(ān)裝(zhuāng)程(chéng)序文件,格式為apk。 APK文件其實是(shì)zip格式,但後綴名被(bèi)修改(gǎi)為apk,通過UnZip解壓(yā)後,可以看到Dex文(wén)件,Dex是Dalvik VM executes的(de)全(quán)稱(chēng),即androids Dalvik執行程序,並非Java ME的字節碼而是(shì)Dalvik字節碼。androids在運行一個程序(xù)時首先(xiān)需要(yào)UnZip,然後類似Symbian那樣(yàng)直接,和Windows mobiles中(zhōng)的(de)PE文件有區別(bié)。
安裝安卓(zhuó)軟件INSTALL_FAILED_CPU_ABI_INCOMPATIBLE的(de)解(jiě)決方法
具體方法如下:
安(ān)裝(zhuāng)apk文件到模擬器或者手機上時報(bào):Installation error: INSTALL_FAILED_CPU_ABI_INCOMPATIBLE這個錯誤,Google下(xià)說是(shì)由於引用(yòng)了其他非androids的sdk編譯環境編譯的二進(jìn)製代碼導致(zhì)的,然後就把(bǎ)引用的jar換成androids環境編譯導出,但是還是報錯,最後發現是因為(wéi)引(yǐn)用的jar文件裏的lib目錄裏還引用(yòng)其他jar導致,把lib裏的jar拿出來放到項目的buildpath裏(lǐ)即可解決,不要(yào)引用(yòng)的(de)jar裏再(zài)嵌(qiàn)套(tào)引用jar那樣就會有報錯。
如果因為引(yǐn)用(yòng)的jar文件裏的lib目錄裏還引用其他jar導(dǎo)致,把lib裏的jar拿出來(lái)放到項目(mù)的buildpath裏(lǐ)即可解決(jué),不要引用的(de)jar裏再嵌套引用(yòng)jar那樣(yàng)就會有(yǒu)報(bào)錯。
androids反編譯
一、Apk反(fǎn)編譯得到Java源代碼
下(xià)載上(shàng)述反編譯工具包,打開apk2java目錄(lù)下的dex2jar-0.0.9.9文件夾,內含apk反編譯成java源碼(mǎ)工具,以及源碼查看工具。
apk反編譯工具dex2jar,是將apk中的classes.dex轉化成(chéng)jar文件
源碼查看工具jdgui,是一個(gè)反(fǎn)編(biān)譯工具,可以(yǐ)直(zhí)接查看反編(biān)譯後的jar包源代碼。
具體步驟:
首先將apk文件後綴改為zip並解壓(yā),得(dé)到其中的classes.dex,它(tā)就是java文(wén)件編(biān)譯再通(tōng)過dx工具打(dǎ)包而(ér)成的,將classes.dex複製到dex2jar.bat所在目錄dex2jar-0.0.9.9文(wén)件(jiàn)夾(jiá)。
在命令(lìng)行下定位到dex2jar.bat所在目錄(lù),運行
dex2jar.bat classes.dex
生成
classes_dex2jar.jar
然後,進入jdgui文件(jiàn)夾雙擊jd-gui.exe,打開(kāi)上麵生成的jar包classes_dex2jar.jar,即可看到源代碼了,如下圖:
Helloandroids源碼在(zài)反編譯前後(hòu)的對照如(rú)下:
二、apk反編譯生成(chéng)程序的源代碼和圖片、XML配置、語言(yán)資源(yuán)等(děng)文件
如(rú)果是漢化軟(ruǎn)件,這將特別(bié)有用
首先還是要下載上述反編(biān)譯工(gōng)具包,其中最新的apktool,請(qǐng)到google code下載
apktool(google code)
具體步驟:
下(xià)載上述反(fǎn)編(biān)譯工(gōng)具包,打開apk2java目錄下的(de)apktool1.4.1文件夾,內含三個文件:aapt.exe,apktool.bat,apktool.jar
注:裏麵的apktool_bk.jar是(shì)備(bèi)份的老版本,最好用最新的apktool.jar
在命令行下定(dìng)位(wèi)到apktool.bat文件夾,輸入以下命(mìng)令:apktool.bat d -f abc123.apk abc123,如下圖:
上(shàng)圖中,apktool.bat 命(mìng)令行解(jiě)釋:apktool.bat d -f [apk文件 ] [輸出文(wén)件夾]
反編譯的(de)文(wén)件(jiàn)如下(androidsManifest.xml為例):
將反編譯完的文件(jiàn)重新打(dǎ)包成(chéng)apk,很簡單,輸入(rù)apktool.bat b abc123(你編譯出來文件(jiàn)夾)即可,命令如下:
打包apk後的文(wén)件在目錄C:\Helloandroids下,生成了兩個文件夾:
build
dist
其中(zhōng),打包生成的Helloandroids.apk,在上麵的(de)dist文件夾下,Ok
三、 圖形化反編譯apk
上(shàng)述步驟一、二講述了命令行反編譯(yì)apk,現在提(tí)供一種圖(tú)形化反編譯工具(jù):androidsfby
首先,下載上述反編譯工具(jù)包,打開androidsfby目(mù)錄,雙(shuāng)擊(jī)androids反編譯工具.exe,就可以(yǐ)瀏覽打開要反(fǎn)編譯的apk
關(guān)鍵詞:apk
閱讀本(běn)文後(hòu)您有(yǒu)什麽感想(xiǎng)? 已有 人(rén)給出評價!
- 1
- 1
- 1
- 1
- 1
- 1