无法从build.gradle中删除依赖项? (断言pluginDirectory.exists())

时间:2020-07-22 07:36:23

标签: android flutter gradle

我有一个build.gradle,并且之前已添加但后来替换了一个依赖项:

dependencies {
    ...
    // I WANT THIS
    implementation fileTree(dir: 'new_project/android/src/main', include: ['*.jar'])
    // I dont want this
    //    implementation fileTree(dir: 'old_project/android/src/main', include: ['*.jar'])
}

但是Gradle(使用6.1.1)已经缓存了旧的依赖项,并且即使在找不到旧的依赖项(即使在同步并重新导入gradle项目之后)也不想将其替换为我的新依赖项(我删除了old_project),所以它给了我

Cause: assert pluginDirectory.exists()
       |               |
       |               false
       old_project/android

我什至在任何项目代码中都找不到这个assert代码,所以我不知道该怎么办。

我也试图从项目设置中删除该模块,但是当我按下“设置”窗口的“应用”或“确定”时,Android Studio重新添加了该模块。


我正在尝试使用经过改进的flutter存储库,而old_project实际上是/usr/local/flutter/.pub-cache/hosted/pub.dartlang.org/camera-0.5.8+2,而新项目是我创建的存储库(从github克隆项目)。


事实证明,Flutter正在读取最初创建的文件:

def moduleProjectRoot = project(':flutter').projectDir.parentFile.parentFile
def pluginsFile = new File(moduleProjectRoot, '.flutter-plugins-dependencies')

2 个答案:

答案 0 :(得分:2)

 implementation fileTree(dir: 'old_project/android/src/main', include: ['*.jar'])

您可以通过这种方式删除本地 jar/module

enter image description here

仅供参考-您可以打开Gradle下的 settings.gradle 并删除特定的模块。如果您要删除 ':library' ,则

OLD

include ':app', ':library', ':viewpagerdotsindicator'

现在

include ':app', ':viewpagerdotsindicator'

最后, Invalidate Caches/Restart

答案 1 :(得分:0)

我想从Flutter插件中修改外部Java / Kotlin代码,并使用app/build.gradle使用

直接导入其代码。
 implementation fileTree(dir: '/usr/local/flutter/.pub-cache/hosted/pub.dartlang.org/camera-0.5.8+2/android/src/main', include: ['*.jar'])

相反,您应该派生存储库,并将项目的本地路径添加到pubspec.yaml

  # No longer using the remote version commented below
  # camera: ^0.5.8+2
  camera:
    path: '/path/to/repo/plugins/packages/camera'

旧答案,在我意识到fileTree没有做任何事情之前:在您的项目中,rm .flutter-plugins-dependencies

从您的Android Studio文件夹rm ../.flutter-plugins-dependencies

为什么?:添加这些插件时,Flutter在Flutter项目文件夹中创建了.flutter-plugins-dependencies,而不是android子文件夹。因为它是上一级的(不是Android Studio中的),并且被.gitignore忽略了,所以花了很长时间才找到它。