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依赖操作相关推荐
- Android 打包aar包含第三方aar 实践
Android 打包aar包含第三方aar 因项目需要,打包aar包含第三方aar,如果直接对module进行打包会产生一些问题. * What went wrong: Direct local .a ...
- Android 打包 aar文件的流程以及aar的引用
打包aar 分为原项目打包成aar 和新建module 打包成aar 1 原项目打包成aar 文件 需要把项目先变成库 把apply plugin: 'com.android.application' ...
- 最笨的解决android打包aar中引入远程依赖资源加载不到的问题
为了功能模块化和功能的复用,我们可以把具体的模块封装成库,做成.aar文件供别人项目使用,但是在开发library的时候可能会用到其他第三方的库,一般我们会在library的gradle文件中进行添加 ...
- android打包aar包含三方库和三方aar
前段时间做安卓SDK开发,其中我们的SDK里集成了支付宝的人脸认证SDK,现在说一说怎样解决将三方SDK和三方引入库一起打包进SDK. 1. 修改app下的bulid gradle文件: 把apply ...
- android 打包aar,和引入aar
一:先把项目修改为 "library" 修改app下的build.gradle中的 "apply plugin:'com.android.application' &qu ...
- android多个module打包aar,Android 多 Module 合并打包 AAR
通常来说,我们在项目中引入第三方 SDK 通常有下面几种方式: 添加 JAR 包文件到项目依赖(对应 Java Library): 添加 AAR 包文件到项目依赖(对应 Android Library ...
- android多个module打包aar,android 多module打包aar
一.打包 aar 1.单个模块打包 打开 Gradle 工具窗口,找到 Android Library 模块. 在 build 任务中双击 assemble. 执行成功后,在 mylibrary/bu ...
- android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题
android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题 为什么会用到fat-aar 如何使用 打出来的aarlib中存在多个架构,例如x86\x86_64 我在打包okhttp和 ...
- android studio打包aar心得
2019独角兽企业重金招聘Python工程师标准>>> 在比较大的 Android 项目的开发中,我们经常会遇到工程.jar 包等等之间相互引用的方式.一般我们通过在 gradle ...
最新文章
- python之函数三装饰器
- 浅谈Java中的final关键字
- pwm调制 matlab仿真,PWM脉冲调制直流电机的simulink仿真
- Android开发之RadioButton位于文字右边的显示方法
- linux3.0-内核自带led驱动移植
- 第一节 9布尔运算符
- POJ3070 Fibonacci【矩阵快速幂】
- VLFeat工具箱配置
- html中标记pre的作用是什么,html中pre和code标签
- URL 编码和解码工具
- MSF利用pcshare控住目标主机
- 阿里天池大数据竞赛——口碑商家客流量预测 A1
- 分页查询优化方案总结
- Python入门:微博注销不了?python一键清空微博文章内容
- java模拟抛硬币_用随机数模拟抛硬币
- 电脑怎么自动锁定计算机,如何设置电脑,人一走开就可以自动上锁?
- 手机信息通知标为已读实现原理_27条iPhone苹果(附iPhoneX)手机使用技巧,你用过多少条?...
- 应用计算机测定线性电阻伏安特性实验结论,电路分析实验报告(电阻元件伏安特性的测量)...
- Word 调整段落行间距无效怎么办
- python通过ssh通道连接PostgreSQL数据库(mysql等类同)
热门文章
- android多屏应用程序,微软也尝试“多屏协同” Windows系统可以运行安卓程序
- jsoncpp去掉多余字符_如何处理JSON中的特殊字符
- 关于华硕主板“USB Devices Over Current Status Detected!”
- java简述会话对象的生命周期_简述Java Web三大作用域对象
- linux使用技巧教程,你不知道的 Linux 使用技巧
- ipython怎么安装numpy_在TensorFlow教程中安装numpy后仍然无法导入
- c++ stack 遍历_python实现二叉树的遍历以及其他基本操作
- 常用电子接口大全,遇到不认识的,就翻出来对照辨认!
- C++虽不会过时,但是真的难啊!
- HDLBits答案(3)_Verilog模块的例化与调用