Android中关于aar打包和集成
最近项目中需要更新sdk版本,基础库moudle B 依赖sdk版本。更新sdk版本的话->需要替换B中的sdk并将B打包成aar集成到主项目A中,原以为很easy的事情结果修改后运行项目一直报错“ java.lang.NoSuchMethodError:No virtual method xxx”。但sdk版本是有这个方法的呢,编译也未报错,尝试了清除缓存等方法后还是报错,不明白为什么运行后打开app就会闪退报错呢。后来定位到因为aar包对应的B中的sdk是放在lib下的,打包成aar但对应的B中的lib也需要放到主项目A中的lib下,否则就会报错方法找不到。
那为什么打包后的aar包不包括aar对应的moudle B下的lib文件呢?
这篇文章是为了解决自己的这个疑问做一个学习。
aar打包
命令:./gradlew :moubleName:assembleRelease
会在moudleName/build/outputs/aar下生成对应的aar文件
引用aar包
将生成的aar文件放在主工程项目下的libs下
repositories {flatDir{ dirs 'libs' }
}compile(name: 'aar_name', ext: 'aar')
运行项目
成功运行项目,但如果aar对应的moudle依赖了其他第三方库或其他aar文件时,当涉及到moudle中的内容的时候就报错“ java.lang.NoSuchMethodError:No virtual method xxx”,可以打开打包后的aar查看,可以看出来是没有第三方库或其他aar文件相关内容。
原因在于打包aar只是单纯的引用moudle中的class和资源,对于需要的第三方依赖是没有引入到aar中的。
解决办法如下:
1、对于moudle中依赖的第三方库,在主工程中gradle中重新引入依赖 。
2、需要将moudle上传本地或远程的maven仓库,然后在项目中引用。
原因:生成的maven仓库的pom文件包含了依赖的所以信息,当使用生成的仓库使用,则可以自动的拉取下来所需的aar文件和相关依赖。
参考
https://blog.csdn.net/yoonerloop/article/details/113357411#:~:text=Android%E9%80%9A,%E4%BE%9B%E7%BB%99%E7%AC%AC%E4%B8%89%E6%96%B9%E4%BD%BF%E7%94%A8%E3%80%82
https://www.jianshu.com/p/340b69ebb6bf
Android中关于aar打包和集成相关推荐
- Android中关于aar的一些知识
Android中关于aar的一些知识 Android中的aar主要是针对于Android Library而言的,可以简单的理解为是对Android Library的打包,这个包的格式为.aar.首先说 ...
- android开发 Gradle多渠道打包以及集成360加固
先上图 先说实现的目的 主要是 用脚本做渠道打包 然后在APP里面添加数据 在启动时读取数据上传服务器做统计 然后为啥要这么做:第一个是因为APP里面在做渠道包的时候 需要加特定的东西,区别这些APP ...
- android中的多渠道打包,Android 多渠道打包简析
前言 为了更好的统计每个来源的下载量,当我们项目打包的时候,需要打出不同渠道的包.如何打多渠道包?新一代构建工具gradle,其中的一大优势就是支持多渠道,多Apk打包. Gradle的基础概念 fl ...
- android 中system 如何打包编译生成的
android 环境下执行make -j8 生成 system.img 镜像调用的脚本流程 ====> 最后调用这个工具 mkuserimg_mke2fs 工具做文件系统 工具的源码
- gmail账户_Android中的Google帐户集成–使用Gmail登录
gmail账户 你好朋友, 这是我的文章,内容是Google帐户与您的应用程序集成,使用gmail登录,使用Google帐户注册. 以下是一些重要的步骤- 第1步-创建一个新项目,例如GooglePr ...
- Android Studio中架包打包和依赖冲突解决
一.为什么使用aar打包,而不是jar 随着Android Studio的使用越来越广泛,使用aar打包这种方式也越来越可行实际. jar打包只打源代码,像资源文件不会打包,而aar恰恰是jar打包的 ...
- Android中集成第三方库的方法和问题
Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...
- android多个module打包aar,android 多module打包aar
一.打包 aar 1.单个模块打包 打开 Gradle 工具窗口,找到 Android Library 模块. 在 build 任务中双击 assemble. 执行成功后,在 mylibrary/bu ...
- android多个module打包aar,Android 多 Module 合并打包 AAR
通常来说,我们在项目中引入第三方 SDK 通常有下面几种方式: 添加 JAR 包文件到项目依赖(对应 Java Library): 添加 AAR 包文件到项目依赖(对应 Android Library ...
最新文章
- 通过APNIC获取各运营商IP网段
- 双边分支网络:兼顾特征和分类的长尾问题解决方案
- linux系统下定时备份,在Linux系统中简单地实现定时备份的方法 -电脑资料
- java将字符串转小写转大写字母_输入一个字符串,将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字...
- int main ( int argc, char** argv )的说明
- Hybrid Astar 算法剖析和实现(五)
- 2020 智慧城市解决方案(智慧城市系统及相关技术)
- linux查看ftp默认端口,linux系统如何修改ftp默认端口(图文)
- 低功耗技术——低功耗中使用的特殊单元
- 如何通过低代码平台搭建以“督办”为中心的办公管理系统
- 动环监控系统中B接口的实现
- 怎么把PDF分割成几个文件?分享几种分割方法
- 充电宝买哪种比较好?评价最好的充电宝推荐
- Pytorch混合精度训练
- NAS网络存储中使用Docker安装百度网盘客户端教程
- python爬虫入门教程(三):淘女郎爬虫 ( 接口解析 | 图片下载 )
- 从HEVC到VVC:帧内预测技术的演进(2) – 多划分及多参考行帧内预测
- 高等数学——二重积分
- dnf从0开始写辅助
- python 几行代码生成动态表情包(生成gif动图)
热门文章
- oracle 查看表结构
- Windows 远程时提示 CredSSP 加密数据库修正 问题的解决
- Android NFC标签 开发深度解析 触碰的艺术
- Navicat Premium 12.1.20.0安装与激活
- php 防止注入函数,php 防止SQL注入函数
- java option请求_面试官:说说你对 options 请求的理解
- 3,4,5,6-四(9-咔唑基)-邻苯二腈,4CzPN cas:1416881-51-0光伏材料,齐岳定制
- 一部笔记本电脑如何打开隐藏热点(宽带拨号)
- java contains 效率_字符串中判断存在的几种模式和效率(string.contains、string.IndexOf、Regex.Match)...
- 使用C#开发HTTP服务器系列之更简单的实现方式