博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android使用ant重新编译打包apk
阅读量:6084 次
发布时间:2019-06-20

本文共 2140 字,大约阅读时间需要 7 分钟。

hot3.png

最近在一个android项目中遇到了这样一个需求,对于不同的客户需要不同的apk名称,icon,并对apk进行不同的配置。

从原理上讲,这是比较简单的,无非是对values/string.xml中相关字段进行修改,将相应的图标放置到对应的drawble文件夹下等。但这在实现过程中遇到了一些问题,现记录下来与诸君共享。我们知道打包编译后的apk实质上是一个压缩包,将apk后缀改成zip后解压我们可以看到有如下文件:

171306_BZIC_207426.png

我们可以看到,android为了提高文件读取效率,将values文件夹下的所有xml文件都编译进了resource.arsc的二进制文件中,若我们直接对resources.arsc进行修改,将会比较麻烦,故决定采取ant重新编译的方式来实现。

apk的编译过程分为以下几个阶段:

1.用aapt命令生成R.java文件

2.用aidl命令生成相应java文件
3.用javac命令编译java源文件生成class文件
4.用dx.bat将class文件转换成classes.dex文件
5.用aapt命令生成资源包文件resources.ap_
6.用apkbuilder.bat打包资源和classes.dex文件,生成unsigned.apk
7.用jarsinger命令对apk认证,生成signed.apk

由上述步骤我们可以看到,若是手工去实现这些步骤会非常繁琐,幸好我们有ant,可以帮助我们方便的来处理这些事情。

了解了这些原理,让我们来看看是如何使用ant来编译apk的。

步骤1、

下载ant,顾名思义,我们需要使用ant,,到官网上下载对应的版本吧我的版本是

Apache Ant(TM) version 1.9.3

步骤2、

   配置ANT_HOME以及PATH,对于这两个配置相信java程序员一定不陌生了,故名思议,ANT_HOME为ant的解压目录,path为ANT_HOME/bin。配置好后测试一下,打开cmd,输入ant -verbose。若出现对应ant版本号,则说明配置成功了。

注:期间我遇到了这个问题

Unable to locate tools.jar. Expected to find it in C:/Program Files/Java/jre/lib/tools.jar

将C:/Program Files/Java/jdk/lib下的tools.jar拷贝到 C:/Program Files/Java/jre/lib下即可解决

步骤3、

使用anroid adt自带的android.bat对项目工程进行更新。android.bat路径在对应sdk\tools下,如我的在F:\android\adt\sdk\tools下。

在cmd窗口中敲入如下命令:

#更新项目android.bat update project --name ATest -t 6 -p f:/test/android/ATest

其中

--name     为项目名称

-t              android编译版本

-p             项目路径

上述命令将会在项目中自动创建相应所需的build.xml等。

若在更新时候出现如下问题:

Error: Target id '16' is not valid. Use 'android.bat list targets' to get the target ids.

则先输入如下代码来查询目前所支持的android编译版本。

android.bat list targets

步骤4、

相关资源准备。

1、将打包签名所需store拷贝到项目路径下

2、在项目的根目录下建一个ant.properties文件(注:有些系统下使用的是local.properties的文件),输入如下内容,其中keystore密码和alias密码可以不指定(防泄漏),那么在命令执行的过程中会要求你输入

key.store=release.keystorekey.store.password=antPasswordkey.alias.password=antPasswordkey.alias=releaseproguard.config=proguard.cfg

步骤5、

使用ant运行项目。

在cmd命令行输入

ant release

其中曾经遇到过这个问题,主要是未引入keystore所至,将可以store拷贝到项目下即可:

BUILD FAILEDD:android-sdk-windows\tools\ant\build.xml:650: The following error occurred while executing this line:D:android-sdk-windows\tools\ant\build.xml:691: null returned: 1

若无问题,则会在对应的bin目录下看到生成好的apk啦。

release:BUILD SUCCESSFULTotal time: 18 seconds

转载于:https://my.oschina.net/bigtiger/blog/201924

你可能感兴趣的文章
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>