APK文件結(jié)構(gòu)
使用Android Studio打開(kāi)apk(當(dāng)然也可以以zip文件方式打開(kāi)),可以看到apk大致有如下文件組成(如下圖)
有些文件和文件夾是一個(gè) Android 應(yīng)用都具備的(下面表格中列出的)。而其他的一些文件和文件夾則是一些第三方庫(kù)喝峦,或者是其他一些代碼生成的
接下來(lái)捂齐,大概介紹一下主要文件的作用:
classes.dex:Java Class,被DEX編譯后可供Dalvik/ART虛擬機(jī)所理解的文件格式
lib:該目錄存放著應(yīng)用需要的 native 庫(kù)文件(so文件)家淤,而該文件夾下有時(shí)會(huì)多一個(gè)層級(jí),這是根據(jù)不同CPU 型號(hào)而劃分的,如 ARM潮瓶,ARM-v7a,x86等
res:存放編譯后的資源文件钙姊,例如:anim毯辅、drawable、layout煞额、dimens思恐、colors、string等等
resources.arsc:資源配置文件(編譯后的二進(jìn)制文件)立镶,用來(lái)記錄資源文件和資源ID之間的映射關(guān)系壁袄,用來(lái)根據(jù)資源ID尋找資源
META-INF:保存應(yīng)用的簽名信息,簽名信息可以驗(yàn)證APK文件的完整性媚媒,包含xxx.RSA嗜逻,xxx.SF和MANIFEST.MF
assets:assets 文件夾用于保存需要保持原始文件的資源文件夾
AndroidManifest.xml:Android的清單文件,就是我們代碼中的AndroidManifest.xml文件缭召, 描述應(yīng)用程序的名稱(chēng)栈顷、版本、所需權(quán)限嵌巷、注冊(cè)的四大組件
APK構(gòu)建流程
流程圖
(圖片來(lái)自Build Workflow)
命令行構(gòu)建
./gradlew <task>(on Unix-like platforms such as Linux and Mac OS X)gradlew.sh
gradlew <task>(on Windows using the gradlew.bat batch file)gradlew.bat
zipalign
https://developer.android.com/studio/command-line/zipalign.html
Data structure alignment(DSA)
數(shù)據(jù)結(jié)構(gòu)對(duì)齊標(biāo)準(zhǔn)
https://en.wikipedia.org/wiki/Data_structure_alignment
配置構(gòu)建:
https://developer.android.com/studio/build/index.html
從命令行構(gòu)建您的應(yīng)用:
https://developer.android.com/studio/build/building-cmdline.html