概述:
最近在做一个Flutter的插件开发,需要在android及ios原生中集成sdk,然后Flutter通过插件调用sdk的方法。这其中涉及到aar包的集成,虽然是Flutter的插件开发,但是关于android原生的aar包集成还是差不多的,按照正常的aar包集成流程操作,本以为很顺利,但是却出现了这个问题:
这个问题非常奇怪:aar资源包引用是成功的,也能识别到对应的资源文件。但是就在gradle编译的时候一直出现这个问题。
问题分析:
开始的时候,怀疑是目录不对、引用不正确等等,但是后面发现,添加依赖之后,本地的资源库是可以看到文件的,所以这个原因也就不存在。
后面,通过各种帖子了解到:
@aar 本身就是一种library Module,直接作用在
apply plugin:'com.android.application'中
在Flutter插件开发的android目录下的gradle.build文件中,插件表示的是:apply plugin: ‘com.android.library’,所以找不到
因此,就能得到解决方法
解决方案:
1、 在Project 下的 build.gradle 中的 repositories 中添加相应的引用如下:
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
/**子模块含有aar:添加全局引用*/
flatDir {
// 由于Flutter插件 module中引用了 aar,
// 其他工程编译时会报错,所以需要在所有工程的repositories
// 下把Library module中的libs目录添加到依赖关系中
dirs project(':xxx').file('libs')
//注意:project后面是aar包的模块名
}
}
}
2、在app 的build.gradle文件中加入如下一段:
/**子模块含有aar*/
repositories {
flatDir {
dirs 'libs','../xxx/libs' // xxx也是代表aar所在的libs目录的模块名称
}
}
总结:
我是采用了方案1解决了问题。同时也很感谢大神这篇帖子Android Studio多Module使用 aar 依赖包 丢包解决
参考:
疑难杂症(一)集成优酷sdk[aar] library Module 依赖,找不到aar[Could not find :YoukuPlayerOpenSDK-release:.]