Android—打包aar以及module依赖操作
將項目打包為aar:
1、manifest文件:去掉紅框內容
2、Module的build.gradle文件中加上? ? apply plugin: 'com.android.library'
3、打包:
4、包位置:
在其他module中導入aar包
1、implementation和api的區別:
- api相當于之前的compile,用這種方式依賴的庫,會參與編譯打包過程。但是,如果第三方庫以此方式依賴其他庫,有可能會發生版本沖突。需要使用api("com.xxxxx.xxxxxx:xxxxx:1.0.0") { exclude group: 'com.android.support' }方式解決。
- implementation只能在模塊內部使用,比如我在一個libiary中使用implementation依賴了gson庫,然后我的主項目依賴了libiary,那么,我的主項目就無法訪問gson庫中的方法。如果需要提供外部訪問,使用api即可。
2、compileOnly替代provided,都是只在編譯時有效,不會參與打包
有多個library,只要確保有一個module中該依賴能參與到打包即可,其他的可以使用compileOnly,避免沖突。
這里可以選擇將包放到maven倉庫,也可以在本地進行導入。
本地導入:
1、通過放在libs下面進行導入
在需要導入的module的build.gradle中加入
repositories {flatDir {dirs 'libs'} }implementation (name:'app-release',ext:'aar')//implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')2、通過file —> new module的方式
選擇本地aar添加后可以看到
在需要的module中直接依賴:
implementation project(':app-release')當項目存在多個module時,如果這些module都需要依賴同一些aar,可以建立一個底層的公共module(common),common中采用api的方式引入那些aar,那么其他module只需要依賴common就可以間接依賴到那些aar,方便同意操作。
common的build.gradle中 api project(':app-release')其他module中 implementation project(':common')maven倉庫的方式
1、上傳aar到maven倉庫
我們在aar原項目的build.gradle中添加上傳uploadArchives?的方法
apply plugin: 'maven'uploadArchives {repositories {mavenDeployer {repository(url: uri('../localMaven')) //定義本地maven倉庫的地址pom.version = 1.0pom.artifactId = "aarText"pom.groupId = "com.text.aarText"pom.name = "testlibrary"pom.packaging = 'aar'}} }apply plugin: "maven"? ? ? ? ? ? ? ? ? ? ? ?引入maven插件?
repository(url: uri('../localMaven'))? ? 定義maven倉庫地址,一般是定義為遠程倉庫的地址,..表示上一層目錄。
同步之后可以運行。運行后:
出現對應的目錄,版本號,我們需要的aar文件。
2、引用maven倉庫的aar
在需要引用的module的build.gradle文件中添加
repositories {maven {url '../../MyApplication2/localMaven'} }dependencies {implementation 'com.text.aarText:aarText:1.0' }url是倉庫地址。
implementation 'groupId:artifactId:version'
同步之后,該module就可以使用aar中的東西。
如果全部module都要,則在project層級的build.gradle中添加maven地址
allprojects {repositories {google()jcenter()maven {url '../../MyApplication2/localMaven'}} }?然后在common中,注意是api
dependencies {api 'com.text.aarText:testlibrary:1.0' }?
總結
以上是生活随笔為你收集整理的Android—打包aar以及module依赖操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件工程师所需掌握的“终极技术”是什么?
- 下一篇: 不花钱就补足营养的8妙招