最近项目中需要更新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打包和集成相关推荐

  1. Android中关于aar的一些知识

    Android中关于aar的一些知识 Android中的aar主要是针对于Android Library而言的,可以简单的理解为是对Android Library的打包,这个包的格式为.aar.首先说 ...

  2. android开发 Gradle多渠道打包以及集成360加固

    先上图 先说实现的目的 主要是 用脚本做渠道打包 然后在APP里面添加数据 在启动时读取数据上传服务器做统计 然后为啥要这么做:第一个是因为APP里面在做渠道包的时候 需要加特定的东西,区别这些APP ...

  3. android中的多渠道打包,Android 多渠道打包简析

    前言 为了更好的统计每个来源的下载量,当我们项目打包的时候,需要打出不同渠道的包.如何打多渠道包?新一代构建工具gradle,其中的一大优势就是支持多渠道,多Apk打包. Gradle的基础概念 fl ...

  4. android 中system 如何打包编译生成的

    android 环境下执行make -j8  生成 system.img 镜像调用的脚本流程 ====> 最后调用这个工具 mkuserimg_mke2fs 工具做文件系统 工具的源码

  5. gmail账户_Android中的Google帐户集成–使用Gmail登录

    gmail账户 你好朋友, 这是我的文章,内容是Google帐户与您的应用程序集成,使用gmail登录,使用Google帐户注册. 以下是一些重要的步骤- 第1步-创建一个新项目,例如GooglePr ...

  6. Android Studio中架包打包和依赖冲突解决

    一.为什么使用aar打包,而不是jar 随着Android Studio的使用越来越广泛,使用aar打包这种方式也越来越可行实际. jar打包只打源代码,像资源文件不会打包,而aar恰恰是jar打包的 ...

  7. Android中集成第三方库的方法和问题

    Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...

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

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

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

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

最新文章

  1. 通过APNIC获取各运营商IP网段
  2. 双边分支网络:兼顾特征和分类的长尾问题解决方案
  3. linux系统下定时备份,在Linux系统中简单地实现定时备份的方法 -电脑资料
  4. java将字符串转小写转大写字母_输入一个字符串,将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字...
  5. int main ( int argc, char** argv )的说明
  6. Hybrid Astar 算法剖析和实现(五)
  7. 2020 智慧城市解决方案(智慧城市系统及相关技术)
  8. linux查看ftp默认端口,linux系统如何修改ftp默认端口(图文)
  9. 低功耗技术——低功耗中使用的特殊单元
  10. 如何通过低代码平台搭建以“督办”为中心的办公管理系统
  11. 动环监控系统中B接口的实现
  12. 怎么把PDF分割成几个文件?分享几种分割方法
  13. 充电宝买哪种比较好?评价最好的充电宝推荐
  14. Pytorch混合精度训练
  15. NAS网络存储中使用Docker安装百度网盘客户端教程
  16. python爬虫入门教程(三):淘女郎爬虫 ( 接口解析 | 图片下载 )
  17. 从HEVC到VVC:帧内预测技术的演进(2) – 多划分及多参考行帧内预测
  18. 高等数学——二重积分
  19. dnf从0开始写辅助
  20. python 几行代码生成动态表情包(生成gif动图)

热门文章

  1. oracle 查看表结构
  2. Windows 远程时提示 CredSSP 加密数据库修正 问题的解决
  3. Android NFC标签 开发深度解析 触碰的艺术
  4. Navicat Premium 12.1.20.0安装与激活
  5. php 防止注入函数,php 防止SQL注入函数
  6. java option请求_面试官:说说你对 options 请求的理解
  7. 3,4,5,6-四(9-咔唑基)-邻苯二腈,4CzPN cas:1416881-51-0光伏材料,齐岳定制
  8. 一部笔记本电脑如何打开隐藏热点(宽带拨号)
  9. java contains 效率_字符串中判断存在的几种模式和效率(string.contains、string.IndexOf、Regex.Match)...
  10. 使用C#开发HTTP服务器系列之更简单的实现方式