最笨的解决android打包aar中引入远程依赖资源加载不到的问题

为了功能模块化和功能的复用,我们可以把具体的模块封装成库,做成.aar文件供别人项目使用,但是在开发library的时候可能会用到其他第三方的库,一般我们会在library的gradle文件中进行添加依赖,但是在将library制作成.aar供其他的项目使用的时候,如果用到第三方远程库里面的资源会报错,找不到。

业务场景

  • myapp 依赖于mylibrary-release.aar
  • library-release.aar又依赖于xxx-第三方
  • 当myapp使用xxx-第三方第三方的时候会出现资源找不到而崩溃
    在这里插入图片描述

具体操作如下

1、 创建一个myapp测试项目
2、然后new Module创建一个library;
3、 library在开发的时候依赖第三方远程库 thirdLib

implementation 'xxx.xxx:thirdLib'

4、 library中功能写完了可以打包成 library-release.aar供别人使用,aar打包方法
5、myapp中使用library-release.aar,首先将library-release.aar复制到app的libs目录下,然后再app的gradle文件中做如下配置

android {
   。。。。
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}
dependencies {
    //自定义库
    compile(name: 'library-release', ext: "aar")
}

6、做完以上配置就可以run app到手机上进行验证library中的内容是否可用;会发现library中基础功能界面是没问题的,但是当涉及到thirdLib中的内容的时候就包资源找不到崩溃(比如thirdLib是调用扫码功能)

解决方案

将thirdLib的依赖同样的放到app的gradle中,如下

android {
   。。。。
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}
dependencies {
    //自定义库
    compile(name: 'library-release', ext: "aar")
    //第三方依赖
    implementation 'xxx.xxx:thirdLib'
}

这么配置了重新打包运行,就能找到thirdLib的资源了,(比如扫码功能就可以正常使用了)

与一番三

要是有n个第三方也是同样的操作;其实不依赖远程库,将远程库做成.aar供library使用也是同样的套路;不足就是应用的地方重复太多,给别人使用不怎么方便,得提供对应的配置文档,如果有更好的方式可以交流。所以我这是最笨的方式哦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android开发,如果在打aar时遇到远程依赖打不进去的情况,可能是由于以下几个原因导致的: 1. 依赖版本不兼容:可能是依赖的版本与Android项目其他组件的版本不兼容。在使用远程依赖时,需要确保依赖的版本号与项目其他组件的版本号相匹配,否则可能会导致打aar时无法成功引入依赖。 2. 依赖声明错误:在使用远程依赖时,需要在项目的build.gradle文件正确声明依赖。如果依赖声明错误,编译时会出现错误,无法成功引入依赖。 3. 依赖缺失或地址错误:如果在打aar时遇到依赖打不进去的情况,可能是由于依赖远程不存在或地址错误导致的。需要确保依赖远程可用,并且使用正确的地址进行引入解决这个问题的方法可以尝试以下几个步骤: 1. 检查依赖版本:确保依赖的版本与项目其他组件的版本兼容,并且使用正确的版本号进行引入。 2. 核对依赖声明:在项目的build.gradle文件检查依赖的声明,确保格式正确、不存在错误,并且没有其他冲突的依赖项。 3. 检查依赖地址:确认依赖远程存在,并且使用正确的地址进行引入。可以尝试手动下载依赖并将其放置在项目的libs目录下,然后在build.gradle文件引入本地依赖。 如果仍然无法解决问题,可以尝试联系依赖的维护者或者查看相关文档和社区进行更详细的咨询和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值