最近因渠道过多,需要单独接入渠道支付sdk的渠道也很多,而首发在即、人手不足,所以着手了部分相关的工作,看了下目前的操作流程。。无奈人比较懒,所以决定进行一波简化,先考虑了两种方案:

1)脚本批处理

2)ant自动构建(eclipse的打包方式)

归根到底,ant的build.xml自动化方式也属于脚本处理的一种,还能省去不少设计工作,因此决定使用ant的方式(官网:http://ant.apache.org/manual/)。

Tip:使用ant的构建方式,对环境变量有比较严格的要求(SDK/JDK等)!

首先,了解下ant的build.xml的使用:最简单的方式,先对已有项目自动化生成build.xml等文件,使用Android SDK自带的工具:android.bat(目录<SDKPath>/tools/android.bat,一般会放到环境变量中),命令行调用方式如下:(<SDKPath>/tools/)android update project --path ProjectPath,调用结束即会在项目路径下生成build.xml等文件,接下来我们下来分析下自动生成的几个文件:

1)build.xml(这里,我省略了自动生成时的注释内容,大家可以自行阅读)

<?xml version="1.0" encoding="UTF-8"?>
<project name="ProjectName" default="help">    <!-- 这里的ProjectName即为最终生成时的apk名,help为默认要执行的方法-->
  <property file="local.properties" />       <!-- 引用的外部定义文件,方便定制 -->
  <property file="ant.properties" />         <!-- ant.properties文件并非自动生成,因此后续的定制信息,我们可以直接在这个文件中定义 -->
  <property environment="env" />           <!-- 系统的环境变量信息 --> <condition property="sdk.dir" value="${env.ANDROID_HOME}">  <!-- 条件判断,如果环境变量中设置了ANDROID_HOME,则定义sdk.dir属性 -->
    <isset property="env.ANDROID_HOME" />
  </condition>
<loadproperties srcFile="project.properties" />  <!-- 在细分功能时,属性会分散到多个properties文件中进行定义,此处是导入需要的文件中定义的property元素 --> <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"
/>    <!-- 校验,没有定义sdk.dir则失败  http://ant.apache.org/manual/Tasks/fail.html --> <import file="custom_rules.xml" optional="true" />   <!-- 导入同目录下的custom_rules.xml文件(非强制,文件允许不存在) -->
<import file="${sdk.dir}/tools/ant/build.xml" />    <!-- 默认optional为false,强制导入 -->
</project>

Tip:ant的设计中,当有引用、依赖文件存在时,如有重复项/冲突项,以先加载的内容为主

2)local.properities及project.properties

伴随build.xml自动生成的另外两个文件,local.properities文件定义了sdk的路径信息,project.properties文件则定义了当前工程的相关设置信息

分析完自动生成的文件,我们来继续刚才分析build.xml的思路深入分析一下,在改文件的最后,导入了sdk提供的内置的build.xml文件(为区分期间,前者称为auto_build.xml,后者为sys_build.xml),我们继续分析下sys_build.xml文件,鉴于文件比较大,这里只针对几个在处理自动化构建中需要关注的点进行说明:

在构建release版本时,需要用到keystore文件,因此我们后面我们需要对相关属性进行配置。

这里会牵扯到我们环境变量设置中的JAVA_HOME的设置,也是经常出现错误的地方,常见的错误信息为JAVA_HOME指向出错,可能的原因有:

1)没有在环境变量中定义JAVA_HOME

2)部分设置不正确(网上给出的解决方案多为复制jdk中的文件到jre),这里推荐ant编译时环境变量及错误提示问题中提到的方案(这里未做尝试)

到这里,我们所需要做工作就明确了:定义keystore的相关属性设置,为最简化工作内容,可以直接在项目路径下创建上文提到的ant.propertities文件,使用该文件配置所需属性:

key.store=KeyStorePath\\name.keystore  #注意转义,属性名称不能修改(要与sys_build。xml中的引用一致)
key.alias=alias.keystore
key.store.password=123456
key.alias.password=123456

这样环境配置等相关内容就搞定了。

Tip:同样的道理,custom_rules.xml文件给用户提供了编译打包前的用户自定义行为接口:如果需要在打包前做些额外操作,比如修改AndroidManifest.xml中的设置等,即可在同目录手动创建一个custom_rules.xml文件,并在其中定义用户行为即可,当执行auto_build.xml的时候(sys_build.xml之前)即会执行自定义行为。

接下来就是具体的构建过程:

eclipse中右键点击的auto_build.xml——>run as...

可以以GUI的形式看到引用的sys_build.xml中的任务列表

这里default即为最开始定义的默认函数help(具体内容为Ant的用法说明),最后点击build成功之后,即会在项目的bin目录下生成配置的ProjectName.apk文件。

写在最后:Ant类似Make,不过易用很多。

使用ant自动构建apk的更多相关文章

  1. ant 自动构建血泪史

    1.  android.bat update project -p . -t xxx 其中: xxx 为 targetid 特别注意的是:  targetid 不等于 API Level.... 2. ...

  2. Ant自动构建

    Ant+jenkins+tomcat <project name="buildWar" default="clean"> <property ...

  3. windows下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

    原创文章,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4535459.html android 程序打包成apk,如果在是命令行方式,一般都要经过如下步骤: 1.用a ...

  4. 用Ant实现Java项目的自动构建和部署

    原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml         本文请勿转载! Ant是一个Apache基金会下的跨平台的构 ...

  5. 利用ant脚本 自动构建svn增量/全量 系统程序升级包

    首先请允许我这样说,作为开发或测试,你一定要具备这种 本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方式.开发人员提交了代码后,可以自动构建.打包.部署到测试环境. ...

  6. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...

  7. 用Ant实现Java项目的自动构建和部署(转)

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.            ...

  8. 用Ant实现Java项目的自动构建和部署(转)

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.            ...

  9. Ant + Jenkies +Tomcat 自动构建部署Web项目

    前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + Tomcat 搭建了一个自动发布部署的环境 ...

随机推荐

  1. 解决shiro和quartz2 版本冲突问题

    修改build.gradle   compile ("org.quartz-scheduler:quartz:2.2.3") compile ("org.apache.s ...

  2. (转)java匿名内部类详解

    原文:http://android.blog.51cto.com/268543/384844/   内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. *内部类可以是静态static的 ...

  3. Chrome 开发者工具断点调试(视频教程)

    很多人不了解 Chrome Dev Tools (开发者工具)的使用方法和技巧. 其中很多技能,无论是前端开发从业者,还是普通用户,了解一些还是对日常很有帮助的. 本猿定期录制.甚至根据您的需求来订制 ...

  4. Vulkan Tutorial 11 Shader modules

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 与之前的图像API不同,Vulkan中的着色器代码必须以二进制字节码的格式使用,而不 ...

  5. Core ML 机器学习

    在WWDC 2017开发者大会上,苹果宣布了一系列新的面向开发者的机器学习 API,包括面部识别的视觉 API.自然语言处理 API,这些 API 集成了苹果所谓的 Core ML 框架.Core M ...

  6. RabbitMQ分布式消息队列服务器(一、Windows下安装和部署)

    RabbitMQ消息队列服务器在Windows下的安装和部署-> 一.Erlang语言环境的搭建 RabbitMQ开源消息队列服务是使用Erlang语言开发的,因此我们要使用他就必须先进行Erl ...

  7. mac中使用 sourcetree 的快速配置和git服务器登录

    问题: 1.mac中下载sourcetree配置仓库地址,一直在提示输入密码,无法登录成功,更无法获取源码. 2.找不到配置仓库时的账号密码,只看到地址. 场景: git服务器:自己的GIT服务器,非 ...

  8. udl文件测试数据库连接

    直接建一个udl后缀的文件(新建txt文件,改后缀) 然后会默认有个小电脑标志,双击打开就可以看到,可以用来配置数据库连接信息,可以测试连接,如果连接通过,可以再用记事本打开这个udl文件,里面就有生 ...

  9. 移动webAPP前端开发技巧汇总

    1. viewport:webapp视图 也就是可视区域.对于桌面浏览器,我们都很清楚viewport是什么,就是除去了所有工具栏.状态栏.滚动条等等之后用于看网页的区域,这是真正有效的区域.由于移动 ...

  10. SQL Server 2012 酸爽的安装体验

    电脑上已经安装了SQL Server 2008 R2,要想安装SQL Server 2012,必须先将已安装的SQL Server 2008 R2 安全卸载,否则安装过程中会报错! 使用到的卸载软件有 ...