APK(全稱:Android application package,Android應(yīng)用程序包)是Android操作系統(tǒng)使用的一種應(yīng)用程序包文件格式,用于分發(fā)和安裝移動應(yīng)用及中間件。
一個Android應(yīng)用程序的代碼想要在Android設(shè)備上運(yùn)行,必須先進(jìn)行編譯,然后被打包成為一個被Android系統(tǒng)所能識別的文件才可以被運(yùn)行,而這種能被Android系統(tǒng)識別并運(yùn)行的文件格式便是“APK”。 一個APK文件內(nèi)包含被編譯的代碼文件(.dex 文件),文件資源(resources), 原生資源文件(assets),證書(certificates),和清單文件(manifest file)APK 文件基于 ZIP 文件格式,它與JAR文件的構(gòu)造方式相似,互聯(lián)網(wǎng)媒體類型是:application/vnd.android.package-archive。APK是Android application package的縮寫,即Android安裝包(apk)。APK是類似SymbianSis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機(jī)中執(zhí)行即可安裝。apk文件和sis一樣,把a(bǔ)ndroidsdk編譯的工程打包成一個安裝程序文件,格式為apk。 APK文件其實是zip格式,但后綴名被修改為apk,通過UnZip解壓后,可以看到Dex文件,Dex是DalvikVM executes的簡稱,即Android Dalvik執(zhí)行程序,并非Java ME的字節(jié)碼而是Dalvik字節(jié)碼。Android在運(yùn)行一個程序時首先需要UnZip,然后類似Symbian那樣直接,但不同于Windows mobile中的PE文件,程序的保密性和可靠性不是很高,通過dexdump命令可以反編譯它,但這種架構(gòu)符合發(fā)展規(guī)律,微軟的WindowsGadgets(WPF)也采用了這種架構(gòu)方式。在Android平臺中,dalvikvm的執(zhí)行文件被打包為apk格式,最終運(yùn)行時加載器會先解壓,然后獲取編譯后的androidmanifest.xml文件中的permission聲明對安全訪問的限制,要知道仍然存在很多安全限制,但將apk文件傳到/system/app文件夾下會發(fā)現(xiàn)執(zhí)行是不受限制的。也許我們平時安裝都不會選用這個文件夾,但在androidrom中,系統(tǒng)的apk文件默認(rèn)會放入這個文件夾,它們擁有root權(quán)限。