一键完成android从svn拉取代码编打包

记录一下这两天研究的东西-----在windows一键完成拉取svn上的安卓源代码并自动打包。

准备:ant打包工具,android sdk,以及ant拉取代码所依赖的一个jar包svnant.jar,放到ant目录下的lib目录下即可。

ant是apache的一个一个编译工具,我的版本是:apache-ant-1.9.4

sdk就不多介绍了。

我们安卓开发者通常情况下可能是在eclipse中完成打包,打一个包,打完了后万事大吉,但是又一些场景这种方式是不适合的,比如我要批量打包,或者有几十个甚至几百个项目要打包,这时显然无法再用原始的方式做了。

闲言少叙。我们下载到ant解压出来并把下面的bin目录设置成系统环境变量,这样我们在cmd窗口里就能使用ant了:

技术分享

ant默认会找当前目录下的build.xml文件。如果要选择指定文件,可以使用ant -buildfile filename命令。

好。我们开始配置build.xml,build.xml主要做的事情就有两件:

1、从svn拉取代码;

2、编译拉取到的代码。

我们先看build.xml依赖的一个配置文件:build.properties

技术分享

就是一些变量的配置。

应用信息,svn地址、svn用户名和密码,apk生成路径,最后我们在当前目录下的/product/apk目录下取包即可,最后一行是sdk的路径。

接下来看一下build.xml

<project name="test" basedir="." default="usage">default定义入口

	<property name="rootdir"		  value="."/>
<span style="white-space:pre">	</span><pre name="code" class="html"><span style="color:#ff0000;">svn拉取代码所需要的一些东西</span>
<property name="svnant.lib" value="E:\work\ant\apache-ant-1.9.4\lib" /> <property name="svnant.jar" value="${svnant.lib}/svnant.jar" /> <property name="svnClientAdapter.jar" value="${svnant.lib}/svnClientAdapter.jar" /> <property name="svnjavahl.jar" value="${svnant.lib}/svnjavahl.jar" /> <property file="build.properties" />上面贴的那个文件 <loadproperties srcFile="project.properties" />安卓项目里自带的一个配置文件,拉取代码后自动拿到,也可以先放到当前目录下 <target name="usage">build运行的入口 <echo message="start build"/> <antcall target="checkout" />拉取代码下来 </target><path id="classpath"><fileset dir="${lib-dir}" includes="***.jar" /></path>


<span style="white-space:pre">	</span>svn配置信息
	<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" />
	<svnSetting id="svn.setting" svnkit="true" username="${svn.user}" password="${svn.password}"  javahl="false" />
<span style="white-space:pre">	</span>
	<target name="checkout">
		<svn refid="svn.setting">
			<export srcUrl="${urlRepos}" destPath="${rootdir}" force="true"/>配置svn地址用户名和密码
		</svn>
		<antcall target="prepare"/>进入准备阶段
	</target>

	<fail
        message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
        unless="sdk.dir" />

    <import file="${sdk.dir}/tools/ant/build.xml" />

	<target name="prepare">准备编译,把bin目录删除,否则编译可能通不过。
		<delete dir="${rootdir}/bin"/>
		<antcall target="deploy" />开始编译
   </target>

    <target name="deploy">
        <antcall target="release" />打release包,这个release target在安卓sdk目录中的tools/ant/build.xml目录下

        <copy tofile="${gos.path}/MangoTravel_android.apk" >完了之后拷贝到目标目录下

            <fileset
                dir="${out.absolute.dir}/"
                includes="MangoTravel-release.apk" />
        </copy>
		<echo message="build finished"/>打包完成。
    </target>
 
</project>
嗯,就是这么简单,可以配合一个bat文件使用,bat里就写三个字符ant,以后双击就可以了,也可以在cmd中运行ant。

如果需要打多渠道包,则需要下载另外一个依赖jar包,ant-contrib-1.0b3.jar,放到ant的lib目录下,然后再build.xml中用foreach标签循环执行name为deploy的target即可,注意拷贝的时候把名字改成跟渠道相关的名字,否则自己都不知道那个包对应哪个渠道。

基本上就是这样。有可能在编译的时候会出一些意想不到的错误,但是基本上可以通过错误信息搞定,问题不大。比如我开始的时候就是混编的时候出错,后面发现是proguard版本太低,换一下后就搞定了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。