前言
学习Android很长一段时间,一直都是使用开发工具生成APK文件,所有的Android打包过程基本上都是透明的,开发人员很难搞清楚底层的编译打包过程究竟是如何进行的。这里使用简单的只包含一个Activity和一个Service的手动打包来深入了解APK打包的每个过程。
aapt资源打包
打包最开始是处理资源和AndroidManifest文件,处理之后的各种资源会编译出一个R.java文件记录每个资源的id值,代码中就通过这些id数值来引用资源。资源处理的命令就是appt命令:
aapt package -f -M main/AndroidManifest.xml -I
"%ANDROID_HOME%/platforms/android-27/android.jar" -S main/res
-J build/gen/ -m -F build/resources.zip --custom-package com.example.firstapp -o 'apk'
其中package代表打包,-M表名当前AndroidManifest.xml文件的位置,-S代表所有资源文件夹根路径,-J代表R.java生成之后放到的位置,-F代表将生成的资源resources.arsc,编译过的资源文件夹res和AndroidManifest.