无法在android中将应用程序包转换为APK

无法在android中将应用程序包转换为APK,android,apk,android-app-bundle,Android,Apk,Android App Bundle,我正在使用Android studio 3.4.1。 我试图使用bundle工具将应用程序包转换为APK。我无法生成APK文件。我试着用 当我运行命令时 java -jar bundletool.jar build-apks --bundle=app.aab --output=app.apks 我得到了下面的错误。 请给我一个生成APK的解决方案 INFO: The APKs will be signed with the debug keystore found at 'C:\Users

我正在使用Android studio 3.4.1。 我试图使用bundle工具将应用程序包转换为APK。我无法生成APK文件。我试着用

当我运行命令时

java -jar bundletool.jar build-apks  --bundle=app.aab --output=app.apks
我得到了下面的错误。 请给我一个生成APK的解决方案

INFO: The APKs will be signed with the debug keystore found at 'C:\Users\~\
.android\debug.keystore'.
[BT:0.10.2] Error: com.android.tools.build.bundletool.model.Aapt2Command$Aapt2Ex
ception: Command '[C:\Users\~\AppData\Local\Temp\8658885577631656545\output
\windows\aapt2.exe, convert, --output-format, binary, -o, C:\Users\~\AppDat
a\Local\Temp\6789457478435634974\binary.apk, C:\Users\~\AppData\Local\Temp\
6789457478435634974\proto.apk]' didn't terminate successfully (exit code: -10737
41701). Check the logs.
java.lang.RuntimeException: com.android.tools.build.bundletool.model.Aapt2Comman
d$Aapt2Exception: Command '[C:\Users\~\AppData\Local\Temp\86588855776316565
45\output\windows\aapt2.exe, convert, --output-format, binary, -o, C:\Users\Yamu
na\AppData\Local\Temp\6789457478435634974\binary.apk, C:\Users\~\AppData\Lo
cal\Temp\6789457478435634974\proto.apk]' didn't terminate successfully (exit cod
e: -1073741701). Check the logs.
        at com.android.tools.build.bundletool.io.ConcurrencyUtils.waitFor(Concur
rencyUtils.java:59)
        at com.android.tools.build.bundletool.io.ConcurrencyUtils.waitForAll(Con
currencyUtils.java:42)
        at java.util.function.Function.lambda$andThen$1(Unknown Source)
        at java.util.stream.ReferencePipeline.collect(Unknown Source)
        at com.android.tools.build.bundletool.io.ApkSerializerManager.serializeA
pks(ApkSerializerManager.java:180)
        at com.android.tools.build.bundletool.io.ApkSerializerManager.populateAp
kSetBuilder(ApkSerializerManager.java:101)
        at com.android.tools.build.bundletool.commands.BuildApksManager.executeW
ithZip(BuildApksManager.java:229)
        at com.android.tools.build.bundletool.commands.BuildApksManager.execute(
BuildApksManager.java:110)
        at com.android.tools.build.bundletool.commands.BuildApksCommand.execute(
BuildApksCommand.java:524)
        at com.android.tools.build.bundletool.BundleToolMain.main(BundleToolMain
.java:74)
        at com.android.tools.build.bundletool.BundleToolMain.main(BundleToolMain
.java:46)
        Suppressed: java.io.UncheckedIOException: java.nio.file.FileSystemExcept
ion: C:\Users\~\AppData\Local\Temp\8658885577631656545: failed to delete on
e or more files; see suppressed exceptions for details
                at com.android.tools.build.bundletool.io.TempDirectory.close(Tem
pDirectory.java:59)
                at com.android.tools.build.bundletool.commands.BuildApksCommand.
execute(BuildApksCommand.java:525)
                ... 2 more
        Caused by: java.nio.file.FileSystemException: C:\Users\~\AppData\Lo
cal\Temp\8658885577631656545: failed to delete one or more files; see suppressed
 exceptions for details
                at com.google.common.io.MoreFiles.throwDeleteFailed(MoreFiles.ja
va:791)
                at com.google.common.io.MoreFiles.deleteRecursively(MoreFiles.ja
va:537)
                at com.android.tools.build.bundletool.io.TempDirectory.close(Tem
pDirectory.java:57)
                ... 3 more
                Suppressed: java.nio.file.DirectoryNotEmptyException: C:\Users\Y
amuna\AppData\Local\Temp\8658885577631656545\output\windows
                        at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unkno
wn Source)
                        at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown
Source)
                        at java.nio.file.Files.delete(Unknown Source)
                        at com.google.common.io.MoreFiles.deleteRecursivelyInsec
ure(MoreFiles.java:665)
                        at com.google.common.io.MoreFiles.deleteDirectoryContent
sInsecure(MoreFiles.java:685)
                        at com.google.common.io.MoreFiles.deleteRecursivelyInsec
ure(MoreFiles.java:658)
                        at com.google.common.io.MoreFiles.deleteDirectoryContent
sInsecure(MoreFiles.java:685)
                        at com.google.common.io.MoreFiles.deleteRecursivelyInsec
ure(MoreFiles.java:658)
                        at com.google.common.io.MoreFiles.deleteRecursively(More
Files.java:526)
                        ... 4 more
Caused by: java.util.concurrent.ExecutionException: com.android.tools.build.bund
letool.model.Aapt2Command$Aapt2Exception: Command '[C:\Users\~\AppData\Loca
l\Temp\8658885577631656545\output\windows\aapt2.exe, convert, --output-format, b
inary, -o, C:\Users\~\AppData\Local\Temp\6789457478435634974\binary.apk, C:
\Users\~\AppData\Local\Temp\6789457478435634974\proto.apk]' didn't terminat
e successfully (exit code: -1073741701). Check the logs.
        at com.google.common.util.concurrent.AbstractFuture.getDoneValue(Abstrac
tFuture.java:502)
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.j
ava:481)
        at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(Ab
stractFuture.java:83)
        at com.android.tools.build.bundletool.io.ConcurrencyUtils.waitFor(Concur
rencyUtils.java:49)
        ... 10 more
Caused by: com.android.tools.build.bundletool.model.Aapt2Command$Aapt2Exception:
 Command '[C:\Users\~\AppData\Local\Temp\8658885577631656545\output\windows
\aapt2.exe, convert, --output-format, binary, -o, C:\Users\~\AppData\Local\
Temp\6789457478435634974\binary.apk, C:\Users\~\AppData\Local\Temp\67894574
78435634974\proto.apk]' didn't terminate successfully (exit code: -1073741701).
Check the logs.
        at com.android.tools.build.bundletool.model.Aapt2Command$CommandExecutor
.execute(Aapt2Command.java:62)
        at com.android.tools.build.bundletool.model.Aapt2Command$1.convertApkPro
toToBinary(Aapt2Command.java:36)
        at com.android.tools.build.bundletool.io.ApkSerializerHelper.writeToZipF
ile(ApkSerializerHelper.java:159)
        at com.android.tools.build.bundletool.io.ApkSerializerHelper.writeToZipF
ile(ApkSerializerHelper.java:144)
        at com.android.tools.build.bundletool.io.SplitApkSerializer.writeToDisk(
SplitApkSerializer.java:75)
        at com.android.tools.build.bundletool.io.SplitApkSerializer.writeSplitTo
Disk(SplitApkSerializer.java:53)
        at com.android.tools.build.bundletool.io.ApkSetBuilderFactory$ApkSetArch
iveBuilder.addSplitApk(ApkSetBuilderFactory.java:105)
        at com.android.tools.build.bundletool.io.ApkSerializerManager$ApkSeriali
zer.serialize(ApkSerializerManager.java:376)
        at com.android.tools.build.bundletool.io.ApkSerializerManager.lambda$nul
l$3(ApkSerializerManager.java:184)
        at com.google.common.util.concurrent.TrustedListenableFutureTask$Trusted
FutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:117)
        at com.google.common.util.concurrent.InterruptibleTask.run(Interruptible
Task.java:38)
        at com.google.common.util.concurrent.TrustedListenableFutureTask.run(Tru
stedListenableFutureTask.java:77)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

您需要下载最新的捆绑工具,下载捆绑工具后,您需要打开与捆绑工具所在路径相同的终端。执行以下命令可以生成APK

1下面的命令创建一组未签名的APK

java -jar bundletool.jar build-apks  --bundle=app.aab --output=unsigned.apks
2下面的命令创建一组签名的APK

java -jar bundletool.jar build-apks  --bundle=app.aab --output=signed.apks --ks=test.jks --ks-key-alias=replaceyouralieas
上面的命令将要求您输入密钥库密码,您需要输入密钥库密码

3下面的命令将为您的设备找到正确的apk并安装到设备中

java -jar bundletool.jar install-apks --apks=signed.apks 

大家好,我的主题是,为什么你们不在Android Studio中遵循传统方法呢

步骤1-->打开Android Studio并选择Build。 步骤2-->选择Build Bundle/APK,然后可以看到两个选项Build APK和Build Bundle。 步骤3-->为APK选择生成APK(用于正常APK)

对于签名的APK,也使用相同的主题


您可能知道这一点,但我不知道您是否需要使用命令和从.aab到.apk的转换来修复权限或拥有
C:\\Users\~\Appdata\Local\Temp
。。。它不能在那里删除。对于Windows来说,带有
~
的配置文件路径甚至非常奇怪,因为
~
表示Linux上当前用户的
主目录。实际上,
~
必须是当前的Windows用户名,这样它才能从当前用户的配置文件目录继承权限……但它没有,这正是它失败的原因

当无法将
~
更改为临时存储时,将
C:\\Users\
链接到
C:\\Users\username
可能是解决此问题的一种简单方法


如果最新版本的
bundletool
仍然错误地拾取用户配置文件目录,则可以在GitHub上自由提交问题。可以想象Linux子系统可能会干扰,因为
~
对于Windows来说不是“正常的”。

这是sign app bundle?你的
bundletool.jar和
app.aab
文件路径正确吗?实际上~不是用户名。我只是添加了用户名。