利用 ant 脚本修改项目包名
2015-01-05 15:10
204 查看
在开发android应用项目的时候,经常会有这样的需求,一个应用项目,要求在不同的OEM下有不同的包名,不同的资源,不同的功能点什么的。尽管可以利用eclipse adt自带的功能来做这件事,但是,当按照这样的需求来定制的越来越多的时候,手动去修改就开始变得力不从心起来。这个时候,一个良好的自动化脚本呼之欲出,你完全可以利用perl/python/Makefile来做,不过这里如果直接使用ant来做的话,似乎很多事情变得简单起来。毕竟,ant提供给我们良好的接口,而隐藏那些实现细节。
废话少说,先搭建一个这样的环境吧。
首先还是简述一下我的工作环境Windows 7
1. 下载安装jdk, 一定是jdk, 如果只安装jre的话,在运行ant时会报错,说找不到tools.jar这个文件。
安装完毕后在系统环境变量下设置JAVA_HOME=C:\Program Files\Java\jdk1.6.0_25(这个换成自己的安装路径)
2. 下载安装ant
其实就是解压到某目录下,解压完毕后在系统环境变量下设置ANT_HOME=D:\apache-ant-1.8.2(这个换成自己的安装路径)
并添加运行路径Path=%Path%;%ANT_HOME%\bin
3. 更新project
android.bat update project --path .
4. 使用ant
ant release (或者是debug)
5. 定制自己的脚本来完成修改项目包名等内容
准备config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- www.Ulrich-Scheller.de - use this script/project for whatever you want on your own risk -->
<project name="myproject" default="myproject" basedir=".">
<description> Build project for different partner </description>
<!--partner.dir, pkg.name, ver.code, ver.name are input from command line when execute 'ant' -->
<!-- set global properties for this build -->
<property name="build.bin" location="bin"/>
<property name="build.gen" location="gen"/>
<property name="src" location="src"/>
<property name="res" location="res"/>
<target name="preparefiles" description="Prepare files for different partner" >
<delete dir="${build.bin}" />
<delete dir="${build.gen}" />
<copy todir="${res}" overwrite="true" />
<fileset dir="${partner.dir}/res" />
</copy>
<!-- change the import in all Java source files -->
<replaceregexp file="AndroidManifest.xml"
match='android.versionCode="(.*)"'
replace='android.versionCode="${ver.code}"'
byline="false">
<replaceregexp file="AndroidManifest.xml"
match='android.versionName="(.*)"'
replace='android.versionName="${ver.name}"'
byline="false">
<replaceregexp file="AndroidManifest.xml"
match='package="(.*)"'
replace='package="${pkg.name}"'
byline="false">
<!-- change the package name in AndroidManifest -->
<replaceregexp flags="g" byline="false">
<regexp pattern="import(.*)com.myproject.com.R;" />
<substitution expression="import com.${pkg.name}.R;" />
<fileset dir="${src}" includes="**/*.java" />
</replaceregexp>
<replaceregexp flags="g" byline="false">
<regexp pattern="(package com.myproject.com;)" />
<substitution expression="\1 import com.${pkg.name}.R;" />
<fileset dir="${src}" includes="**/*.java" />
</replaceregexp>
</target>
</project>
运行定制脚本
$ ant -f config.xml -Dpartner.dir="xxx" -Dpkg.name="xxx" -Dver.code="xxx" -Dver.name="xxx" preparefiles
编译
$ ant debug
或者
$ ant release
具体的定制细节可以参考上面的脚本和如下链接里提到的内容
http://blogold.chinaunix.net/u/9577/showart_1828754.html
http://www.ulrich-scheller.de/?p=4
http://java.dzone.com/articles/building-two-versions-same
废话少说,先搭建一个这样的环境吧。
首先还是简述一下我的工作环境Windows 7
1. 下载安装jdk, 一定是jdk, 如果只安装jre的话,在运行ant时会报错,说找不到tools.jar这个文件。
安装完毕后在系统环境变量下设置JAVA_HOME=C:\Program Files\Java\jdk1.6.0_25(这个换成自己的安装路径)
2. 下载安装ant
其实就是解压到某目录下,解压完毕后在系统环境变量下设置ANT_HOME=D:\apache-ant-1.8.2(这个换成自己的安装路径)
并添加运行路径Path=%Path%;%ANT_HOME%\bin
3. 更新project
android.bat update project --path .
4. 使用ant
ant release (或者是debug)
5. 定制自己的脚本来完成修改项目包名等内容
准备config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- www.Ulrich-Scheller.de - use this script/project for whatever you want on your own risk -->
<project name="myproject" default="myproject" basedir=".">
<description> Build project for different partner </description>
<!--partner.dir, pkg.name, ver.code, ver.name are input from command line when execute 'ant' -->
<!-- set global properties for this build -->
<property name="build.bin" location="bin"/>
<property name="build.gen" location="gen"/>
<property name="src" location="src"/>
<property name="res" location="res"/>
<target name="preparefiles" description="Prepare files for different partner" >
<delete dir="${build.bin}" />
<delete dir="${build.gen}" />
<copy todir="${res}" overwrite="true" />
<fileset dir="${partner.dir}/res" />
</copy>
<!-- change the import in all Java source files -->
<replaceregexp file="AndroidManifest.xml"
match='android.versionCode="(.*)"'
replace='android.versionCode="${ver.code}"'
byline="false">
<replaceregexp file="AndroidManifest.xml"
match='android.versionName="(.*)"'
replace='android.versionName="${ver.name}"'
byline="false">
<replaceregexp file="AndroidManifest.xml"
match='package="(.*)"'
replace='package="${pkg.name}"'
byline="false">
<!-- change the package name in AndroidManifest -->
<replaceregexp flags="g" byline="false">
<regexp pattern="import(.*)com.myproject.com.R;" />
<substitution expression="import com.${pkg.name}.R;" />
<fileset dir="${src}" includes="**/*.java" />
</replaceregexp>
<replaceregexp flags="g" byline="false">
<regexp pattern="(package com.myproject.com;)" />
<substitution expression="\1 import com.${pkg.name}.R;" />
<fileset dir="${src}" includes="**/*.java" />
</replaceregexp>
</target>
</project>
运行定制脚本
$ ant -f config.xml -Dpartner.dir="xxx" -Dpkg.name="xxx" -Dver.code="xxx" -Dver.name="xxx" preparefiles
编译
$ ant debug
或者
$ ant release
具体的定制细节可以参考上面的脚本和如下链接里提到的内容
http://blogold.chinaunix.net/u/9577/showart_1828754.html
http://www.ulrich-scheller.de/?p=4
http://java.dzone.com/articles/building-two-versions-same
相关文章推荐
- 利用 ant 脚本修改项目包名
- (转)[Android] 利用 ant 脚本修改项目包名
- 利用ant从svn更新项目编译打包并发布项目的脚本
- 利用ant脚本 自动构建svn全量/增量/减量 项目升级包
- maven项目多war聚合 利用ant脚本实现热部署
- 使用Ant构建web项目 从编译到测试 生成测试报告 打包 邮件发送 远程下载tomcat 部署运行一条龙服务之ant脚本
- 利用Ant实现项目自动构建测试备份并发布到项目web
- Flex项目ant编译脚本初探
- 使用Ant,第1部分:将Ant脚本引入Java项目
- 使用ant脚本,对java web项目,编译、打包、发布部署到tomcat
- 使用 Flex Ant Tasks 构建 Flex 项目-第 I 部分:为 Flex 创建构建脚本
- [精华] 利用SHELL脚本修改当前环境变量
- 利用vbs脚本快速修改hosts记录,提供Google Picasa相册无法显示图片问题的傻瓜级方案(2009.11.11更新) 推荐
- windows 下架设svn服务器(转载+修改) (非利用Google项目托管)
- ActionScript3.0中利用forEach循环遍历一个数组(Array)对象并且修改其中的项目
- Flex项目ant脚本编译示例
- CruiseControl利用Ant将Web项目打包成War
- 利用ant ,shell进行cvs下tomcat项目一键部署
- 项目经验之:利用Jquery+HTML静态模版实现数据的展示及无刷新增加,修改,删除,分页操作!!!
- 在ant脚本里面,打印显示项目的classpath