android多个module打包aar,android 多module打包aar
一、打包 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相关推荐
- Android 打包 aar文件的流程以及aar的引用
打包aar 分为原项目打包成aar 和新建module 打包成aar 1 原项目打包成aar 文件 需要把项目先变成库 把apply plugin: 'com.android.application' ...
- 【Android】google plus、Facebook登陆sdk集成打包出aar的使用步骤
本篇旨在记录aar包的使用步骤(关于aar的打包方法,如果有人需要的话我侯敏敏再补一篇): [arr打包方法:基本思路:在Android Studio中选择file-New Module-Androi ...
- android打包诸多so成一个aar并调用aar中的so流程总结
今天遇到一个需求,需要把项目中的诸多的so封装成一个aar,直接使用这个aar进行调用,因为诸多的so看起来太多了,不太好管理,封装成一个aar也变相的达到了加密的效果. 文章目录 打包aar流程 第 ...
- android服务器打包jar,Android Studio打包apk,aar,jar包方法
文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java ...
- android studio方法的调用树,Android Studio 多层级 Module 对 aar 引用问题解决方法
最近碰到这么个恶心的问题 问题:有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生错误,Module B找不到aar文件.(同时如果又有Mo ...
- AS 导出aar给Unity出打包出现Unable to merge android manifests
@AS 导出aar给Unity出打包出现Unable to merge android manifests在android 导出aar出现Unable to merge android manifes ...
- 一个android工程生成两个aar,android studio生成aar包并在其他工程引用aar包(示例代码)...
1.aar包是android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...
- android studio 打包慢,[Android Studio系列(三)]Android Studio 编译、同步慢的解决方法
1 问题 (1) 当项目中引用的第三方模块太多,打开Android Studio的时候就会非常慢,提示一直在解决模块依赖,点击sync按钮同步第三方代码的时候也是巨慢,慢的原因是: 在gradle中引 ...
- Android Studio下项目构建的Gradle配置及打包应用变体
Gradle简介 Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.具有语法简洁.可读性强.配置灵活等特点. ...
最新文章
- 深入浅出理解c++虚函数
- Django_ORM数据表查询总结
- Restful API 设计规范实战
- 中的 隐藏鼠标菜单_如何在鼠标右键菜单中添加自定义菜单?工效率提升一倍...
- qchart 坐标轴设置_实战PyQt5: 156-QChart图表之更换图表主题
- Class类中的getEnclosingXX、getDeclaredXX
- 【计算机网络复习 数据链路层】3.5.1 信道划分介质访问控制
- Visual Studio Code 11 月 Python 扩展更新
- 5种获取RSS全文输出的方法
- python运维自动化开发12期_Python自动化运维之12、面向对象进阶
- 广告学计算机平面设计(1)形考5,(更新版)国家开放大学电大专科《计算机平面设计(2)》网络课形考任务1-5答案.doc...
- hdp ambari Confirm Hosts 部署错误问题
- 网络安全-点击劫持(ClickJacking)的原理、攻击及防御
- 爬虫练习-爬取拉勾网招聘信息(2020.2.2)
- Rate This Topic
- 2017中兴算法挑战赛(迪杰斯特拉)
- xv6-lab2-syscall
- mac 开机启动php,mac系统,php-fpm加入开机启动项
- trs java_trs常见问题 - This Is A FineDay - BlogJava
- Vlookup函数和Sumif函数详解
热门文章
- 【怎样制作ppt课件】Focusky教程 | 设置插入的视频循环播放
- SMP,UMA,NUMA,MPP的概念理解
- 微信浏览器video标签没有封面_video 标签在微信浏览器的问题解决方法
- 码距与检错错位数、纠错位数的关系
- 1.TCL/TK脚本学习——入门基础
- 8月第四周回顾:四核产品将发口角先起 AMD遭遇跳票流言
- 全球变化生态学尔雅课答案
- php30 罗马仕_再也不信罗马仕移动电源了!真是个大坑。。。
- 乐max2魔趣android7.0,乐视Max2 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
- JAVA入门Hwork,HBase Java编程入门教程