概述:
最近在做一个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:.]

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐