无法执行 buildtool jar 文件以从 abb 文件中提取 apk

问题描述

当我输入时:

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

解决方法

查看 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')。如果未设置此标志,则密钥库密码 将被审判。如果失败,密码将在 提示。