學一個工具需要兩種操作(此方法也適用於學習一門新的語言):
- 點點點,點點點,點點點,點完之後知道怎麼用了,爲你爲什麼這麼用,這是幹嘛的,一臉懵逼。這時候的你,知道回去惡補知識點了;
- 好好學習天天向上,基礎打牢溫故而知新,點一下,安裝完成~
目錄
AndroidManifest.xml(注:程序全局配置文件)
resources.arsc(注:編譯後的二進制資源文件)。
.apk文件
什麼是apk文件
apk?安卓的安裝包。
APK是AndroidPackage的縮寫,通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。
apk文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,格式爲apk。 APK文件其實是zip格式,但後綴名被修改爲apk,通過UnZip解壓後,可以看到Dex文件,Dex是DalvikVM executes的簡稱,即Android Dalvik執行程序,並非Java ME的字節碼而是Dalvik字節碼。Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接,和Windows Mobile中的PE文件有區別。
你可以隨便找個apk,將apk後綴改成 zip,既可打開查看裏面的內容(並非 用其他(改之理)的程序反編譯。)
目錄結構
META-INF\(注:Jar文件中常可以看到)
META-INF目錄下存放的是簽名信息,用來保證apk包的完整性和系統的安全。在eclipse編譯生成一個apk包時,會對所有要打包的文件做一個校驗計算,並把計算結果放在META-INF目錄下。同樣在Android平臺安裝apk時,應用管理器會對按照同樣的算法對包裏的文件做校驗,如果校驗結果與META-INF下的內容不一致,系統就不會安裝這個apk。這就保證了apk包裏的文件不能被隨意替換。
res\(注:存放資源文件的目錄)
res目錄存放資源文件。
AndroidManifest.xml(注:程序全局配置文件)
AndroidManifest.xml文件是每一個應用必須定義和包含的,它描述了應用的名字、版本、權限、引用的庫文件等信息。
通過 解壓之後直接打開,你可以看到 編碼類型,編碼環境,以及亂碼。其實就是 編譯之後的結果。
classes.dex(注:Dalvik字節碼);
classes.dex是java源碼編譯生成的java字節碼文件。
dex文件是應用安裝時生成的虛擬機可執行二進制文件,如果應用還存在,刪除了下次手機開機時還會再次生成,卸載軟件時會同時刪除dex文件。所以沒有必要手動刪除dex文件。
resources.arsc(注:編譯後的二進制資源文件)。
resource.arsc是編譯後的二進制資源文件。
下一篇,將介紹 Apktool的具體使用。
參考文獻:
百度百科 apk:https://baike.baidu.com/item/apk/10415494?fr=aladdin
Apktool(2)——使用前必須知道的apk知識:https://www.cnblogs.com/mliangchen/p/5084894.html