ANT+BAT 打包Android程序

背景

Android在生成APK的时候需要根据不同是市场打不同的渠道包,如果人肉用eclipse打包的话,效率极低,而且容易出错。

环境准备

使用ant打包需要下载ant,ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.4版本),下载之后将其解压到某个目录(本人解压到E:\apache-ant-1.9.4) ,然后配置环境变量(新建ANT_HOME环境变量,值为ant所在的目录,然后将ANT_HOME/bin添加到path中)。打开命令行工具,输入 ant  -version ,如果出现如下结果,说明ant 安装成功。

打包还需要用到android命令,在android sdk目录 \sdk\tools 目录下,需要配置到环境变量中。 我用的是

  
如果之前没有配置过android 命令环境 添加环境变量后可以 重启一下电脑

生成build文件

打开命令行工具,切换路径到项目所在的目录;输入命令
  android update project --name <project_name> --target <target_ID>--path <path_to_your_project>
  项目根目录下多了build.xml,以及local.properties两个文件。
如果需要打签名包 还要新建一个ant.properties文件
key.store=
key.alias=
key.store.password=
key.alias.password=
在 <!-- version-tag: 1 --> 下面加上
<import file="${sdk.dir}/tools/ant/build.xml" />
		<property name="proguard-home" value="${sdk.dir}/tools/proguard/lib" />
		
		<target name="-config">
		<!-- Copy the configuration file, replacing tokens in the file. -->
		<filterset id="build-tokens">
			<filter token="project.version.name" value="${project.version.name}" />
			<filter token="project.version.code" value="${project.version.code}" />
			<filter token="version.market.um" value="${version.market.um}" />
		</filterset>
		
		<copy file="./config/AndroidManifest.xml" todir="." overwrite="true" encoding="utf-8">
			<filterset>
				<filterset refid="build-tokens" />
			</filterset>
		</copy>
		
		<property name="out.final.file" location="./release/${ant.project.name}-${version.market.um}}.apk" />


		<echo level="info">${out.final.dir} ××××××××××××××××××××××××</echo>
		<echo level="info">${out.final.file} ×××××××××××××××××××××</echo>
	</target>
	
	<target name="config-google" depends="clean"
		<property name="version.market.um" value="GooglePlay" />
	</target>
<span style="white-space:pre">	</span><target name="release_mine" depends="-config, -set-release-mode, -release-obfuscation-check, -package, -post-package, -release-prompt-for-password, -release-nosign, -release-sign, -post-build" description="Builds the application in release mode.">
	</target>
这里有一个去备份清单文件的操作
<span style="white-space:pre">	</span><copy file="./config/AndroidManifest.xml" todir="." overwrite="true" encoding="utf-8">
			<filterset>
				<filterset refid="build-tokens" />
			</filterset>
	</copy>
是由于每次都要该渠道内容 会导致AndroidManifest.xml变量version.market.um找不到
AndroidManifest.xml里面的变量写法
 <span style="white-space:pre">	</span><meta-data
            android:name="UMENG_CHANNEL"
            android:value="@version.market.um@" />
这里 批量打包的第一步就完成了cmd到项目跟目录执行命令
ant config-google release_mine
就可以打包了。

批量打包

我们需要的是多个渠道的批量打包
我这我用批处理完成的操作
添加一个文件build.bat 
if not exist release md release

start /wait /MIN cmd.exe /c "ant config-google release_mine"
start /wait /MIN cmd.exe /c "ant config-360 release_mine"
start /wait /MIN cmd.exe /c "ant config-baidu release_mine"
start /wait /MIN cmd.exe /c "ant config-hiapk release_mine"
start /wait /MIN cmd.exe /c "ant config-tencent release_mine"
start /wait /MIN cmd.exe /c "ant config-wandou release_mine"
...
如果有依赖工程的话 需要添加编译lib的命令
例如:lib工程位于项目工程根目录下 为一个名为lib/lazylist的lib 最后在cd回项目根目录
REM cd ../lib
REM cd LazyList 
REM android update lib-project -p .
start /wait /MIN cmd.exe /c "android update project -p ../lib "
REM cd ..


每个添加一个渠道都要在build.xml中添加对应的config target
如360,这个里面可以很灵活的改变内容
	<target name="config-360" depends="clean">
		<property name="version.market.um" value="360BOX" />
		<property name="version.market.id" value="2943" />
	</target>

总结

优点:

ant+bat批量打包可以节省很多时间,而且比网上的ant批量循环打包要灵活,

缺点:

每次添加一个渠道都要写对应的config文件,新手可能会漏掉。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值