签署APK时,在com.android.sdklib.BuildToolInfo.getPath(BuildToolInfo.java:244)处出现AssertionError。

4
我正在尝试使用Android Studio生成已签名的APK文件,但是出现了以下错误。我确定我的密码等信息都是正确的,因为我已经使用任意字符串尝试了同样的过程,并且它们失败并输出了预期的错误(密码错误)。对于这个错误,谷歌并没有提供有用的解决方法,请问有人知道是怎么回事吗? 我正在使用0.8.6版本。以下是两张截图:
enter image description here
assertion error
    null
    java.lang.AssertionError
        at com.android.sdklib.BuildToolInfo.getPath(BuildToolInfo.java:244)
        at org.jetbrains.android.exportSignedPackage.ExportSignedPackageWizard.createAndAlignApk(ExportSignedPackageWizard.java:380)
        at org.jetbrains.android.exportSignedPackage.ExportSignedPackageWizard.access$200(ExportSignedPackageWizard.java:81)
        at org.jetbrains.android.exportSignedPackage.ExportSignedPackageWizard$1$1.run(ExportSignedPackageWizard.java:157)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:471)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
        at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl$8.run(ProgressManagerImpl.java:380)
        at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:419)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
        at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:149)

请将您的AS更新至0.8.12版本,然后再次尝试... - WarrenFaith
我正在使用Windows系统,而0.8.6是安卓网站上提供的第一个选项。 - Hayk Saakian
今天他们发布了0.8.12版本,所以值得尝试更新 :) - WarrenFaith
3个回答

4
(简短介绍) 嘿,我在使用IntelliJ IDEA 13.1.5时遇到了完全相同的问题,出现了同样的堆栈跟踪。我想起来它可以在13.1.4版本下运行,但是这个版本不在我的电脑上。所以我尝试了13.1.1版本。然而,这个版本告诉我它找不到zipalign工具。这指引我走向了正确的方向。

解决方法

我通过工具 -> Android -> SDK管理器更新了我Android SDK管理器中的“所有”内容。因此,目前我有:

Android SDK Tools Rev. 23.0.4
Android SDK Platform-tools Rev. 20
Android SDK Build-tools Rev. 20
Android API 16, 19 and 20
Android Support Library Rev. 20
Android Play Billing Library Rev. 5
Android USB Driver Rev. 11

我想一个Android API就足够了。 现在我又能构建带有签名的APK文件了。

在我的情况下,仅更新构建工具到Rev 20就解决了问题。 - Hayk Saakian
1
在我的情况下,安装构建工具 rev. 20 并停止并重新启动 IntelliJ IDEA 13.1.5 解决了问题。 - RenniePet
请务必从SDK管理器中删除任何旧的Android SDK Build-Tools。我曾经安装过版本18,但在删除后,它甚至不再显示在列表中... - volley

2
那个调用堆栈与尝试查找zipalign工具一致,该工具在SDK 23中移动了位置。我猜测您正在使用SDK 23之后发布的Android Studio(如果您正在运行0.8.6,则是这种情况),并且尝试使用旧的SDK。如果是这种情况,请更新您的SDK,然后问题就应该解决了。
这里有一个记录了这种行为的错误报告,但请注意,该错误已被关闭为“按预期工作”--这取决于工具的更改,如果用户有任何脚本或其他依赖于zipalign在特定位置的行为,那么也需要进行更改。

https://code.google.com/p/android/issues/detail?id=72611


0

我手动更新了最新版本的Android SDK Build-tools,这解决了我的问题。你不能只是更新所有内容 - 我必须手动取消选择旧包并安装新的包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接