Ant 打包全攻略

一、Ant 前期准备

  1. 下载Ant

http://ant.apache.org/manualdownload.cgi

注意:/ant-contrib-1.0b3.jar 需要单独下载(http://sourceforge.net/projects/ant-contrib/

2.配置环境变量 (略过)

二、为Project 添加 ANT Build支持

进入命令行模式,并切换到项目目录,执行如下命令:

 android update project -p . -t  "android-19"

说明:android update project -p . -t  "你编译的SDK版本"

二、编写构建脚本

  1. 首先需要准备构建所需要的签名信息

    在项目根目录创建 local.properties ,配置你的签名信息,包括路径,别名,密码

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
# location of the SDK. This is only used by Ant
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=E:\\adt-bundle-windows-x86\\sdk
#keystore
key.store=XXX\\gemeite.keystore
key.alias=XXX
key.store.password=XXX
key.alias.password=XXX

2.   准备构建渠道版本所需要的渠道

在项目根目录创建 channels.properties

#market_channels=Baidu,Tencent,AppChina,HiApk,AnZhi,91Android,Gfan,Wandou,360,163,Xiaomi,Sohu,Angeeks,Nduoa,Mumayi,3G,Hicloud,Xunlei
market_channels=Tencent
app_version=v1.0.0

3. 接下来就是关键的 build.xml 了

打包多渠道,需要在 AndroidManifest.xml 里配置 meta-data ,可以参考如下

<!-- 渠道商编号,其中 name 请不要改,将 value 修改为渠道商编号。渠道名称请到 mtj.baidu.com的渠道管理中修改 -->
<meta-data android:name="BaiduMobAd_CHANNEL" android:value="Tencent" />

这里需要 ant-contrib-1.0b3.jar 用来执行循环操作

打包的最终结果位于项目根目录下  release 文件夹下,下面是全部内容

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

	<!-- 渠道配置 -->
    <property file="channels.properties" />
    
    <!-- 使用第三方的ant包,使ant支持for循环 -->
	<taskdef resource="net/sf/antcontrib/antcontrib.properties">  
	  <classpath>  
		<pathelement location="${ant.dir}/lib/ant-contrib-1.0b3.jar"/>  
	  </classpath>  
	</taskdef>
    <!-- 循环打包 -->
	<target name="deploy">
	   <foreach target="modify_manifest" list="${market_channels}" param="channel" delimiter=",">
	   </foreach>
	</target>
	<!-- 循环修改AndroidManifest.xml -->
	<target name="modify_manifest">
	    <!-- 正则匹配替换渠道号 -->
<!-- 		<replaceregexp flags="g" byline="false" encoding="UTF-8"> -->
<!-- 			<regexp pattern=‘meta-data android:name="JPUSH_CHANNEL" android:value="(.*)"‘ /> -->
<!-- 			<substitution expression=‘meta-data android:name="JPUSH_CHANNEL" android:value="${channel}"‘ /> -->
<!-- 			<fileset dir="" includes="AndroidManifest.xml" /> -->
<!-- 		</replaceregexp> -->

		<replaceregexp flags="g" byline="false" encoding="UTF-8">
			<regexp pattern=‘meta-data android:name="BaiduMobAd_CHANNEL" android:value="(.*)"‘ />
			<substitution expression=‘meta-data android:name="BaiduMobAd_CHANNEL" android:value="${channel}"‘ />
			<fileset dir="" includes="AndroidManifest.xml" />
		</replaceregexp>

		<!-- 执行打包 -->
		<antcall target="release" />
		<!-- 拷贝新打包的app文件 -->
		<echo>Copy released app file.</echo>
		<copy file="${basedir}/bin/${ant.project.name}-release.apk" tofile="${basedir}/app-release/${ant.project.name}_${channel}_${app_version}.apk" overwrite="true"></copy>
	</target>

    <!-- 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" />

    <!-- 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>

	<condition property="ant.dir" value="${env.ANT_HOME}">
        <isset property="env.ANT_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"
    -->
    <!-- version-tag: 1 -->
    <import file="${sdk.dir}/tools/ant/build.xml" />

</project>

三、执行构建

命令行定位到项目根目录,执行如下命令

ant

四、错误处理

1.> BUILD FAILED> C:\Android\android-sdk\tools\ant\build.xml:601: The following error occurred while executing this line:>

C:\Android\android-sdk\tools\ant\build.xml:653: The following error occurred while executing this line:> C:\Android\android-sdk\tools\ant\build.xml:698: null     returned: 1

Also, if eclipse isset to ‘build automatically‘ then this could keep popping up because eclipse will keep regenerating into the bin folder.

just run ‘ant clean release‘ instead of ‘ant release‘ when you are building this.

rm -fR $(find . -type d -name crunch|xargs)

如果遇到上述error 就执行 ant clean releas

2.invalid resource directory name: E:\gemeite_project\znsq_android\dev\SmartLibrary\bin\res crunch

如果遇到上述,请执行 ant clean

总结:Ant构建的方式效率低,谷歌已经推 Gradle了,我们也要跟上谷歌的脚步了

时间: 2024-10-13 22:44:06

Ant 打包全攻略的相关文章

Android Studio打包全攻略

1)手动打包 项目写完了,现在需要把应用上传到市场,问题出现—怎么把代码变成.apk(Android的可安装文件). 1. 创建签名文件 2. 填写好签名参数 3. 生成APK注意:签名的密码和密匙的密码注意保管,不要忘了,签名文件别泄漏了,也别搞丢了 为什么要打包 我最开始就有这个疑问,我们的代码不是点了下运行按钮就直接安装到手机上了吗,我们在在项目Project目录的build/outputs/apk目录下可以找到刚刚新鲜生成的app-debug.apk.直接把这个上传给市场不就行了吗. N

Android Studio打包全攻略---从入门到精通

初出茅庐 手动打包 怎么手动打包 项目写完了,现在需要把应用上传到市场,问题出现-怎么把代码变成.apk(Android的可安装文件). 1. 创建签名文件 2. 填写好签名参数 3. 生成APK 注意:签名的密码和密匙的密码注意保管,不要忘了,签名文件别泄漏了,也别搞丢了 为什么要打包 我最开始就有这个疑问,我们的代码不是点了下运行按钮就直接安装到手机上了吗,我们在在项目Project目录的build/outputs/apk目录下可以找到刚刚新鲜生成的app-debug.apk.直接把这个上传

Tomcat全攻略

tomcat全攻略 1.tomcat是什么? Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它早期的名称为catalina,后来由Apache.Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat.Tomcat是应用(java)服务器,它是一个servlet容器,是Apache的扩展,但它是独立运行的.tomat应用于Java Servlet, JavaServer Pages,Java Expression Language以及其他的Javaweb开发的技术. Th

Gradle脚本基础全攻略

[工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.点我开始Android技术交流] 1 背景 在开始Gradle之前请务必保证自己已经初步了解了Groovy脚本,特别是闭包规则,如果还不了解Groovy则可以先看<Groovy脚本基础全攻略>这一篇博客速成一下Groovy基础,然后再看此文即可.关于Gradle速成干货基础详情也请参考Geadle官方网站,不好意思我太Low了. Gradle核心是基于Groovy的领域特定语言(DSL,具体概念参见<

安卓ADT项目及升级AS(Android Studio)全攻略

安卓ADT项目及升级AS全攻略...1 1    ADT项目(即原Eclipse开发环境下项目)打包.签名.混淆配置...2 1.1     生成签名文件...2 1.2     打包配置...2 2    Eclipse项目升级至AS项目及升级过程遇到问题...7 2.1     首先将原先项目复制一份出来(避免损坏原项目),记为project_tag..7 2.2     打开AS选择Import project (Eclipse ADT,Gradle,etc)7 3    AS项目多渠道混

maven教程全攻略

maven教程全攻略 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关的jar包都会作为项目的依赖. 通常,一个java EE项目所依赖的jar包会有很多.然而,这还并非是主要问题,在管理这些jar包过程中,jar包的版本往往是最令人头疼的问题.选择一个jar包的版本,需要考虑它所依赖的jar包是否支持这个版本,并且还需要确认依赖它的jar包能不能对这个版本兼容. 所

Docker全攻略完全解析电子版pdf下载

Docker全攻略完全解析 链接:https://pan.baidu.com/s/1_ltvH7-jqbranqQ5TnH46w 提取码:z0qt Docker全攻略完整电子书分享,有需要的朋友们可以收下,(#.#)! 作品目录 前言 第一篇 Docker简介 第1章 Docker的前世今生 1.1 什么是LXC 1.2 Docker为什么选择了AUFS 1.3 Docker是如何产生的 第2章 Docker现状 2.1 Docker应用范围 2.2 Docker的优缺点 1.Docker资源利

活水渠 - 云影院之云时代看片全攻略

本文讨论了大数据时代最热门的两大应用之一的云计算(另一应用是物联网)对网络视频观看体验的具体影响,以及在观看方式上区别于传统下载方式的优点. 一.视频门户类网站 此类网站以优酷.乐视等为代表,主营传统网络视频业务,使用浏览器进行直接点击链接进行观看. 优点:电视节目丰富.观看技术手段简单.大型网站服务器稳定 缺点:看不了热门电影,精华视频要收费,免费用户要看广告 解决:浏览器辅助工具或插件解决收费和广告问题,在此基础上还诞生了视频门户网 站的入口集成网站,每天看云帆可免VIP直接观看主流视频门户

fiddler Android下https抓包全攻略

fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP是抓不到包的,需要一些特殊的配置,本文把fiddler Android下https抓包的详细配置都罗列出来,供大家参考. 一.普通https抓包设置 先对Fiddler进行设置: 勾选“CaptureHTTPS CONNECTs”,接着勾选“Decrypt HTTPS traffic”.同时,由于我