一、打包 aar

1、单个模块打包

打开 Gradle 工具窗口,找到 Android Library 模块. 在 build 任务中双击 assemble.

执行成功后,在 mylibrary/build/outputs/aar 目录下找到 aar 包.

默认 Debug 和 Release 的 AAR 包都会打出来,当然你也可以选择只打 Debug 的包,双击 assembleDebug 任务就可以了. 只打 Release 的包同理.

2、多个模块打包

当要打包的模块又依赖了其它几个模块时,常常需要把它们打包成一个 aar。多模块打包使用 fat-aar(https://github.com/adwiv/android-fat-aar),

打包关键步骤如下:

将下载好的 fat-aar.gradle 文件添加到对应的模块目录中,

并在 build.gradle中引入 apply from: ‘fat-aar.gradle’。

或直接引用

1

apply from: 'https://raw.githubusercontent.com/adwiv/android-fat-aar/master/fat-aar.gradle'

添加要打包的工程,使用 embedded 关键字。示例代码如下:

12345678

apply from: 'fat-aar.gradle'

dependencies {

...

embedded project(':DynamicPageLibrary')

embedded project(':VideoPlayerLib')

embedded project(':AudioPlayLibrary')

embedded project(':BaseCloudMusicResource')

}

1

步骤同上《单个模块打包》一致。

问题1:部分依赖没有打包进去

升级到 Android Studio 2.3 后,Gradle Plugin 也升级到 2.3.0,对应推荐使用的 Gradle 版本是 3.3。

这时候会发现项目目录下 {module name}/build/intermediates/exploded-aar/ 目录没了,经过一番查找,发现这并不是一个 Bug,是官方刻意为之,它会在 {user name}/.android/build-cache 下生成一部分缓存文件,来代替 exploded-aar ,如果需要生成它,可以配置项目目录下的 gradle.properties ,添加一行内容:

1

android.enableBuildCache=false

然后重建项目即可在 {module name}/build/intermediates/ 看到 exploded-aar 目录了。

想重新开启 BuildCache 功能,可以修改为 android.enableBuildCache=true 或者直接删除本行内容即可。

https://blog.csdn.net/ys743276112/article/details/62235542

问题2: The prefix “tools” for attribute “tools:overrideLibrary” associated with an element type “uses-sdk” is not bound.

问题通常是由插件引起的。 从项目插件中findAndroidManifest.xml,打开它,然后在

下添加

12

xmlns:tools="http://schemas.android.com/tools"

问题3:编译运行之后就报异常NoClassDefFoundError: android.support.v7.recyclerview.R$styleable

重新引入依赖

提取RecyclerView的classes.jar,把这个jar包放到项目中的libs文件下即可。

这个jar包就是RecyclerView要使用的,

可以给它改个名字例如android-support-v7-recyclerview.jar

https://blog.csdn.net/jtahz1_23/article/details/50569588

二、引入 aar

方法一、通过 libs 引入到 app 中

把 aar 文件放在 libs 目录下

在 app 的 build.gradle 中添加如下内容

12345

repositories {

flatDir {

dirs 'libs'

}

}

之后通过如下方式引入

123

dependencies {

compile(name:'test', ext:'aar')

}

Rebuild project

如果发现引入后无法使用,重启 Android studio

方法二、把 aar 作为一个库工程的方式引入

当项目中库工程较多且依赖关系比较复杂时,最好采用这一种方式。

如:某一个库工程也要引入这个 aar 时。

12345

菜单栏 -> File -> New -> New Module

-> Import .Jar/.AAR Package

-> Next

-> 选择 File name 的文件 -> Subproject name 命名工程

-> Finish

创建完成后是一个工程,工程中包括 aar 文件和 build.gradle 文件。build.gradle文件内容如下:

12

configurations.create("default")

artifacts.add("default", file('musiclibrary_20170622.aar'))

android多个module打包aar,android 多module打包aar相关推荐

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

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

  2. 【Android】google plus、Facebook登陆sdk集成打包出aar的使用步骤

    本篇旨在记录aar包的使用步骤(关于aar的打包方法,如果有人需要的话我侯敏敏再补一篇): [arr打包方法:基本思路:在Android Studio中选择file-New Module-Androi ...

  3. android打包诸多so成一个aar并调用aar中的so流程总结

    今天遇到一个需求,需要把项目中的诸多的so封装成一个aar,直接使用这个aar进行调用,因为诸多的so看起来太多了,不太好管理,封装成一个aar也变相的达到了加密的效果. 文章目录 打包aar流程 第 ...

  4. android服务器打包jar,Android Studio打包apk,aar,jar包方法

    文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java ...

  5. android studio方法的调用树,Android Studio 多层级 Module 对 aar 引用问题解决方法

    最近碰到这么个恶心的问题 问题:有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生错误,Module B找不到aar文件.(同时如果又有Mo ...

  6. AS 导出aar给Unity出打包出现Unable to merge android manifests

    @AS 导出aar给Unity出打包出现Unable to merge android manifests在android 导出aar出现Unable to merge android manifes ...

  7. 一个android工程生成两个aar,android studio生成aar包并在其他工程引用aar包(示例代码)...

    1.aar包是android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...

  8. android studio 打包慢,[Android Studio系列(三)]Android Studio 编译、同步慢的解决方法

    1 问题 (1) 当项目中引用的第三方模块太多,打开Android Studio的时候就会非常慢,提示一直在解决模块依赖,点击sync按钮同步第三方代码的时候也是巨慢,慢的原因是: 在gradle中引 ...

  9. Android Studio下项目构建的Gradle配置及打包应用变体

    Gradle简介   Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.具有语法简洁.可读性强.配置灵活等特点. ...

最新文章

  1. 深入浅出理解c++虚函数
  2. Django_ORM数据表查询总结
  3. Restful API 设计规范实战
  4. 中的 隐藏鼠标菜单_如何在鼠标右键菜单中添加自定义菜单?工效率提升一倍...
  5. qchart 坐标轴设置_实战PyQt5: 156-QChart图表之更换图表主题
  6. Class类中的getEnclosingXX、getDeclaredXX
  7. 【计算机网络复习 数据链路层】3.5.1 信道划分介质访问控制
  8. Visual Studio Code 11 月 Python 扩展更新
  9. 5种获取RSS全文输出的方法
  10. python运维自动化开发12期_Python自动化运维之12、面向对象进阶
  11. 广告学计算机平面设计(1)形考5,(更新版)国家开放大学电大专科《计算机平面设计(2)》网络课形考任务1-5答案.doc...
  12. hdp ambari Confirm Hosts 部署错误问题
  13. 网络安全-点击劫持(ClickJacking)的原理、攻击及防御
  14. 爬虫练习-爬取拉勾网招聘信息(2020.2.2)
  15. Rate This Topic
  16. 2017中兴算法挑战赛(迪杰斯特拉)
  17. xv6-lab2-syscall
  18. mac 开机启动php,mac系统,php-fpm加入开机启动项
  19. trs java_trs常见问题 - This Is A FineDay - BlogJava
  20. Vlookup函数和Sumif函数详解

热门文章

  1. 【怎样制作ppt课件】Focusky教程 | 设置插入的视频循环播放
  2. SMP,UMA,NUMA,MPP的概念理解
  3. 微信浏览器video标签没有封面_video 标签在微信浏览器的问题解决方法
  4. 码距与检错错位数、纠错位数的关系
  5. 1.TCL/TK脚本学习——入门基础
  6. 8月第四周回顾:四核产品将发口角先起 AMD遭遇跳票流言
  7. 全球变化生态学尔雅课答案
  8. php30 罗马仕_再也不信罗马仕移动电源了!真是个大坑。。。
  9. 乐max2魔趣android7.0,乐视Max2 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
  10. JAVA入门Hwork,HBase Java编程入门教程