无法执行构建工具 jar 文件以从 aab 文件中提取 apk

Posted

技术标签:

【中文标题】无法执行构建工具 jar 文件以从 aab 文件中提取 apk【英文标题】:cant execute buildtool jar file to extract apks from abb file 【发布时间】:2021-05-15 14:26:53 【问题描述】:

当我输入这个时:

C:\Users\Ora Ora\Desktop\Dev\React\Native\Abb to APk>>java -jar bundletool-all-1.4.0.jar //..rest of args

我得到这个错误:

'-jar' 未被识别为内部或外部命令, 可运行的程序或批处理文件。 但是当我输入 当我输入这个:

C:\Users\Ora Ora\Desktop\Dev\React\Native\Abb to APk>>$ java -jar bundletool-all-1.4.0.jar //..rest of args

我猜它可以工作,但我收到了这个错误:

[BT:1.4.0] 错误:空 java.lang.NullPointerException 在 com.android.tools.build.bundletool.model.SignerConfig.lambda$extractFromKeystore$0(SignerConfig.java:109) 在 java.base/java.util.Optional.orElseGet(Optional.java:362) 在 com.android.tools.build.bundletool.model.SignerConfig.extractFromKeystore(SignerConfig.java:106) 在 com.android.tools.build.bundletool.commands.BuildApksCommand.populateSigningConfigurationFromFlags(BuildApksCommand.java:1059) 在 com.android.tools.build.bundletool.commands.BuildApksCommand.fromFlags(BuildApksCommand.java:593) 在 com.android.tools.build.bundletool.commands.BuildApksCommand.fromFlags(BuildApksCommand.java:559) 在 com.android.tools.build.bundletool.BundleToolMain.main(BundleToolMain.java:75) 在 com.android.tools.build.bundletool.BundleToolMain.main(BundleToolMain.java:47)

这是完整的命令:

java -jar bundletool-all-1.4.0.jar build-apks --bundle="C:\Users\Ora Ora\Desktop\Dev\React\Native\Abb to APk\app-release.aab" --output="C:\Users\Ora Ora\Desktop\Dev\React\Native\Abb to APk\apks.apks" --ks="C:\Users\Ora Ora\Desktop\Dev\React\Native\DistributionApp\android\app\my-upload-key.keystore" --ks-key-alias=my-key-alias

【问题讨论】:

【参考方案1】:

查看source code(bundletool 是开源的),看起来您正在运行的 Java 环境没有提供输入密码的控制台。

我记得这是 Windows 平台上的一个问题,我不知道在命令行上输入密码的直接解决方法。

但是,您可以通过不同方式提供密码,例如传递--ks-pass 标志。来自 bundletool 的帮助命令:

--ks-pass:(可选)用于签署生成的密钥库的密码 APK。如果提供,则必须以“pass:”作为前缀(如果密码 以明文形式传递,例如'pass:qwerty') 或 'file:' (如果密码 是文件的第一行,例如'文件:/tmp/myPassword.txt')。如果这 未设置标志,将在提示时要求输入密码。

如果密钥的密码与密钥库中的密码不同,--key-pass 也是如此。

--key-pass:(可选)密钥库中用于签名的密钥的密码 生成的 APK。如果提供,必须以“pass:”作为前缀 (如果密码以明文形式传递,例如“pass:qwerty”)或“file:” (如果密码是文件的第一行,例如 'file: /tmp/myPassword.txt')。如果未设置此标志,则密钥库密码 将被尝试。如果失败,将在 提示。

【讨论】:

以上是关于无法执行构建工具 jar 文件以从 aab 文件中提取 apk的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 如何配置构建文件以从同一项目创建 Spring boot jar 和 spring web-mvc war

构建 aab 时的文件大小 (mb) 比在 android 中使用 apk 构建时更大

如何在 gitlab 中的作业之间移动 jar 文件?

Android Gradle 构建中不使用 libs 文件夹中的 Jar 文件

VS程序编译通过,jenkins构建错误,无法识别新的语法,应该是 .NetFramework的问题,不知道应该如何处理

aab文件和apk之间的转化