生成已签名的 apk 失败并显示 build\app\intermediates\flutter\profile\libs.jar(系统找不到指定的路径)

Generate signed apk fails with build\app\intermediates\flutter\profile\libs.jar (The system cannot find the path specified)

我在 android 工作室 4。Gradle 是 6.1.1。我从 android studio 创建了一个新的 flutter 项目。然后我将项目作为 android 项目打开。在Tools->Flutter中有这样一个选项。这导致 gradle 同步。那是成功的。但是当我尝试用我的密钥生成签名的 apk 时。我明白了。错误

\path\to\my\project\build\app\intermediates\flutter\profile\libs.jar (The system cannot find the path specified)

给定位置没有配置文件目录。但是有 Debug 和 Release 目录,它们都包含 libs.jar。我在网上搜索了所有其他的这个问题。什么都没找到。

附加:我可以毫无问题地构建调试 apk。

我在搜索人们在 github 上就此报告的各种问题时找到了解决此问题的方法。

这只是一种解决方法。

您可能会遇到两种错误。对我来说,系统找不到 profile/libs.jar,对某些人来说,错误是 debug/libs.jar。如果问题是 profile,您应该首先 运行 您的应用程序处于配置文件模式,然后生成签名的 apk(或构建并 运行 处于发布模式)。要在配置文件模式下 运行 使用 flutter run --profile。 Android Studio 中的 Run 菜单下还有一个配置文件选项。

如果错误是关于 debug/libs.jar,首先构建调试版本(以及配置文件模式),然后尝试生成签名的 apk。默认情况下,flutter run 编译为调试模式。

这个问题显然是由更新的 Gradleandroid studio gradle plugin 引起的。

Here is the workaround by Jwiggiff on the github page.

如果您不关心 lintOptions,您可以在应用程序的 build.gradle 文件中添加此代码:

android {
    lintOptions { 
        checkReleaseBuilds false
        abortOnError false
    }
}

这个问题是最新的 gradle 4.0.0

从类路径切换'com.android.tools.build:gradle:4.0.0'

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

classpath 'com.android.tools.build:gradle:3.5.0' (为我工作)

这是一个技巧

运行当前flutter项目的终端,然后输入

flutter run

获得此成功结果:

Running Gradle task 'assembleDebug'...                                  
Running Gradle task 'assembleDebug'... Done                        22.7s
✓ Built build/app/outputs/flutter-apk/app-debug.apk.

然后,输入

flutter build apk

得到

Running Gradle task 'assembleRelease'...                                
Running Gradle task 'assembleRelease'... Done                      41.8s
✓ Built build/app/outputs/flutter-apk/app-release.apk (23.6MB).

然后,将此 Release APK 安装到设备。

flutter install build/app/outputs/flutter-apk/app-release.apk

现在,您的设备上安装了 Release App。

p/s : 这种情况跳过错误

  • Execution failed for task ':app:lintVitalRelease'.

  • Failed to transform libs.jar to match attributes

  • Execution failed for JetifyTransform

  • Transform's input file does not exist

你已经得到了。

这会起作用。

flutter build apk --debug && 颤动构建 apk --profile && 颤动构建 apk --release

但在分享之前测试 apk。

即使将 gradle 从 4.x 更改为 3 也不起作用。6.x 这会起作用。

这应该也能正常工作

flutter build apk --profile

就我而言,我忘记了我正在使用口味。也许这导致了这个问题。 现在我让 flutter 使用以下命令构建应用程序:

flutter build apk --flavor <flavorname> -t <path/to/main.dart>

永久修复

要永久解决此问题,请输入终端

  1. flutter doctor

这会给你这样的总结

你需要修复所有那些红色标记!!

修复 android 个许可证

输入flutter doctor --android-licenses

如果遇到此错误

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

尝试从 Android Studio 安装 Android SDK 命令行工具(工具 > SDK 管理器)

  1. 展开外观和行为
  2. 展开系统设置
  3. 点击AndroidSDK
  4. 点击 SDK 工具选项卡
  5. 检查 Android SDK 命令行工具(最新)
  6. 单击“应用”按钮

然后运行再次

flutter doctor --android-licenses

修复未安装的 Flutter 插件

  1. 检查您的 Android Studio 版本(Mac 转到 ~/Library/Application Support/Google/AndroidStudio{Version}。在我的例子中,{Version} 是 2020.3)
  2. 然后输入

ln -s ~/Library/Application\ Support/Google/AndroidStudio2020.3/plugins ~/Library/Application\ Support/AndroidStudio2020.3

此命令只是将 flutter doctor 重定向到不同的文件夹以查找插件(它们现在所在的位置)。这称为符号 link

修复无法找到捆绑的 Java 版本

此解决方案适用于 Mac 用户

  1. 通过键入 /usr/libexec/java_home -V
  2. 查找本地 Java 版本
  3. 通过键入 /usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
  4. 设置 Java_Home 路径
  5. 在终端中输入所有这些
cd /Applications/Android\ Studio.app/Contents/jre
ln -s ../jre jdk
ln -s "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin" jdk
  1. 最后运行 flutter doctor -v 看到所有的细节变化

大团圆

解决所有这些问题后,运行

flutter clean
flutter run

构建发布 apk

flutter build apk --split-per-abi