APK文件结构
使用Android Studio打开apk(当然也可以以zip文件方式打开),可以看到apk大致有如下文件组成(如下图)
有些文件和文件夹是一个 Android 应用都具备的(下面表格中列出的)。而其他的一些文件和文件夹则是一些第三方库,或者是其他一些代码生成的
接下来,大概介绍一下主要文件的作用:
classes.dex:Java Class,被DEX编译后可供Dalvik/ART虚拟机所理解的文件格式
lib:该目录存放着应用需要的 native 库文件(so文件),而该文件夹下有时会多一个层级,这是根据不同CPU 型号而划分的,如 ARM,ARM-v7a,x86等
res:存放编译后的资源文件,例如:anim、drawable、layout、dimens、colors、string等等
resources.arsc:资源配置文件(编译后的二进制文件),用来记录资源文件和资源ID之间的映射关系,用来根据资源ID寻找资源
META-INF:保存应用的签名信息,签名信息可以验证APK文件的完整性,包含xxx.RSA,xxx.SF和MANIFEST.MF
assets:assets 文件夹用于保存需要保持原始文件的资源文件夹
AndroidManifest.xml:Android的清单文件,就是我们代码中的AndroidManifest.xml文件, 描述应用程序的名称、版本、所需权限、注册的四大组件
APK构建流程
流程图
(图片来自Build Workflow)
命令行构建
./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)
数据结构对齐标准
https://en.wikipedia.org/wiki/Data_structure_alignment
配置构建:
https://developer.android.com/studio/build/index.html
从命令行构建您的应用:
https://developer.android.com/studio/build/building-cmdline.html