前言
我们在开发Android应用的时候,可能很少研究整个Apk生成的过程,一般如AS或者Eclipse的开发工具,在运行的时候会自动帮我们将代码与资源文件打包并签名,生成相应的apk文件,不知道大家有没有好奇整个apk的编译、打包过程呢,下面通过这篇文章,一块来了解一下一个Android的工程文件是怎么从代码、资源文件变成最终的apk文件的。
命令行演示Android工程项目资源的编译打包流程
参考官方文档的流程图,下面我们通过命令行手动的模拟一下整个流程:
本篇文章的环境
首先我的操作系统是基于Windows系统,JDK版本最终使用的是1.6(以上会出现异常),sdk-tools版本是21。
相关工具地址
创建Android工程文件
进入tools文件夹:
cd D:\eclipse\sdk\tools
命令行:
[android.bat] --target [target_id] --name [project_name] --path [project_path] --package [package_name] --activity[activity_name]
这些参数代表的意思:
占位符 | 描述 | 本文示例 |
---|---|---|
target_id | sdk版本 | 每个人电脑上面根据安装的版本不同,id对应的版本也不同,我电脑上的的8,即API21 |
project_name | 工程名称 | resource2apk |
project_path | 工程路径 | D:\CSDN\ |
package_name | 包名 | com.csdn.lhy |
activity_name | 创建Activity的名称 | MainActivity |
D:\eclipse\sdk\tools\android.bat create project --target 8 --name source2apk --path D:\CSDN\ --package com.csdn.lhy --activity MainActivity
运行结果如下,可以看到在相应的目录下,已经创建了该工程,注意此时是没有gen目录的,也就是说此时还没有生成R文件。
生成R.java
接下来,我们通过命令行处理相应的资源文件,来生成R文件。
命令行:
[aapt.exe] -f -m -J [gen_folder_path] -S [res_path] -I [android.jar_path] -M [manifest_path]
占位符 | 描述 | 本文示例 |
---|---|---|
aapt.exe | aapt工具路径 | D:\eclipse\sdk\build-tools\build-tools-21.1.1\aapt.exe |
gen_folder_path | gen目录路径 | D:\CSDN\gen |
res_path | res资源 |