ant工具-多渠道自动打包android项目

(一)ant介绍

ant是自动化拷贝、编译、发布的构建工具,简单跨平台。

(二)ant使用前奏

1.安装jdk并配合环境变量

2.安装sdk并配合环境变量

3.新版的android sdk已经自带了ant在/eclipse/plugins目录下,如需下载到http://ant.apache.org,新建环境变量ANT_HOME为ant目录,path为%ANT_HOME%/lib

(三)编译发布android项目

1.生成build.xml文件

运行android update project -p xxx     (xxx为项目路径)

在项目根目录下自动生成build.xml、local.properties两个文件

build.xml已做基本配置和调用sdk本身自带的build.xml文件,local.properties已设置sdk目录

2.打包项目

新建ant.properties,放入keystore签名信息

key.store=zhangzhongcai.keystore

key.store.password=xxx

key.alias=xxx

key.alias.password=xxx

根目录下放入zhangzhongcai.keystore签名文件

若不指定key.store.password和key.alias.password会在运行过程中要求输入,提高安全性

运行ant release打包

(四)多渠道自动化打包

1.多渠道打包需要修改配置文件,完成渠道信息修改再打包,ant本身没有for命令,修改xml文件也不方便,需要使用第三方扩展包Ant-contrib,从这里可以下载到,下载完在项目中新建lib文件夹放入。

2.新建channel.properties加入渠道信息

<span style="font-size:18px;">market_channels=anzhi,360,baidu</span>

3.修改build.xml支持多渠道自动化打包,有两种方式

(1)添加custom_rules.xml,将自动化打包脚本写入,打包前初始化会调用custom_rules.xml内容

(2)将自动化打包脚本写入build.xml,如下

<?xml version="1.0" encoding="UTF-8"?>
<project name="TestRelease" default="deploy">

    <!-- The local.properties file is created and updated by the 'android' tool.
         It contains the path to the SDK. It should *NOT* be checked into
         Version Control Systems. -->
    <property file="local.properties" />

    <!-- The ant.properties file can be created by you. It is only edited by the
         'android' tool to add properties to it.
         This is the place to change some Ant specific build properties.
         Here are some properties you may want to change/update:

         source.dir
             The name of the source directory. Default is 'src'.
         out.dir
             The name of the output directory. Default is 'bin'.

         For other overridable properties, look at the beginning of the rules
         files in the SDK, at tools/ant/build.xml

         Properties related to the SDK location or the project target should
         be updated using the 'android' tool with the 'update' action.

         This file is an integral part of the build system for your
         application and should be checked into Version Control Systems.

         -->
    <property file="ant.properties" />

	<property file="channel.properties" />

    <!-- if sdk.dir was not set from one of the property file, then
         get it from the ANDROID_HOME env var.
         This must be done before we load project.properties since
         the proguard config can use sdk.dir -->
    <property environment="env" />
    <condition property="sdk.dir" value="${env.ANDROID_HOME}">
        <isset property="env.ANDROID_HOME" />
    </condition>

    <!-- The project.properties file is created and updated by the 'android'
         tool, as well as ADT.

         This contains project specific properties such as project target, and library
         dependencies. Lower level build properties are stored in ant.properties
         (or in .classpath for Eclipse projects).

         This file is an integral part of the build system for your
         application and should be checked into Version Control Systems. -->
    <loadproperties srcFile="project.properties" />

    <!-- quick check on sdk.dir -->
    <fail
            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
            unless="sdk.dir"
    />

    <!--
        Import per project custom build rules if present at the root of the project.
        This is the place to put custom intermediary targets such as:
            -pre-build
            -pre-compile
            -post-compile (This is typically used for code obfuscation.
                           Compiled code location: ${out.classes.absolute.dir}
                           If this is not done in place, override ${out.dex.input.absolute.dir})
            -post-package
            -post-build
            -pre-clean
    -->
    <import file="custom_rules.xml" optional="true" />

    <!-- Import the actual build file.

         To customize existing targets, there are two options:
         - Customize only one target:
             - copy/paste the target into this file, *before* the
               <import> task.
             - customize it to your needs.
         - Customize the whole content of build.xml
             - copy/paste the content of the rules files (minus the top node)
               into this file, replacing the <import> task.
             - customize to your needs.

         ***********************
         ****** IMPORTANT ******
         ***********************
         In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
         in order to avoid having your file be overridden by tools such as "android update project"
    -->

	<!--渠道包打包脚本  ant deploy   -->
	<!--读入AndroidManifest.xml信息,方便获取软件版本号   -->
	<xmlproperty file="AndroidManifest.xml" prefix="appinf" collapseAttributes="true"/>

	<taskdef resource="net/sf/antcontrib/antcontrib.properties">
	    <classpath>
	        <pathelement location="./lib/ant-contrib-1.0b3.jar"/>
	    </classpath>
	</taskdef>  

	<target name="deploy">
	   <foreach target="modify_manifest" list="${market_channels}" param="channel" delimiter=",">
	   </foreach>
	</target>  

	<target name="modify_manifest">
	    <replaceregexp flags="g" byline="false">
	        <!--匹配的内容是 android:value="*****" android:name="UMENG_CHANNEL"-->
	        <regexp pattern='android:name="UMENG_CHANNEL"
            android:value="(.*)"' />
	        <!--匹配之后将其替换为 android:value="渠道名" android:name="UMENG_CHANNEL"  -->
	        <substitution expression='android:value="${channel}" android:name="UMENG_CHANNEL"' />
	        <!--正则表达式需要匹配的文件为AndroidManifest.xml  -->
	         <fileset dir="" includes="AndroidManifest.xml" />
	    </replaceregexp>
	    <property name="out.release.file" location="${out.absolute.dir}/${ant.project.name}_${channel}.apk" />
	     <!--打包  -->
	     <antcall target="release" />
	     <!--输出渠道包到bin/out目录下  -->
	    <copy tofile="${out.absolute.dir}/out/${ant.project.name}V${appinf.manifest.android:versionName}_${channel}_release.apk" file="bin/${ant.project.name}-release.apk"/>
	</target>

    <!-- version-tag: 1 -->
    <import file="${sdk.dir}/tools/ant/build.xml" />

</project>

在该目录下运行ant命令,就可以打包出各个渠道的版本到bin/out目录中

时间: 2024-09-30 04:15:25

ant工具-多渠道自动打包android项目的相关文章

(转载)Ant自动编译打包android项目

1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Program Files\apache-ant-1.9.3) ,然后配置环境变量(新建ANT_HOME环境变量,值为ant所在的目录,然后将ANT_HOME/bin添加到path中),如图: 打开命令行工具,输入 ant  -version ,如果出现如下结果,说明an

Unity3D 自动打包整个项目(以AssetBundle实现)

原地址:http://blog.csdn.net/huang7jiao/article/details/18370653 需求: 在移动开发中,手动控制资源的加载.释放和热更新,是很有必要的. 而Unity通过AssetBundle可以实现该需求,但是如果项目资源多起来的话一个个手动打包成AssetBundle则很麻烦. 而本文正为此提供一套一键打包的方案. 资源分类.加载和实例化过程: 分类资源: 先将游戏资源分类,这里说的分类不是按资源类型(声音.贴图等)来分,而是按照打包进同一个Asset

Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can&amp;#39;t find referenced class问题的解决方式

Warning: can't find superclass or interface Warning: can't find referenced class 这两个问题的解决方法: 1.要把你项目中所引入的第三方jar包使用"-libraryjars 包路径"指定好. 2.还是报错的话,确保报错的类没有在你的项目中使用到,使用"-dontwarn 类名正則表達式"屏蔽警告. 完了?但是我还想问:第一步做完后还是报错,并且这个类在我项目中真的实用到,不能使用&qu

Ant自动编译打包android项目(转载)

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

Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包

上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包. 1. 加入签名信息: 在项目的根目录下建一个ant.properties文件,输入如下内容,其中keystore密码和alias密码可以不指定(防泄漏),那么在命令执行的过程中会要求你输入. [html] view plaincopy #keystore的路径,必须使用正斜杠 key.store=E:/wp_android_sample/me.key #ke

一个自动清理Android项目无用资源的工具类

此工具在我的github上.地址:https://github.com/NashLegend/AndroidResourceCleaner 很多人都知道androidunusedresources.jar这个工具,它可以把Android项目中无用的资源列出来.然而它所做的也就止于此了,在列出所有的无用资源以后,开发者们还得手动删除这些文件,这实在是一个没技术含量却又烦人的体力活,但是作为程序员,自然是有解决办法的,我们为什么不写一个程序,让程序来实现这个功能呢? 这个功能要实现的功能应该是这样的

整理的Unity导出安卓工程利用ANT进行多渠道批量打包APK

Unity导出的安卓工程利用ant进行多渠道循环批量打包 一:设置JAVA环境变量 做android开发的配置这个是基础. win7 下配置java环境变量,下面是链接 http://www.cnblogs.com/zhj5chengfeng/archive/2013/01/01/2841253.html 二:配置Android的SDK环境变量 除了需要Java的环境变量,我们还需要配置Android的sdk的位置,名字是ANDROID_HOME,值就是你的android的sdk的位置,比如我的

关于 ant 不同渠道自动打包的笔记

必要的java.android.ant文件及循环打包用到的ant的jar 下载Ant(这里的Ant不是eclipse和android SDk里面自带的ant) 官方下载地址:http://ant.apache.org/ 循环打包用jar  ant-contrib-1.0b3.jar  FQ进   http://ant-contrib.sourceforge.net/   1.03b里的ant-contrib-1.0b3-bin.zip   放到ant的lib目录下 至于java.android的

jenkins自动打包部署项目

首先去jenkins的官网下载安装包 https://jenkins.io/ 个人下载是长期稳定的那个版本,下载后,得到一个.msi的安装包: 点击进行安装,然后一直点击下一步. jenkins会自动占用8080端口,如果这个端口不希望被jenkins占用,可以去文件夹里的这个文件进行修改: 修改后,需要去服务里面进行jenkins的重启: 在打开浏览器界面的时候,会有一步提示输入密码,上面有一个路径,可以去那个文件里面找到对应的password:复制,粘贴到输入框内,然后开始下一步,最后面是安