生成已签名的 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
编译为调试模式。
这个问题显然是由更新的 Gradle
和 android studio gradle plugin
引起的。
如果您不关心 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>
永久修复
要永久解决此问题,请输入终端
flutter doctor
这会给你这样的总结
你需要修复所有那些红色标记!!
修复 android 个许可证
输入flutter doctor --android-licenses
如果遇到此错误
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
尝试从 Android Studio 安装 Android SDK 命令行工具(工具 > SDK 管理器)
- 展开外观和行为
- 展开系统设置
- 点击AndroidSDK
- 点击 SDK 工具选项卡
- 检查 Android SDK 命令行工具(最新)
- 单击“应用”按钮
然后运行再次
flutter doctor --android-licenses
修复未安装的 Flutter 插件
- 检查您的 Android Studio 版本(Mac 转到 ~/Library/Application Support/Google/AndroidStudio{Version}。在我的例子中,{Version} 是 2020.3)
- 然后输入
ln -s ~/Library/Application\ Support/Google/AndroidStudio2020.3/plugins ~/Library/Application\ Support/AndroidStudio2020.3
此命令只是将 flutter doctor 重定向到不同的文件夹以查找插件(它们现在所在的位置)。这称为符号 link
修复无法找到捆绑的 Java 版本
此解决方案适用于 Mac 用户
- 通过键入
/usr/libexec/java_home -V
查找本地 Java 版本
- 通过键入
/usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
设置 Java_Home 路径
- 在终端中输入所有这些
cd /Applications/Android\ Studio.app/Contents/jre
ln -s ../jre jdk
ln -s "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin" jdk
- 最后运行
flutter doctor -v
看到所有的细节变化
大团圆
解决所有这些问题后,运行
flutter clean
flutter run
构建发布 apk
flutter build apk --split-per-abi
我在 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
编译为调试模式。
这个问题显然是由更新的 Gradle
和 android studio gradle plugin
引起的。
如果您不关心 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>
永久修复
要永久解决此问题,请输入终端
flutter doctor
这会给你这样的总结
你需要修复所有那些红色标记!!
修复 android 个许可证
输入flutter doctor --android-licenses
如果遇到此错误
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
尝试从 Android Studio 安装 Android SDK 命令行工具(工具 > SDK 管理器)
- 展开外观和行为
- 展开系统设置
- 点击AndroidSDK
- 点击 SDK 工具选项卡
- 检查 Android SDK 命令行工具(最新)
- 单击“应用”按钮
然后运行再次
flutter doctor --android-licenses
修复未安装的 Flutter 插件
- 检查您的 Android Studio 版本(Mac 转到 ~/Library/Application Support/Google/AndroidStudio{Version}。在我的例子中,{Version} 是 2020.3)
- 然后输入
ln -s ~/Library/Application\ Support/Google/AndroidStudio2020.3/plugins ~/Library/Application\ Support/AndroidStudio2020.3
此命令只是将 flutter doctor 重定向到不同的文件夹以查找插件(它们现在所在的位置)。这称为符号 link
修复无法找到捆绑的 Java 版本
此解决方案适用于 Mac 用户
- 通过键入
/usr/libexec/java_home -V
查找本地 Java 版本
- 通过键入
/usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
设置 Java_Home 路径
- 在终端中输入所有这些
cd /Applications/Android\ Studio.app/Contents/jre ln -s ../jre jdk ln -s "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin" jdk
- 最后运行
flutter doctor -v
看到所有的细节变化
大团圆
解决所有这些问题后,运行
flutter clean
flutter run
构建发布 apk
flutter build apk --split-per-abi