android profile 打包_Android自动化打包之Maven篇

在开始自动化打包具体实践之前,先把Maven的知识点重拾一下。

经验:由于是约定大于自由,所以必要将这些约定烂熟于心,否则很容易遗忘,对知识点的模糊。

下面两篇文章对于Maven的基本认识有一个概要的了解。

Maven入门上

http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html

Maven入门下

http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-2-405568-zhs.html

对于Maven你必须要了解的几个概念:

骨架(插件),生命周期,目标(任务),依赖,插件。

由于约定大于自由,一般情况下我们是不需要重新构建工程的。但是有时候也会需要,例如生成war,apk等,这时候我们需要重新build。为此我们需要了解build构建的各项配置。

为此我们首先需要先了解如何通过maven构建android项目。然而需求并没那么简单,例如签名,混淆,渠道打包等等。这里真的要吐槽下,网上的资料真心不多。为数不多的实例却让人似懂非懂。知识点的设计都非常模糊,尤其是对于maven本来就不熟悉的我而言,理解起来相当费劲。所以我希望通过现象看本质,将哪些阻碍我理解配置的知识点逐个击破。

属性过滤:

1. Maven是如何在命令执行的过程中将除pom.xml之外的其他配置文件例如(xxx.xml)中${}进行替换。小白就是小白

术语其实是-属性过滤,在使用maven中,这是一个不错的技巧。

2. maven定义变量可以通过在pom定义property属性的key/value,如何使用自定义的properties文件作为来源进行属性过滤?

这个也非常容易实现,在build配置filters的来源便可。

AndoridManversionCode属性过滤问题:

使用Maven对AndroidManifest.xml的versionCode通过属性过滤进行设置时始终无法编译成功,最终通过android-maven-plugin插件的目标manifest-update对原始AndroidManifest.xml的versionCode和versionName进行变更。

疑问:为啥网上的例子需要在target生成AndroidManifest.xml文件。以及他更改versionCode和versionName的方式也跟笔者所述的不同。

[参考](https://gist.github.com/trajano/5941038 )

通过android-maven-plugin来更新原始AndroidManifest.xml的verisonCode和versionName是有局限的。为什么这么说?

当我们需要进行多渠道打包的时候,即需要更改AndroidManifest.xml下的channel时,如下:

利用android-maven-plugin是无法做到的。这时候借助maven-resources-plugin插件就非常方便的解决了。

接下来就是要解决批量打包的问题了:

解决批量打包的关键问题是如何循环执行打包命令?

答案是:bash

下面这段便是批量打包的脚本,那么我们如何去理解他呢?

#!/bin/bash

package(){

mvn clean

while read line

do

mvn -Dchannel=$line package

done < $1

}

package $1

执行批量脚本:

./package channels.txt

(注:$1:channels.txt)

[demo](https://git.oschina.net/techbirds/android_maven_batch_package.git)

参考:

[android + maven](https://github.com/yuanxd/android )

[maven之filter和profile](http://archboy.org/2012/05/21/apache-maven-profile-filtering-multiple-build-environments/ )

[美团Android自动化之旅-生成渠道包] (http://tech.meituan.com/mt-apk-packaging.html )

[Android APK 反编译详解](http://blog.csdn.net/ithomer/article/details/6727581 )

[pom配置详情](http://blog.csdn.net/ithomer/article/details/9332071 )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值