颤抖:无法建立android apk

时间:2020-06-15 17:50:41

标签: android flutter

FAILURE: Build failed with an exception.
  • 出了什么问题: 任务':app:lintVitalRelease'的执行失败。

    无法解析配置':app:debugRuntimeClasspath'的所有工件。 无法转换libs.jar以匹配属性{artifactType = processed-jar,org.gradle.libraryelements = jar,org.gradle.usage = java-runtime}。 JetifyTransform的执行失败:E:\ AndroidStudioProjects \ FlutterProject \ EduyaariGuruFlutter \ eduyaari_guru_flutter \ build \ app \ intermediates \ flutter \ debug \ libs.jar。 无法使用Jetifier转换'E:\ AndroidStudioProjects \ FlutterProject \ EduyaariGuruFlutter \ eduyaari_guru_flutter \ build \ app \ intermediates \ flutter \ debug \ libs.jar'。原因:FileNotFoundException,消息:E:\ AndroidStudioProjects \ FlutterProject \ EduyaariGuruFlutter \ eduyaari_guru_flutter \ build \ app \ intermediates \ flutter \ debug \ libs.jar(系统找不到指定的路径)。 (使用--stacktrace运行以获取更多详细信息。) 请在http://issuetracker.google.com/issues/new?component=460323处提交错误。

  • 尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行,以获取更多日志输出。使用--scan运行以获取完整的见解。

  • https://help.gradle.org

  • 获得更多帮助

在1m 8s内失败

11 个答案:

答案 0 :(得分:28)

步骤1。flutter build apk --debug

第2步。flutter build apk --profile

第3步。flutter build apk --release

答案 1 :(得分:11)

唯一适合我的解决方案是将gradle.build降级到

{
  "scripts": {
    "dev": "npm run development",
    "dev:css": "postcss assets/css/style.css -o public/assets/css/style.css",
    "dev:sync": "browser-sync start --proxy 'localhost:3000' --files='./views/**/*.html' --no-ui --no-notify",
    "development": "cross-env NODE_ENV=development concurrently \"npm:dev:css\" \"nodemon app.js -e js,html\" \"npm:dev:sync\"",
  },
  "dependencies": {
    "concurrently": "^5.2.0",
    "express": "^4.17.1"
  },
  "devDependencies": {
    "browser-sync": "^2.26.10",
    "cross-env": "^7.0.2"
  }
}

 YError: Invalid first argument. Expected boolean or string but received function.
[dev:sync]     at argumentTypeError (C:\laragon\www\projects\startup-reporter--node\node_modules\yargs\build\lib\argsert.js:64:11)
[dev:sync]     at C:\laragon\www\projects\startup-reporter--node\node_modules\yargs\build\lib\argsert.js:45:17
[dev:sync]     at Array.forEach (<anonymous>)
[dev:sync]     at Object.argsert (C:\laragon\www\projects\startup-reporter--node\node_modules\yargs\build\lib\argsert.js:38:25)
[dev:sync]     at Object.version (C:\laragon\www\projects\startup-reporter--node\node_modules\yargs\build\lib\yargs.js:796:19)
[dev:sync]     at runFromCli (C:\laragon\www\projects\startup-reporter--node\node_modules\browser-sync\dist\bin.js:46:10)
[dev:sync]     at Object.<anonymous> (C:\laragon\www\projects\startup-reporter--node\node_modules\browser-sync\dist\bin.js:38:5)
[dev:sync]     at Module._compile (internal/modules/cjs/loader.js:776:30)
[dev:sync]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
[dev:sync]     at Module.load (internal/modules/cjs/loader.js:643:32)

并将gradle-warpper.properties更改为

dependencies {
    classpath 'com.android.tools.build:gradle:4.0.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}

 dependencies {
    classpath 'com.android.tools.build:gradle:3.5.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}

Here,您会明白为什么不应该仅在gradle上添加distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

答案 2 :(得分:6)

我找到了本案所需的解决方法,我相信它也将对您有用。

我已在android的应用程序级别OUTPUT INSERTED.ChainID 中将checkReleaseBuilds标志设置为false,如下所示:

build.gradle

Found it here

答案 3 :(得分:1)

运行这两个命令对我有用:

flutter build apk --profile
flutter build apk --release

答案 4 :(得分:0)

尝试在项目文件夹上运行flutter clean,然后重试。似乎文件从构建文件夹中丢失了

答案 5 :(得分:0)

我发现提到了here

的解决方案

当我执行Gradle同步时,我在Android Studio 4.0中遇到了此问题。我通过以下操作对其进行了修复:

  1. 打开顶级build.gradle并将gradle类路径更改为:

    classpath 'com.android.tools.build:gradle:4.0.0'
    
  2. 打开gradle\wrapper\gradle-wrapper.properties并将分发URL更改为:

    distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
    
  3. 从新项目复制.idea\jarRepositories.xml

这是我新开发的项目jarRepositories.xml,您可以自己创建。

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="RemoteRepositoriesConfiguration">
    <remote-repository>
      <option name="id" value="central" />
      <option name="name" value="Maven Central repository" />
      <option name="url" value="https://repo1.maven.org/maven2" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="jboss.community" />
      <option name="name" value="JBoss Community repository" />
      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="BintrayJCenter15" />
      <option name="name" value="BintrayJCenter15" />
      <option name="url" value="https://jcenter.bintray.com/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="Google17" />
      <option name="name" value="Google17" />
      <option name="url" value="https://dl.google.com/dl/android/maven2/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="maven2" />
      <option name="name" value="maven2" />
      <option name="url" value="https://storage.googleapis.com/download.flutter.io" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="maven5" />
      <option name="name" value="maven5" />
      <option name="url" value="https://google.bintray.com/exoplayer/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="maven4" />
      <option name="name" value="maven4" />
      <option name="url" value="https://maven.fabric.io/public" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="MavenLocal" />
      <option name="name" value="MavenLocal" />
      <option name="url" value="file:$USER_HOME$/.m2/repository" />
    </remote-repository>
  </component>
</project>

不知道如何或为什么,但是它对我有用

答案 6 :(得分:0)

问题与版本有关。尝试更改插件的版本。这对我有用。

https://developer.android.com/studio/releases/gradle-plugin?authuser=1&hl=pt-br#updating-gradle

示例:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip

classpath 'com.android.tools.build:gradle:3.6.4'

答案 7 :(得分:0)

在android build.gradle中,

dependencies {
   classpath 'com.android.tools.build:gradle:3.5.0'
}

不适用于我,并且在执行flutter运行时抛出了Firefire错误。 所以我将gradle版本更改为4.0.1。在flutter运行成功执行的地方,但是flutter build apk失败了,所以我将其版本更改为3.5.4。

在android / gradle / wrapper / gradle-wrapper.properties设置中,

distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip

对于flutter运行和flift构建apk都非常有效。 将来,此gradle版本可能不支持我们在项目中使用的少数插件,在这种情况下,请升级到下一个gradle版本。请在此处参考gradle版本:How Do I Fix "unexpected element <queries> found in <manifest>"?

答案 8 :(得分:0)

我遇到了同样的问题,并尝试先构建--debug,然后再构建--release,但仍然无法正常工作。但是,如果您查看特定错误中的路径,则该路径应以debug / libs.jar或profile / libs.jar结尾。这表明您需要首先构建哪个apk。在OP的情况下是debug / libs.jar,因此先构建--debug,然后再进行--release即可。就我而言,它是profile / libs.jar,因此先构建--profile,然后再--release即可。我敢肯定,构建--release不必访问调试或配置文件目录。

如果您的错误显示为debug / libs.jar,请先构建--debug,再构建--release。
如果您的错误显示为profile / libs.jar,则先构建--profile,再构建--release。

参考链接:https://github.com/flutter/flutter/issues/58247#issuecomment-636500680

答案 9 :(得分:0)

如果您看到此错误是因为您想在 gradle 上运行某些任务,例如 lintDebug,那么您不需要构建可能很慢的 apk。您可以运行此命令来执行生成 lint 依赖项的任务:

./gradlew generateProfileDependenciesForLint generateReleaseDependenciesForLint

运行这些命令后,将生成每个构建 tyoe 的 lib.jar,然后您可以运行需要 lib.jar 的 gradle 任务。它会让你安全很多时间。

答案 10 :(得分:-2)

Android Gradle LintPerVariantTask现在似乎正在将来自所有构建变体的JAR添加到其输入中: https://android.googlesource.com/platform/tools/base/+/1f9787310d64a66370627a2aaefa1e616565c17d

包含应用程序已编译Dart代码的libapp.so库打包在JAR中,并且为每个变体生成一个不同的JAR。我不确定如果lint任务期望所有变体的JAR都可用,应该如何处理动态生成的每个变体JAR。

作为一种黑客解决方法,您可以在 app / build.gradle 中更改lintOptions以禁用lint任务:

lintOptions {
    checkReleaseBuilds false
}