问题的起因是我的Flutter软件引用了本地的库(OtherModule的aar文件)。
在Android目录下的构建是
RootDirectory/
├── CurrentProject/
│ ├── app/
│ │ └── build.gradle
│ └── settings.gradle
└── OtherModule/
└── build.gradle
└──android
└──Libs
└──OtherModule1.aar
└──OtherModule2.aar
本来在老版本中OtherModule的build.gradle中
repositories {
flatDir {
dirs project(':OtherModule').file('libs')
}
}
...
implementation(name: 'OtherModule1.aar', ext: 'aar')
implementation(name: 'OtherModule2.aar', ext: 'aar')
这样引用没有问题 但是随着版本更新报错
WARNING: Using flatDir should be avoided because it doesn't support any meta-data formats.
为了解决这个问题 我修改了OtherModule的build.gradle中的内容
sourceSets {
main {
jniLibs.srcDirs += project(':OtherModule').file('libs')
}
}
...
implementation(files("libs/OtherModule1.aar"))
implementation(files("libs/OtherModule2.aar"))
引起了
Execution failed for task ':OtherModule:bundleDebugLocalLintAar'.
> Error while evaluating property 'hasLocalAarDeps' of task ':OtherModule:bundleDebugLocalLintAar'.
> Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting AAR. Previous versions of the Android Gradle Plugin produce broken AARs in this case too (despite not throwing this error). The following direct local .aar file dependencies of the :OtherModule project caused this error ....
为了解决这个问题我又将引用的地方修改成了
compileOnly(files("libs/OtherModule1.aar"))
compileOnly(files("libs/OtherModule2.aar"))
虽然不报错了 但是编译之后OtherModule1.aar,OtherModule2.aar的引用并不能使用了。。
原因应该是 使用compileOnly的时候 没有参与编译到APK中。。所以编译成功的APK不能使用了。
我需要怎么解决这些问题?
如果可以尽量写详细一些。。我没修改过build.gradle相关的编译文件。。不太了解他们直接的构造关系。