使用Ant自动构建Android版本
来源:互联网 发布:ubuntu openjdk 路径 编辑:程序博客网 时间:2024/05/14 20:34
Ant是一个很好的跨平台构建工具,特别是对于Java项目,这里使用它对Android工程进行自动化构建可以得到非常大的便利。一般来说对Android工程进行构建主要有以下几个步骤:
- 使用aapt来编译工程生成R.java;
- 使用aapt来对工程所需用的资源进行打包;
- 转换并编译AIDL文件;
- 编译Java源文件并生成.class;
- 转换并压缩.class文件成.dex文件;
- 使用aapt打包生成未签名的apk包;
- 使用jarsigner对apk包签名并得到最终的发布包。
<replace file="${pathsettingfile}" token="Ant_PathID" value="${_PathID}"/><replace file="${pathsettingfile}" token="Ant_PathName" value="${_PathName}"/>其中的_PathID,_PathName均为在ant环境中定义的变量,其可以是直接从cmd传入或通过其它方式来赋值。这样在进行后续的编译时就可以直接得到该渠道下的版本。
此外,还可以将所有渠道的信息统一配置于一xml之中,在进行构建时直接从其中读入各个渠道的信息并赋值到如上的_PathID、_PathName中即可,可以用如下代码方便实现(其中涉及xmltask在ant中的使用,这个可以参考ant的相关资料):
<target name="main"> <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/> <echo>Starting....</echo> <xmltask source="Paths.xml"> <call path="/PathList/PathDetail[@enabled='true']" target="build"> <param name="_PathID" path="ID/text()"/> <param name="_PathName" path="Name/text()"/> </call> </xmltask> </target>对应的渠道配置xml则基本上如下所示(当然其中可以置入更多的信息)
<?xml version="1.0" encoding="UTF-8"?><PathList> <PathDetail name="" enabled="true"> <ID>11111</ID> <Name>Path_0</Name> </PathDetail> <PathDetail name="" enabled="true"> <ID>22222</ID> <Name>Path_1</Name> </PathDetail></PathList>此外,使用Ant的自动化构建还可以实现另外一个重要用途,对asset中的涉密文件进行保护。这里有一个简单的例子,比如asset中有一些文件对用户可视,但却不希望被用户修改,这种情况下就可以在构建中加入一个文件校验的阶段,首先将要保护的文件计算出对应的MD5签名,之后再将此签名写入到程序代码中并进行编译构建,在程序运行时使用此签名进行校验,如果该签名不匹配那就意味着被用户修改后进行了重新的打包,此时程序就可以有相应的操作,这样就可以在一定程序上防止用户对发布的Apk包进行重新pack并运行。
- 使用Ant自动构建Android版本
- 如何使用Ant自动构建Android版本
- 如何使用Ant自动构建Android版本
- 如何使用Ant自动构建Android版本
- 使用Ant构建Android工程
- 使用Ant构建Android应用
- 自动构建工具Ant的使用(一)
- 自动构建工具Ant的使用(二)
- 自动构建工具Ant的使用(三)
- 自动构建工具Ant的使用(四)
- 自动构建工具Ant的使用-笔记
- Android使用Ant自动打包
- Ant自动构建脚本!
- ant自动构建
- Flex Ant自动构建
- Flex Ant自动构建
- Flex Ant自动构建
- Ant自动构建JavaWeb
- android achartengine学习笔记
- 在Android开发中调用Rest web服务
- Java中的回调机制
- NVIDIA计划推出ARM架构高性能CPU
- Google工程师多图详解Android系统架构
- 使用Ant自动构建Android版本
- Glib交叉编译:g__cancellable_lock undeclared!&HEADER/C_IN undeclared!&undefined reference to "localeconv"
- ehcache缓存的详细配置
- Mediator模式
- 三款工作流引擎比较:WWF、netBPM 和 ccflow
- 在Android上实现Junit单元测试的四部曲
- 王爽《汇编语言》第9章 实验8 分析一个奇怪的程序
- 周鸿祎谈产品:像怀胎一样怀产品,要厚着脸皮听批评
- 有效控制Android应用程序的耗电量