几行代码打包+部署Android私有maven库
Posted 苏途同归
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了几行代码打包+部署Android私有maven库相关的知识,希望对你有一定的参考价值。
随着项目的不断迭代,开发GG肯定会持续优化和重构项目代码,一些业务代码就会慢慢重构成通用组件,然后是通用模块(Module)。甚至有些模块还可以被使用到其他的android项目里。
以前传统的方式,差一点的,就是直接复制模块代码过去,好一点的,就生成一个jar包,Android里还可以生成一个aar包,但是这些aar和jar包没有版本管理,一旦使用到多个项目,这些aar和jar包出现问题需要修复,同步修复状态就是一个令人头疼的问题。
Android Studio开始,基本都在使用Gradle作为构建工具,我们能通过下面这种方式在模块的build.gradle文件里方便地引用一个模块,这个模块可以在远程,也可以在本地,对Gradle来说是透明的,它不需要去管理这些模块的各种文件,只需要知道这个模块的指定版本就可以。
compile 'com.android.support:appcompat-v7:23.0.1'
上面讲到开发GG会把很多项目都用到的业务代码抽象成一个模块,并把这个模块给许许多多的项目使用,那我们如何把自己的这些模块打包,上传到maven系统,然后像上面一样方便地使用呢?
Android Studio里模块准备好以后,我们还需要一个gradle配置发布脚本,脚本内容大概如下,pom的字段就是模块的一些基本信息,包含版本,名称和发布协议。
我们在模块级的build.gradle配置里加上上述发布脚本的引用,以保证系统在构建的时候,会一起执行。
最后我们执行 gradle uploadArchives 命令就可以发布模块到maven系统上。
compile 'com.edusoho.videoplayer:es-videoplayer:1.4.4-SNAPSHOT@aar'
这样我们就完成了业务模块独立,并创建自己的maven仓库,然后把通用模块构建成一个所有项目都可以方便使用的库。通过maven可以方便的管理这些库的版本信息,并支持一处修改,多处更新。
Android项目打包成模块很方便,不过模块部分我们也需要注意下面几个小坑,不然打包的库,上传使用都有许多问题。
一、目前版本里,Android项目如果要打算独立发布成一个库,这个模块最好不要使用compile引用太多其他的库,因为构建的时候,不会把这些三方库一起构建,会导致项目使用我们这个库的时候,提示一些三方库找不到,结果要在项目里再次引用,造成冗余引用。尽量只包含一些基本的google自己的support库或者是三方库的jar包。
二、如果库里使用了AndroidManifest.xml,尽量设置allowBackup属性为false,或者不设置,这样其他项目引用的时候,会避免很多allowBackup属性冲突。
三、compileSdkVersion,buildToolsVersion等版本尽量保持够用就好,不用设置太高,这样也可以规避项目在使用的时候,版本差距造成很多不匹配的异常,而且有些项目不方便修改buildToolsVersion和compileSdkVersion等版本。
四、如果模块要使用本地so,尽量保持引用较少的so,让其他平台的so可以通过动态加载方式去加载,给项目使用方多一些扩展,避免集成模块后,就集成了多个平台的so包,造成软件巨大。
以上是关于几行代码打包+部署Android私有maven库的主要内容,如果未能解决你的问题,请参考以下文章