素材巴巴 > 程序开发 >

史上最全:ant多渠道打包安卓工程(一)

程序开发 2023-09-19 15:02:53

初识ant

网上看到一些说ant构建已经不太现实的言论,想想也是,google的android studio广受欢迎,它推崇的gradle使用起来方便快捷,似乎已成主流,笔者确有体会。

回头整理工程,心血来潮,想试试ant,竟然整理了半天没弄出来,哎,真个是饭可一日不食,学不可一日而止呃。

ant是Apache基金会提供的一个打包工具,可以很方便地将软件编译、测试、部署等步骤联系在一起,自动化有序进行,也就是常说的一键打包,用起来简单省心。ant作为一个构建工具来讲,它底层依赖于Java语言,具有较好的跨平台性,所以大多数基于Java语言的工程,多选择它来实现编译部署,比如Web工程、安卓应用等。

当然,这里不得不承认,随着CoC越来越被推崇,大多数人也越喜欢使用maven来管理自己的项目。至于安卓开发,在google声明放弃了对eclipse继续提供支持之后,大多数开发者的中心也都随之迁移到google自己推出的IDE-AndroidStudio上了,老实说,google提供gradle使用起来确实很方便,而且网上的资料也远比ant要多,千好万好,有一点不得不吐槽,gradle脚本实在太恶心,像是一堆结构体,乱糟糟的,不太优雅。

无论maven也好,gradle也好,存在的即是合理的,ant也必有它存在的意义,也不是随随便便就会被完全淘汰的。退一步来讲,maven与ant并不是水火不容,它俩的比较这里给出个链接,有心的童鞋可继续探讨http://blog.csdn.net/lufeng20/article/details/7575626;而安卓开发来讲,大多数早期的安卓工程依然需要ant来完成这最后一步的签名打包,我知道的百度地图就是ant来实现的。

废话不多言,下面步入正题。

初识构建

安卓开发,发布之前,我们都知道要对生成的apk进行签名,以防被人冒充顶替。使用ADT开发,默认使用的就是用ant来实现构建,不信的话你可以打开自己的sdk路径,肯定会在tools文件夹下发现ant子文件夹,它里面会有一个build.xml文件,这个文件的重要性不言而喻,一般的,我们的应用就是在它的指挥下,一步步编译、混淆、签名,渠道发布,最终走向用户。而且这个文件极其规整,完全可用作学习ant的范本教材,绝对比你在网上查到的任何ant脚本都要简明、清晰。

不过,我们这里只是使用build.xml这个文件,并不使用ADT内部集成的ant,所以还得去ant的官网上下载安装一下,步骤跟jdk差不多,具体可参考:
http://www.cnblogs.com/yaozhongxiao/p/3523061.html

正式使用ant之前还有一点需要了解,ADT为每一个用户都提供了一个默认的密钥库,打开你的C盘,顺着这个路径找下去,正常在C:Users“yonghuming”.android这个文件下,会有一个debug.keystore,我们在开发的过程中,点击run时,默认的就是使用这个库里面的密钥来签名的,所以你会发现,同一个应用,如果由两台电脑生成两个apk,要安装到同一个手机上的话,必须卸载前一个(而不是覆盖)才可以。

如果我们要使用默认的debug.keystore来生成一个debug版本的apk的话,ant实现起来还是比较简单的,一般可两步走:

注意:此时可能会遇到诸如“android不是内部命令”等错误,不要着急,这是你配置环境变量path时,没有将sdk的tools加进去(通常只是配置了platform-tools目录,主要用来运行adb命令),导致人家不知道你这命令是干啥的。要解决也很简单,只须依葫芦画瓢,将tools路径粘贴到path的开头或者结尾即可,然后关闭命令行窗口,再运行,嘿,是不是完美了。
这里附上一般的build.xml内容,略加注释,供大家参考。


                             

大多数时候,我们不可能采用默认的debug.key来签名,而是会采用自己的私钥更可靠一点,那怎么办呢?

也不难,首先要有一个自己的私钥库。私钥库的创建如果你还不明白的话,那就…百度一下吧。

假设现在你已经有了一个属于自己的私钥库,而且放在了e盘的key文件夹下。

然后,你要用这个私钥来完成签名,除了使用adt的右键导出,“工程->右键->Android Tools->Export Signed Application Package…”之外,完全可以借助ant来实现:

key.store= E:/xx/xx.key
 key.store.password=*****(你的store.password,创建时输入的)
 key.alias=******
 key.alias.password=****** (你的alias.password,创建时输入的,注意alias与alias.password不要一样,否则会有你后悔的时候...)
 

release过程说着容易,实现起来可谓困难重重,脚本语言总会给你报出许多你想象不到的麻烦,这里举出几个,可供参考,更多的常见错误请参考下一篇文章 《ant多渠道打包安卓工程(二)》

release之前,你的目录结构


至于多渠道,我们留在下一篇讲,《史上最全:ant多渠道打包安卓工程(二)》

欢迎留言拍砖,转载请注明出处。


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。