使用Ant打包Android应用具体解释——Ant使用解析
上篇《使用Ant打包Android应用具体解释》描写叙述了使用Ant打包的流程,但非常多步骤并没有说明如此做的原因,本篇将从Ant方面来理解,下一篇从APK生成的流程来说明。
APK包的生成是一系列操作的结果,而Ant则是将这一系列操作流程化。提供出定制化的接口,以及可配置的參数供改动,而这些都是通过指定的构建文件来实现。
我们就从Ant的打包流程来理解Ant的一些基本使用方法。
当在命令行中运行ant。默认会去解析当前文件夹的build.xml作为构建文件。以下是个删除部分注视的版本号:
<project name="工程名" default="help"> <!-- 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" /> <property file="ant.properties" /> <!--
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.
<import file="${sdk.dir}/tools/ant/build.xml" />
再跟进到你的SDK文件夹的tools/ant/build.xml,查看Ant打包的完整过程。
1.首先理解几个概念,project、target、task。简单来说,你的一个构建工程(project),划分了非常多阶段或者子目标(target)。而每一个阶段目标的实现。你要提供详细的操作,比方文件复制,源代码编译,这些封装好的操作就是task(能够理解为为你提供的库函数)。详细看,每一个构建文件都有顶层为project的标签。作为标识。而target就是你所要运行的操作序列。target里面能够有非常多的task。那么怎么确定操作序列运行的顺序呢?当中project的default指的是默认运行的target,也就是当你在命令行仅仅输入ant不带不论什么參数时,运行的target。
而当你指定了target后,如在命令行中输入ant
help。会从你的构建文件里找到target help运行。当我们输入ant release时,相应的target例如以下:
<target name="release" depends="-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>
target的name和description顾名思义,而depends则是该target运行前,须要运行或者说依赖的target,并且是根据从左到右的顺序依次运行。继续跟进-package它的定义:<target name="-package" depends="-dex, -package-resources">,各自是dex文件的生成和资源打包,里面又定义了非常多详细的target。
整个过程中就有或者说预留了一些空的target,比方-pre-build -pre-compile
-post-package -post-build,是每一个打包编译步骤之前后结束,通过在custom_rules.xml中重写这些target。达到定制化的要求
2.攻克了运行序列的问题。那么怎样进行參数配置呢?
(1)首先在project下的build.xml中property,能够理解为定义了部分变量或者引入了property 文件。看其部分属性:
name:property的名称,在target或者其他地方能够通过${name}的形式引用
value:详细的值或路径
file:须要载入的property文件,文件里的内容以key=value中出现,如local.properties中定义的sdk.dir=android的sdk路径
refid:引用已经定义的path信息
自己工程的build.xml中property定义的local.properties引入了android sdk/ndk,ant.properties引入了签名时须要的信息;这里有个关键的特性是。一旦定义了property,其值是不能改变的,并且会保留最先定义的值;也就是这个特性。方便了在编译过程中的一些定制化操作。如上篇中调用隐藏api,将自己的framework.jar增加到project.target.class.path中
(2)import标签,属性file:要引入的构建文件,optional:值为true时,即使import的文件不存在,也不停止编译。那么custom_rules.xml是可有可无。而${sdk.dir}/tools/ant/build.xml是定义了真正的编译步骤的文件必须存在
3.一些用到的其他标签
(1)定义文件文件夹path,从ant手冊中的样例看:
<path id="base.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</path>
一个能够在其他地方通过refid引用的path,里面包含了详细path路径pathelement和通过include或exclude来筛选文件的fileset
(2)copy task
<copy todir="${source.absolute.dir}">
<fileset dir="其他源代码文件夹">
<include name="**/*.java" />
<include name="**/*.aidl" />
</fileset>
</copy>
odir:目标文件夹,源文件夹在fileset上定义,规则是包含全部.java文件和全部aidl文件。简单的如拷贝单个文件
<copy file="myfile.txt" tofile="mycopy.txt"/>
拷贝一个文件到某个文件夹
<copy file="myfile.txt" todir="../some/other/dir"/>
这些信息都能够通过查询ant參考手冊https://ant.apache.org/manual/来了解。不一一叙述
通过上述描写叙述应该能够理解并跟进整个ant打包android应用的流程,依据自己的须要进行定制化操作
使用Ant打包Android应用具体解释——Ant使用解析的更多相关文章
- 使用Ant打包Android应用具体解释
计划写个完整的使用Ant打包Android应用的系列文章.三篇文章.首篇具体介绍採用Ant打包Android应用的流程.列出部分定制问题及其解决方法,第二篇介绍我理解的Ant打包的思路与主要的概念和使 ...
- 使用ANT打包Android应用
大家好,今天来分享一下如何使用ANT打包Android应用. 通常我们习惯用eclipse来开发Android程序,它会自动帮我们打包当前的应用程序.如果在Navigator视图下,我们可以看到以下几 ...
- Ant打包Android代码生成apk文件
可參考下面,实现一套代码不同渠道的打包 http://blog.csdn.net/liuhe688/article/details/6679879 http://cnn237111.blog.51ct ...
- 【Android开发经验】使用Ant批量打包Android应用全然指南
本文章由Socks完毕.博客地址:http://blog.csdn.net/zhaokaiqiang1992 转载请说明. 折腾了一下午.百度了一下午,最终实现了使用Ant对Android应用的批量打 ...
- (转载)Ant自动编译打包android项目
1 Ant自动编译打包android项目 1.1 Ant安装 ant的安装比较简单,下载ant压缩包 http://ant.apache.org (最新的为1.9.3版本),下载之后将其解压 ...
- 通过ant脚本编译打包android工程
通过ant脚本,编译打包android工程 1.Android程序编译.打包.签名.发布的三种方式: 方式一:命令行手动编译打包 方式二:使用ant自动编译打包 方式三:使用eclipse+AD ...
- Android - Ant自动编译打包android项目 -- 1(转)
1. 背景: Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其当要将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我 ...
- Android Ant打包笔记
本文文档的下载地址(Word版):http://download.csdn.net/detail/yangwei19680827/7250711 Android Ant 打包 网上找了ant打包的资料 ...
- 【转】Android项目使用Ant打包,生成build.xml
记不住,于是原帖转过来,请看原帖:http://blog.csdn.net/ms03001620/article/details/8490238 一.生成build.xml Eclipse中使用Ant ...
随机推荐
- Entity Framework的一个实例
环境:Visual studio2013+sql server本地数据库 创建一个C#应用程序,首先在nuget中添加Entity Framework 接下来的工作分为四个主要部分: 第一部分:App ...
- time---统计命令所花费的总时间
time命令用于统计给定命令所花费的总时间. 语法 time(参数) 参数 指令:指定需要运行的额指令及其参数. 实例 当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短 ...
- 移动端 Modal 组件开发杂谈
Vant 是有赞开发的一套基于 Vue 2.0 的 Mobile 组件库,在开发的过程中也踩了很多坑,今天我们就来聊一聊开发一个移动端 Modal 组件(在有赞该组件被称为 Popup )需要注意的一 ...
- 一个HelloWorld版的MySQL数据库管理器的设计与实现(源码)
2011年,实习期间写了一个简单的数据库管理器. 今天,特意整理了下,分享给大家. 有兴趣的同学,可以下载源码,瞧瞧. 源码只有4个类:LoginGUI,DatabaseGUI,Record,MySQ ...
- CodeForces 383C Propagating tree
Propagating tree Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces ...
- ArcGIS api for javascript——地理处理任务-瓶中信
描述 如果在海洋中丢下一个瓶子,本例使用颗粒追踪模型显示指定的天数后瓶子在的地方.首先,输入一个追踪瓶子的天数.然后单击按钮并在海洋里的任意地方画一个点来开始模型.几秒以后将看到一条线出现描述瓶子将去 ...
- DICOM:Transfer Syntax传输语义之奇葩GE Private TS
背景: 专栏之前对Transfer Syntax(暂定中文翻译为传输语义,8月初博客中提到的DICOM3.0标准中文版开源书籍计划顺利启动.兴许会面临诸多专有名词的翻译工作,欢迎广大博友提意见)进行过 ...
- ios 文件上传, post数据
转自:http://www.maxiaoguo.com/clothes/267.html 一.文件下载 获取资源文件大小有两张方式 1. HTTP HEAD方法 NSMutableURLRequest ...
- ProFTPD 的 mod_lang模块
ProFTPD 的 mod_lang模块http://www.proftpd.org/docs/modules/mod_lang.html安装该mod_lang模块随ProFTPD一起分发.要在pro ...
- Python正则表达式初识(十)附正则表达式总结
今天分享正则表达式最后一个特殊字符“\d”,具体的教程如下. 1.特殊字符“\d”十分常用,其代表的意思是数字.代码演示如下图所示. 其中“+”的意思是表示连续,在这里代表的意思是连续的数字.但是输出 ...