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

这篇具有很好参考价值的文章主要介绍了android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么会用到fat-aar

需要把有个模块打包成aar,直接打包的话,模块中引用的jar、aar、第三方依赖库都不会打包进去。直接生成的aar缺少内部引用的以来,所以要用到fat-aar来把模块中用到的依赖也打包进去。

如何使用

1.首先在项目的gradle加入

classpath 'com.github.kezong:fat-aar:1.3.8'

2.在repositories加入

flatDir {
            dirs 'libs'
        }

com.kezong:fat-aar,android,fat-aar
3. 在需要打包aar的build.gradle中加入

apply plugin: 'com.kezong.fat-aar'

4.第三方库需要把依赖implementation改为embed,例如:

implementation('com.squareup.okhttp3:okhttp:4.11.0')
改为:
embed('com.squareup.okhttp3:okhttp:4.11.0')
  1. 本地的aar引入,例如:
implementation files("libs/xxx.aar")
改为:
embed(name: 'animplayer', ext: 'aar')
//需要加上这个
compileOnly fileTree(dir: 'libs', include: ['*.jar', '*.aar'])

打出来的aarlib中存在多个架构,例如x86\x86_64

我们不需要这些so库的话可以过滤掉
在需要打包的模块build中加入要过滤的so

android{
		//不需要把这些架构打进去
        packagingOptions {
            exclude 'lib/x86/*.so'
            exclude 'lib/x86_64/*.so'
        }
}

我在打包okhttp和retrofit的时候遇到的问题

我通过这种方式去把okhttp和retrofit打包打aar

embed('com.squareup.okhttp3:okhttp:4.11.0')
embed('com.squareup.okio:okio:3.2.0')
embed('com.squareup.retrofit2:retrofit:2.9.0')
embed('com.squareup.retrofit2:converter-gson:2.9.0')

打包过程中没遇到任何问题,但是在使用的时候却崩溃了。
通过排查定位发现是okhttp依赖了okio,retrofit依赖了google的gson
但是打包aar的时候并没有打包进去
com.kezong:fat-aar,android,fat-aar

我看fat-aar官网是有说明的:

如果你想将所有远程依赖在pom中声明的依赖项同时打入在最终产物里的话,你需要在build.gradle中将transitive值改为true,例如:
fataar {
transitive = true
}
官网链接可以自己看一下

我加了这个照样没有生效。

解决办法
只好自己把这两个以来手动添加,更改后的代码为:

		//okhttp3 依赖了okio
        embed('com.squareup.okhttp3:okhttp:4.11.0')
        embed('com.squareup.okio:okio:3.2.0')
        embed('com.squareup.okhttp3:logging-interceptor:4.11.0')
        //retrofit 依赖了gson
        embed('com.squareup.retrofit2:retrofit:2.9.0')
        embed('com.squareup.retrofit2:converter-gson:2.9.0')
        embed('com.google.code.gson:gson:2.8.5')

你遇到其他问题怎么处理?

我这里只是遇到了这个问题,如果你使用其他依赖有问题,可以看看是否依赖里的依赖没有打进去,可以查看一下aar里面的依赖库,然后跟自己项目依赖树做一下对比,看看有没有缺少库。

欢迎评论,我可以在文章中加上有问题的库文章来源地址https://www.toymoban.com/news/detail-608599.html

到了这里,关于android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 031-安全开发-JS应用&WebPack打包器&第三方库JQuery&安装使用&安全检测

    1、三方库-JQuery-使用安全 2、打包器-WebPack-使用安全 演示案例: ➢打包器-WebPack-使用安全 ➢第三方库-JQuery-使用安全 创建WebPack,并创建目录src在目录下创建1.js 2.js 1.js 2.js 在创建index.html 由于js相互依赖的顺序不同,造成无法执行 ; 使用 Webpack 的主要原因: 模块化支持 :

    2024年02月22日
    浏览(52)
  • Day31:安全开发-JS应用&WebPack打包器&第三方库JQuery&安装使用&安全检测

    目录 打包器-WebPack-使用安全 第三方库-JQuery-使用安全 思维导图 JS知识点: 功能:登录验证,文件操作, SQL 操作,云应用接入,框架开发,打包器使用等 技术:原生开发, DOM ,常见库使用,框架开发( Vue , NodeJS ),打包器 ( Webpack ) 等 安全:原生开发安全, NodeJS 安全,

    2024年03月14日
    浏览(52)
  • Android Studio连接使用第三方模拟器

           使用Android Studio自带的模拟器,第一会比较卡,第二配置容易出错,第三,自带的模拟器很吃电脑配置。如果电脑配置较差,会比较耽误事。所以为例解决上面三个问题,可以在电脑上按照第三方手机模拟器,例如:夜神模拟器、雷电模拟器、MUMU模拟器等等,不管是

    2024年01月15日
    浏览(46)
  • 【Android Studio】第三方库 图表(MPAndroidChart)使用

    项目目录-app-build.gradle 项目目录-app-setting.gradle ​ 该类是图表的控件,类似于按键、图片,是从 xml 文件中通过 id 获取到的。 获取/创建 常用方法 方法名 描述 chart.setDrawBorders( boolean ) 是否显示图表边界,true:显示,默认 false chart.setScaleEnabled( boolean ) 是否使能缩放,true:使

    2024年02月06日
    浏览(58)
  • Android Studio打包AAR

    依赖的Android Studio版本为4.2.2 更高的Android Studio版本使用方法可能有所不同,gradle的版本和gradle plugins的版本都会影响使用方式。 基于此,本文只能作为参考,而不能作为唯一答案,如果要完全依赖本文,则Android Studio版本也需要安装成4.2.2. Android AAR文件是Android Archive文件的缩

    2024年02月04日
    浏览(53)
  • Android修改aar并重新打包

    目录 一.修改 aar 需要用到的工具(就一个工具,使用方式非常简单,别担心) 二.修改 aar 代码层业务逻辑 三.修改 aar layout 布局文件 四.附上recyclerview aar修改工程源码 注:(下面工具,点击名称可进入下载链接,如果链接失效,请百度搜索下载) Bandizip ,一款非常好用的解

    2024年02月15日
    浏览(34)
  • Android 源码修改,使第三方应用可以直接使用su命令

        在android原生系统中,只有root权限和shell权限下才可以使用su命令,虽然在userdebug模式下编译的系统镜像有自带的su文件,但是第三方应用却无法使用。于是在这种场景下,有两种方式可以实现第三方应用使用su命令。     1.修改原来的su相关的源码(所有的应用都可以使用

    2024年02月09日
    浏览(56)
  • android sdk打包aar方案步骤

    第一步:添加以下代码到你工程根目录下的 build.gradle 文件中: For Maven Central (The lastest release is available on Maven Central): 第二步: Add plugin 添加以下代码到你的sdk所在library的 build.gradle 中: 第三步: Embed dependencies embed 你所需要的工程, 用法类似 implementation 代码所示: 第四步: 执行

    2024年02月12日
    浏览(39)
  • 【Android中如何打包Jar、aar文件】

    本文讲解在安卓中如何自己打包Jar、aar文件。 新建Library Library名字自己随意取哈,这里本人取testLibrary。 添加配置 在所有类或API封装完成后就是开始添加配置进行jar或aar打包的配置了。 注意这里,名字是自己可以随意取的。 OK,这里添加配置重新构建结束开始第三步。 在

    2024年02月12日
    浏览(49)
  • 安全开发-JS应用&NodeJS指南&原型链污染&Express框架&功能实现&审计&WebPack打包器&第三方库JQuery&安装使用&安全检测

    Node.js是运行在服务端的JavaScript 文档参考:https://www.w3cschool.cn/nodejs/ Nodejs安装:https://nodejs.org/en 三方库安装 express:Express是一个简洁而灵活的node.js Web应用框架 body-parser:node.js中间件,用于处理 JSON, Raw, Text和URL编码的数据。 cookie-parser:这就是一个解析Cookie的工具。通过re

    2024年02月11日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包