一、工作需求:
ANT工具,一个命令发布整个工程。包括的工作:
(1)压缩Web工程中的CSS和JS代码,导出到Android工程的assets目录下;
(2)编译工程的库工程,另外一个Android工程;
(3)编译Android工程,打包,混淆,签名,发布。
二、工作中常见问题:
(1)生成build.xml文件:
E:\MyCode\Eclipse\android\iSettings>android list targets | more
Available Android targets:
----------
id: 1 or "android-9"
Name: Android 2.3.1
Type: Platform
API level: 9
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
Tag/ABIs : default/armeabi
----------
id: 2 or "android-15"
Name: Android 4.0.3
Type: Platform
API level: 15
Revision: 3
Skins: WXGA800, WVGA854, WXGA720, WQVGA400, WSVGA, WVGA800 (default), QVGA,
WQVGA432, HVGA
Tag/ABIs : default/armeabi-v7a
----------
id: 3 or "android-17"
Name: Android 4.2.2
Type: Platform
API level: 17
Revision: 2
-- More --
E:\MyCode\Eclipse\android\iSettings>android update project -p . -t 2
Updated project.properties
Updated local.properties
Updated file E:\MyCode\Eclipse\android\iSettings\proguard-project.txt
It seems that there are sub-projects. If you want to update them
please use the --subprojects parameter.
命令android update project -p . -t 2中,点号“.”代表当前目录,“2”代表使用API level: 15的环境。
此时生成了3个文件:build.xml,local.properties,proguard-project.txt
(2)sdk.dir,如何配置:
查看local.properties,里面只有一行内容:
sdk.dir=D:\\OpenSource\\android-sdk-windows
当它被上传到到SVN服务器被别人下载后,别人将使用不了这个环境。查看build.xml,里面有如下描述:
<!-- 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>
所以需要做的是:
1、配置环境变量ANDROID_HOME:
E:\MyCode\Eclipse\android\iSettings>echo %ANDROID_HOME%
D:\OpenSource\android-sdk-windows
2、删除local.properties
我想阅读本文的读者都会配置环境变量吧。
(3)编译错误的处理:
参考代码%ANDROID_HOME%/tools/ant/build.xml:
<javac encoding="${java.encoding}"
source="${java.source}" target="${java.target}"
debug="true" extdirs="" includeantruntime="false"
destdir="${out.classes.absolute.dir}"
bootclasspathref="project.target.class.path"
verbose="${verbose}"
classpathref="project.javac.classpath"
fork="${need.javac.fork}">
<src path="${source.absolute.dir}" />
<src path="${gen.absolute.dir}" />
<compilerarg line="${java.compilerargs}" />
</javac>
1)编译中的-Xlint:deprecation -Xlint:unchecked等警告:
在build.xml中增加以下语句来设置java.compilerargs属性:
<property name="java.compilerargs" value="-Xlint:deprecation -Xlint:unchecked" />
2)找不到包错误:
1>jar库文件不在libs目录下:
设置属性project.all.jars.path:
<target name="-pre-compile">
<echo>!!!!!!!!!!!! -pre-compile !!!!!!!!!!!!!</echo>
<echo message="JARPATH=${toString:project.all.jars.path}"></echo>
<path id="spark.lib">
<fileset dir="BasicAndroidSourceLibrary/framework_intermediates/" includes="*.jar" />
<fileset dir="BasicAndroidSourceLibrary/android-common_intermediates/" includes="*.jar" />
<fileset dir="BasicAndroidSourceLibrary/core/" includes="*.jar" />
<fileset dir="libs/" includes="*.jar" />
</path>
<path id="project.all.jars.path">
<path refid="spark.lib"></path>
<path path="${toString:project.all.jars.path}"></path>
</path>
<echo message="JARPATH=${toString:project.all.jars.path}"></echo>
</target>
2>jar库文件是有顺序要求的:
设置属性project.target.class.path:
<target name="-pre-compile">
<echo>!!!!!!!!!!!! -pre-compile !!!!!!!!!!!!!</echo>
<echo message="bootclasspath=${toString:project.target.class.path}"></echo>
<path id="spark.lib">
<fileset dir="BasicAndroidSourceLibrary/framework_intermediates/" includes="*.jar" />
<fileset dir="BasicAndroidSourceLibrary/android-common_intermediates/" includes="*.jar" />
<fileset dir="BasicAndroidSourceLibrary/core/" includes="*.jar" />
<fileset dir="libs/" includes="*.jar" />
<path path="${toString:project.all.jars.path}"></path>
<path path="${toString:project.target.class.path}"></path>
</path>
<path id="project.target.class.path">
<path refid="spark.lib"></path>
<path path="${toString:project.target.class.path}"></path>
</path>
<echo message="bootclasspath=${toString:project.target.class.path}"></echo>
</target>
3>说明:
为什么会有有顺序要求的jar库文件?因为程序员要优先使用某个库文件里面的类,当没有的时候才使用其他的库里面的类。
有个很常见的应用场景,码农们编译了Android源代码,想使用里面带@hide的函数,但是Android SDK里面没有那个函数,怎么办?只有使用Android 源代码编译出来的库文件。
具体来说主要是以下文件:
#见http://blog.csdn.net/xixinyan/article/details/6942074所描述
out\target\common\obj\JAVA_LIBRARIES\framework_intermediates/classes.jar
out\target\common\obj\JAVA_LIBRARIES\android-common_intermediates\ classes.jar ;
如上2>就是使用了这种Android SDK作为外部库,然后排了顺序后交给javac编译工程源码的。
(4)签名配置:
生成keystore文件后,配置属性key.store和key.alias就行了
<property name="key.store" value="???.keystore" />
<property name="key.alias" value="???" />
(5)其他:
ant clean
ant debug
ant release
ant installd
ant installr
- 大小: 97.4 KB
分享到:
相关推荐
总之,Mac下使用Ant对Android App进行多渠道打包是一种常见的做法,它允许开发者灵活地定制APK,以满足不同市场的特定需求。通过理解和配置Ant脚本,你可以有效地管理和自动化整个打包过程,提高开发效率。
本篇文章将详细介绍如何使用Ant来打包Android应用,以及涉及到的相关知识点。 首先,理解Ant的基本概念是必要的。Ant基于XML,通过构建文件(通常命名为build.xml)来定义构建任务。这些任务可以包括编译源代码、...
Maven坐标:org.apache.ant:ant:1.9.1; 标签:apache、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...
标题中的“ant打包java project为jar”指的是使用Apache Ant工具将Java项目打包成JAR(Java Archive)文件的过程。Ant是Java开发中的一个构建工具,它以XML格式定义任务,可以自动化编译、测试、打包等流程。在这个...
标题"unity3d android 使用ant打包批处理"指的是使用Ant工具进行Unity3D Android项目的批量打包流程。这个流程旨在提高效率,尤其是在持续集成或频繁发布更新时,可以避免手动操作的繁琐和错误。 首先,你需要确保...
3. **打包JAR/WAR**:Ant能够将编译后的类文件和其他资源打包成JAR或WAR文件,这对于创建可分发的Java应用或Web应用至关重要。 4. **运行测试**:Ant支持JUnit和其他测试框架,可以自动化执行单元测试和集成测试,...
本文将详细介绍如何使用ANT进行Android应用的批量打包,并涵盖如何替换渠道号,以及所需的所有资源文件。 1. **ANT工具介绍** ANT是一个基于Java的构建工具,它可以读取XML格式的构建文件(build.xml),执行编译...
Java的Ant打包工具是开发过程中不可或缺的一部分,尤其在构建、部署和自动化任务管理方面发挥着重要作用。Ant是由Apache软件基金会开发的一个开源项目,其设计灵感来源于Make,但使用XML来描述构建过程,使得构建...
为了解决这个问题,"Ant批量打包工具"应运而生。Ant是Apache软件基金会的一个项目,它是一个基于Java的构建工具,类似于Make或MSBuild,但具有更强大的灵活性和跨平台能力。 **Ant批量打包工具的核心功能:** 1. *...
3. Apache Ant:从官方网站下载并解压Apache Ant的RAR文件,配置ANT_HOME环境变量,并将bin目录添加到PATH环境变量中。 接下来,我们需要创建一个Ant构建脚本(build.xml)。这个脚本定义了构建过程的各个步骤,...
本文将详细介绍如何利用Ant来自动化打包Android应用(APK)。 首先,你需要在Android项目中设置Ant环境。确保你已经安装了Java Development Kit (JDK) 和Apache Ant。Ant的配置文件通常位于项目的根目录下,名为`...
Java项目中的Ant打包脚本是开发过程中的一个重要环节,它使得开发者能够自动化构建、测试和部署应用程序。Ant是一个基于XML的构建工具,由Apache软件基金会开发,它在Java社区广泛使用,替代了早期的Makefile,因为...
本资源将详细介绍如何使用Ant进行批量多渠道打包Android应用。 首先,你需要在你的项目中集成Ant。这通常意味着在项目根目录下创建一个名为`build.xml`的Ant构建文件。这个文件是Ant的配置中心,它定义了构建过程中...
标题中的“ant打包”指的是使用Apache Ant工具进行软件构建的过程。Apache Ant是一个Java库和命令行工具,其任务是驱动构建过程,它基于XML来定义项目任务,使得构建过程可配置且可重复执行。 在软件开发中,打包是...
下面将详细介绍如何在Android项目中使用Ant来实现友盟多渠道打包。 首先,确保你的系统已经安装了Java Development Kit (JDK) 和 Apache Ant。这两个是构建Android应用所必需的工具。你可以通过命令行运行`java -...
本文将深入探讨“ant打包Web工程”这一主题,基于提供的标签“源码”和“工具”,我们将围绕Apache Ant这个强大的Java构建工具进行讲解。 Apache Ant是一个开源的Java构建工具,它以XML格式定义了构建过程,使得...
这是我用ant打包android用的build文件,绝对可用
Ant是Apache软件基金会的一个开源项目,它是一个Java构建工具,被广泛用于自动化Java应用程序的编译、测试、打包和部署等任务。在Android开发中,Ant同样扮演着至关重要的角色,因为它可以用来构建和管理Android项目...
最新包org.apache.ant:ant:1.10.9