【问题标题】:Can't remove dependency from build.gradle? (assert pluginDirectory.exists())无法从 build.gradle 中删除依赖项? (断言 pluginDirectory.exists())
【发布时间】:2020-07-22 07:36:23
【问题描述】:

我有一个 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,而新项目是我创建的repo(从github克隆项目)。


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

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

【问题讨论】:

    标签: android flutter gradle


    【解决方案1】:
     implementation fileTree(dir: 'old_project/android/src/main', include: ['*.jar'])
    

    你可以这样删除本地的jar/module

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

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

    现在

    include ':app', ':viewpagerdotsindicator'
    

    最后,Invalidate Caches/Restart

    【讨论】:

    • 对不起,我忘了说我试过了,但它实际上是在点击applyok后重新添加的
    • @BenButterworth 好吧,删除 Gradle 文件夹并清理-重建-重新启动
    • 感谢您的帮助,但我一直只有include ':app'
    • 您的帮助很有帮助,因为我查看了 settings.gradle 并找到了 apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"。现在我在看那里
    • @BenButterworth 现在继续
    【解决方案2】:

    我想从 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'])
    

    相反,您应该 fork 存储库,并将项目的本地路径添加到 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 忽略,所以我花了很长时间才找到它。

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 2020-12-25
      • 1970-01-01
      • 2019-11-13
      • 2015-06-18
      • 1970-01-01
      • 2019-05-18
      • 2011-12-05
      • 2014-03-16
      相关资源
      最近更新 更多