将项目打包为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依赖操作相关推荐

  1. Android 打包aar包含第三方aar 实践

    Android 打包aar包含第三方aar 因项目需要,打包aar包含第三方aar,如果直接对module进行打包会产生一些问题. * What went wrong: Direct local .a ...

  2. Android 打包 aar文件的流程以及aar的引用

    打包aar 分为原项目打包成aar 和新建module 打包成aar 1 原项目打包成aar 文件 需要把项目先变成库 把apply plugin: 'com.android.application' ...

  3. 最笨的解决android打包aar中引入远程依赖资源加载不到的问题

    为了功能模块化和功能的复用,我们可以把具体的模块封装成库,做成.aar文件供别人项目使用,但是在开发library的时候可能会用到其他第三方的库,一般我们会在library的gradle文件中进行添加 ...

  4. android打包aar包含三方库和三方aar

    前段时间做安卓SDK开发,其中我们的SDK里集成了支付宝的人脸认证SDK,现在说一说怎样解决将三方SDK和三方引入库一起打包进SDK. 1. 修改app下的bulid gradle文件: 把apply ...

  5. android 打包aar,和引入aar

    一:先把项目修改为 "library" 修改app下的build.gradle中的 "apply plugin:'com.android.application' &qu ...

  6. android多个module打包aar,Android 多 Module 合并打包 AAR

    通常来说,我们在项目中引入第三方 SDK 通常有下面几种方式: 添加 JAR 包文件到项目依赖(对应 Java Library): 添加 AAR 包文件到项目依赖(对应 Android Library ...

  7. android多个module打包aar,android 多module打包aar

    一.打包 aar 1.单个模块打包 打开 Gradle 工具窗口,找到 Android Library 模块. 在 build 任务中双击 assemble. 执行成功后,在 mylibrary/bu ...

  8. android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题

    android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题 为什么会用到fat-aar 如何使用 打出来的aarlib中存在多个架构,例如x86\x86_64 我在打包okhttp和 ...

  9. android studio打包aar心得

    2019独角兽企业重金招聘Python工程师标准>>> 在比较大的 Android 项目的开发中,我们经常会遇到工程.jar 包等等之间相互引用的方式.一般我们通过在 gradle ...

最新文章

  1. python之函数三装饰器
  2. 浅谈Java中的final关键字
  3. pwm调制 matlab仿真,PWM脉冲调制直流电机的simulink仿真
  4. Android开发之RadioButton位于文字右边的显示方法
  5. linux3.0-内核自带led驱动移植
  6. 第一节 9布尔运算符
  7. POJ3070 Fibonacci【矩阵快速幂】
  8. VLFeat工具箱配置
  9. html中标记pre的作用是什么,html中pre和code标签
  10. URL 编码和解码工具
  11. MSF利用pcshare控住目标主机
  12. 阿里天池大数据竞赛——口碑商家客流量预测 A1
  13. 分页查询优化方案总结
  14. Python入门:微博注销不了?python一键清空微博文章内容
  15. java模拟抛硬币_用随机数模拟抛硬币
  16. 电脑怎么自动锁定计算机,如何设置电脑,人一走开就可以自动上锁?
  17. 手机信息通知标为已读实现原理_27条iPhone苹果(附iPhoneX)手机使用技巧,你用过多少条?...
  18. 应用计算机测定线性电阻伏安特性实验结论,电路分析实验报告(电阻元件伏安特性的测量)...
  19. Word 调整段落行间距无效怎么办
  20. python通过ssh通道连接PostgreSQL数据库(mysql等类同)

热门文章

  1. android多屏应用程序,微软也尝试“多屏协同” Windows系统可以运行安卓程序
  2. jsoncpp去掉多余字符_如何处理JSON中的特殊字符
  3. 关于华硕主板“USB Devices Over Current Status Detected!”
  4. java简述会话对象的生命周期_简述Java Web三大作用域对象
  5. linux使用技巧教程,你不知道的 Linux 使用技巧
  6. ipython怎么安装numpy_在TensorFlow教程中安装numpy后仍然无法导入
  7. c++ stack 遍历_python实现二叉树的遍历以及其他基本操作
  8. 常用电子接口大全,遇到不认识的,就翻出来对照辨认!
  9. C++虽不会过时,但是真的难啊!
  10. HDLBits答案(3)_Verilog模块的例化与调用