登录 立即注册
安币:

查看: 276|回复: 4

Android应用程序的编译流程及使用Ant编译项目的攻略

[复制链接]

440

主题

903

帖子

1916

安币

手工艺人

发表于 2018-1-11 15:53:10 | 显示全部楼层 |阅读模式

        android 工程构建的持续集成,需要搭建一套编译和打包自动化流程,比如建立每日构建系统、自动生成发布文件等等。这些都需要我们对android工程的编译和打包有一个比较深入的理解,例如知道它的每一步都做了什么,需要什么环境和工具,输入和输出是什么,等等。

        首先,假定你的系统(windows、linux、mac os都行,本文默认使用linux系统来举例子,但在 windows中几乎没有什么差别)已经安装了jdk和android sdk。
我们重点关心的是:
(1)这个过程的输入是什么?
(2)这个过程的输出是什么?
(3)这个过程使用了什么工具?
至于使用什么参数,可以自己去看对应命令的帮助文件,或者在网上搜索,这不是本文的重点。

        

        提前列出下列步骤中需要用到的工具,如下表:

        

        第一步:打包资源文件,生成r.java文件
【输入】resource文件(就是工程中res中的文件)、assets文件(相当于另外一种资源,这种资源android系统并不像对res中的文件那样优化它)、androidmanifest.xml文件(包名就是从这里读取的,因为生成r.java文件需要包名)、android基础类库(android.jar文件)
【输出】打包好的资源(一般在android工程的bin目录可以看到一个叫resources.ap_的文件就是它了)、r.java文件(在gen目录中,大家应该很熟悉了)
【工具】aapt工具,它的路径在${android_sdk_home}/platform-tools/aapt(如果你使用的是windows系统,按惯例路径应该这样写:%android_sdk_home%\platform-tools\aapt.exe,下同)。

        第二步:处理aidl文件,生成对应的.java文件(当然,有很多工程没有用到aidl,那这个过程就可以省了)
【输入】源码文件、aidl文件、framework.aidl文件
【输出】对应的.java文件
【工具】aidl工具

        第三步:编译java文件,生成对应的.class文件
【输入】源码文件(包括r.java和aidl生成的.java文件)、库文件(.jar文件)
【输出】.class文件
【工具】javac工具

        第四步:把.class文件转化成davik vm支持的.dex文件
【输入】 .class文件(包括aidl生成.class文件,r生成的.class文件,源文件生成的.class文件),库文件(.jar文件)
【输出】.dex文件
【工具】dex工具

        第五步:打包生成未签名的.apk文件
【输入】打包后的资源文件、打包后类文件(.dex文件)、libs文件(包括.so文件,当然很多工程都没有这样的文件,如果你不使用c/c++开发的话)
【输出】未签名的.apk文件
【工具】apkbuilder工具

        第六步:对未签名.apk文件进行签名
【输入】未签名的.apk文件
【输出】签名的.apk文件
【工具】jarsigner

        第七步:对签名后的.apk文件进行对齐处理(不进行对齐处理是不能发布到google market的)
【输入】签名后的.apk文件
【输出】对齐后的.apk文件
【工具】zipalign工具

        知道了上面这些细节后,就可以实现很多我们想实现东西了,比如:编译流程自动化,例如我们可以使用某种脚本,像windows下的批处理,linux下的bash,java下的ant,python、perl这样的脚本语言,甚至直接用java、.net这们的强类型语言也是可以的。
如果真正弄懂了上面的步骤,了解了编译打包过程的本质,你完全可以以你想要的任何方式实现它的自动化,这才是真正的“举一反三,以不变应万变”。再比如,对android sdk的精简,大家知道现在android sdk动辙几百兆,我们完全可以应用上面的知识,只保留必要的工具,把sdk精简到10m以下。当然,还可以做很多事情,前提是你真正弄懂了它。

        使用编译工具ant

        1, 下载
这是官方下载页:
http://ant.apache.org/srcdownload.cgi
下面我的示例环境为ubuntu系统。

        2, 安装
1) 解压

[Java] 查看源文件 复制代码
tar zxvf apache-ant-1.9.0-bin.tar.gz

        2) 配置环境

[Java] 查看源文件 复制代码
sudo vi /etc/profile
export ant_home=/home/homer/apache-maven/ant-1.9.0/
export path=$ant_home/bin:$path
sudo source /etc/profile

        3,验证

[Java] 查看源文件 复制代码
homer@ubuntu:~$ ant -v
apache ant(tm) version 1.9.0 compiled on march 5 2013
trying the default build file: build.xml
buildfile: build.xml does not exist!
build failed

        安装完毕!

        
4, 创建项目
1) 列出android平台列表

[Java] 查看源文件 复制代码
android list targets

        输出结果如下:

        

        2) android命令创建项目
命令格式:

        复制代码 代码如下:
android create project --target <target-id> --name myfirstapp --path <path-to-workspace> myfirstapp --activity mainactivity --package com.example.myfirstapp

        

        创建 anttest 为例,命令如下:

        复制代码 代码如下:
android create project --target android-3 --name anttest --path /home/homer/workspace/anttest --activity mainactivity --package com.homer.anttest

        

        创建项目如下:

        

        5, 编译项目
1) 进入项目目录

[Java] 查看源文件 复制代码
cd /home/homer/workspace/anttest

        2) 检查是否有build.xml 文件
build.xml 文件,在项目根目录下,用作ant的配置文件; 如果没有,则通过android update更新生成,命令如下:

        复制代码 代码如下:android update project --target android-3 --name anttest --path /home/homer/workspace/anttest


3) ant 命令编译项目
在项目 anttest 根目录下,输入编译命令:


[Java] 查看源文件 复制代码
ant debug

        输出命令信息如下:

        

        此时,bin目录下会生成 anttest-debug.apk 等文件,如下图:
ppppppppppppppppppppp5

        6, 安装验证
1) 列出avd

[Java] 查看源文件 复制代码
android list avd

        avd列表如下:

        

        2) 启动模拟器

[Java] 查看源文件 复制代码
android-sdk-linux/tools/emulator -avd avd-1.5

        3) 安装apk

[Java] 查看源文件 复制代码
adb install bin/anttest-debug.apk 


0

主题

9138

帖子

2903

安币

Android大神

Rank: 6Rank: 6

发表于 2018-1-13 02:52:03 | 显示全部楼层
每次我都积极回帖的,想要安币~

0

主题

1万

帖子

2419

安币

Android大神

Rank: 6Rank: 6

发表于 2018-1-14 04:51:28 | 显示全部楼层
不错不错,楼主辛苦了。。。

27

主题

9496

帖子

1888

安币

Android大神

Rank: 6Rank: 6

发表于 2018-1-14 21:49:05 | 显示全部楼层
感觉楼主很用心,辛苦啦~

0

主题

9064

帖子

2917

安币

Android大神

Rank: 6Rank: 6

发表于 2018-1-15 09:49:09 | 显示全部楼层
帮帮顶顶!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区

联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表