具体该怎样做呢?
整体来讲分为三大步:
1.准备环境,配置环境变量
2.更新工程,自动生成Ant编译配置文件
3.编晌滚逗译工程
android 程序打包成apk,如果在是命令行方式,一般都要经过如下步骤:1.用aapt命令生成R.java文件
2.用aidl命令生成相应java文件
3.用javac命令编译java源埋拿文件生成class文件
4.用dx.bat将class文件转换成classes.dex文件
5.用aapt命令生成资源包文件resources.ap_
6.用apkbuilder.bat打包资源和classes.dex文件,生成unsigned.apk
7.用jarsinger命令对apk认证,生成signed.apk
eclipase手动打包生成apk方式,只不过是eclipase代替执行了以上命令而已。
eclipse用起来虽然方便,为什么要使用Ant批量打包Android应用,对于个人来说主要有以下两方面考虑:
1、咱们在发布App的时候,可能需要发送到十几,甚至几十个不同的分发渠道,比如360手机市场,百度,应用宝等等,咱们可能需要对各个渠道的下载量,用户存留和用户使用情况等数据进行分析,比如使用百度移动统计,友盟统计等。为了实现统计功能,需要在配置文件中添加一个数据元,来标识咱们的应用要发布到哪一个渠道上,因此,若使用传统的方法,咱们每发布一个渠道的版本,就需要修改清单文件中的数据元,然后再使用keystore进行签名和打包。若只有一两个分发渠道,工作量还是可以接受的,但是若咱们的分发渠道打到几十个的时候,咱们如果再手动的进行修改然后签名打包发布,那工作量就很可观了。因此,为解决这种需求,咱们采用Ant来实现对Android应用的自动打包。
2、咱们做产品的时候,肯定需要经常打不同环境的包,比如开发环境,测试环境,生产环境,这个时候怎么办,氏李如果用传统方法,打开发环境包要把自己的弯核搭服务端IP和图片服务器IP改成开发的,打包,然后打测试的包,又要改成测试服务器IP和图片服务器IP,这样多麻烦,如果把这服务端IP和图片服务器IP,配置到一个xml文件里,用ant打包方式实现自动替换,多方便。
Ant是android的编译打包工具,一个很好的跨平台构建工具,特别是对于Java项目,这里使用它对Android工程进行自动化构建可以得到非常大的便利。一般来说对Android工程进行构。使用Ant搭建Android开发环境,建立android项目
配置Ant环境在windows上应该选择zip压缩包,将zip压缩包解压到一个目录。
打开系统环境变量,在系统变量栏点击新建,变量名输入“ANT_HOME”,变量值为Ant的根目录,如“D:\Android\apache-ant-1.9.0”,注意不要带双引号。
在系统变量中找到Path变量,点击编辑,在变量值的最后添加“%ANT_HOME%\bin”,注意不要带双引号,并且要使用“”和之前的变量值隔开。
打开一个cmd窗口,输入“ant”,如果显示一下信息,说明Ant的环境配置成功,如果显示:'ant'
不是内部或外部命令,也不是可运行的程序或批处理文件。则要检查陵亩伏一下路径是否有问题。
在Eclipse中配置Ant
在eclipse中使用Ant之前,为了使Ant的build.xml文件能够安装制定的格式进行缩进和高亮显示,并能够进行代码提示,首先要简单的设置一下。
打开Windows - Preferences,依次展开General,Editors,选中File Associations,点击Add...,在Add
File Type对话框中输入build.xml,点击Ok。
接下来在File type:栏选中build.xml,在Associated Editor:栏选中Ant
Editor,点击Default,build.xml的图标变成了一个小蚂蚁,配置完毕。
使用Ant编译Android的java代码和native代码
新建一个Android工程TestAnt,在工程的根目尺携录下新建一个build.xml文件
输入以下内容:
<?xml version="1.0" encoding="UTF-8"?><project name="TestAnt" default="init"> <target name="init"> <fail message="Ant 1.7.0 or higher is required."> <condition> <not> <antversion property="ant.version" atleast="1.7.0" /> </not> </condition> </fail> </target> </project>
打开cmd,切换到工程根目录,输入ant init
编译成功,来解析这个build.xml:
<project name="TestAnt" default="init">
project是Ant工程的根节点,name属性是工程的名称,default是默认执行的target,init为默认的target,当我们输入Ant的时候和Ant
init是一样的效果。
<target name="init"> <fail message="Ant 1.7.0 or higher is required."> <condition> <not> <antversion property="ant.version" atleast="1.7.0" /> </not> </condition> </fail>耐纯</target>
target指定了要执行的 *** 作,init是我们为这个target所起的名字,也可以是build,clean等等。在这个target中,执行的是检查Ant的版本,如个小于1.7.0的话会输出报错信息。
例如我们可以添加一个clean的target
<target name="clean"> <echo message="Deleting temporary files..." /> <delete dir="gen" /> <delete dir="bin" /> <delete dir="out" /> <delete dir="obj" /> <echo message="DONE (Deleting temporary files)" /> </target>
执行的 *** 作是删除所有临时目录,在cmd窗口中输入Ant clean,这四个临时目录就会被删除,和在eclipse中执行清理是一个效果。
使用Ant编译Android工程
在SDK中,Google已经为我们写好了一个build.xml文件,就是sdk根目录\tools\ant\build.xml,所以我们只要把这个build.xml引入就可以编译Android工程了。
在这之前首先要新建一个local.properties文件,引入sdk和ndk的路径
输入一下内容:
sdk.dir=D:\\Android\\android-sdk
ndk.dir=D:\\Android\\android-ndk
分别为sdk和ndk的路径,要安装自己的实际路径进行配置。
在测试工程的build.xml中输入一下代码:
<?xml version="1.0" encoding="UTF-8"?><project name="TestAnt" default="release"> <loadproperties srcFile="local.properties" /> <loadproperties srcFile="project.properties" /> <fail message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'" unless="sdk.dir" /> <fail message="ndk.dir is missing. Make sure to generate local.properties using 'android update project'" unless="ndk.dir" /> <import file="${sdk.dir}/tools/ant/build.xml" /></project>
在命令行中执行ant release或ant debug,就会执行对应的编译。
以上只是进行Java代码的编译,如何编译native代码呢,在NDK中Google可没有提够build.xml,这就需要我们自己实现。在新版NDK中,我们只要在命令行中切换到工程的根目录,然后执行
“D:\Android\android-ndk\ndk-build.cmd”(红色部分要替换成自己的路径)
就可以,例如,在TestAnt工程中添加native代码
执行ndk-build
所以我们只要在Ant中执行一个cmd命令就可以了,在build.xml中添加
<target name="native"> <echo message="Building native libraries..." /> <exec executable="${ndk.dir}/ndk-build.cmd" failonerror="true" /> <echo message="DONE (Building native libraries)" /> </target>
然后在命令行中执行ant native
执行了ndk-build。
以上介绍的都是使用Ant进行进步的Android编译 *** 作,在此基础上可以实现更复杂的 *** 作,比如批量替换资源文件,批量打包等等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)