无法执行构建工具 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 构建时更大
Android Gradle 构建中不使用 libs 文件夹中的 Jar 文件
VS程序编译通过,jenkins构建错误,无法识别新的语法,应该是 .NetFramework的问题,不知道应该如何处理