1

我花了几天时间尝试在 RIM Vendor Portal 上提交我的应用程序。

我可以建造它。我可以使用 debugtoken.bar 在我的设备上运行它。

当我尝试将其提交到供应商门户时,我收到可怕的“某些文件缺少签名”错误。

我构建了我的 application.bar 文件(实际上名为 QuoteUnquote.bar),然后使用以下命令对其进行了签名:

"C:\Program Files (x86)\Research In Motion\BlackBerry WebWorks SDK for TabletOS 2.1.0.6\bbwp\blackberry-tablet-sdk\bin\blackberry-signer" -verbose -cskpass ******** -keystore sigtool.p12 -storepass ******** "C:\work\word\quotes\platform_airplay\build_smartquotes-airplay_vc10\deployments\default\playbook\release\QuoteUnquote.bar" RDK

"C:\Program Files (x86)\Research In Motion\BlackBerry WebWorks SDK for TabletOS 2.1.0.6\bbwp\blackberry-tablet-sdk\bin\blackberry-signer" -keystore sigtool.p12 -storepass ******** "C:\work\word\quotes\platform_airplay\build_smartquotes-airplay_vc10\deployments\default\playbook\release\QuoteUnquote.bar" author

我确认已签名的 .bar 文件的 META-INF 文件夹中有所需的五个文件。

当我在没有 -verbose 选项的情况下验证它时,它只会显示“.bar 已验证”。当我使用 -verbose 选项验证它时,验证工具似乎崩溃了:

C:\work\word\quotes\platform_airplay\PlayBook>"C:\Program Files (x86)\Research In Motion\BlackBerry WebWorks SDK for TabletOS 2.1.0.6\bbwp\blackberry-tablet-sdk\bin\blackberry-signer" -verify -keystore sigtool.p12 -verbose "C:\work\word\quotes\platform_airplay\build_smartquotes-airplay_vc10\deployments\default\playbook\release\QuoteUnquote.bar"

        2240 Sat Jun 30 00:31:16 PDT 2012 META-INF/MANIFEST.MF
        1287 Sat Jun 30 00:31:16 PDT 2012 META-INF/AUTHOR.SF
         710 Sat Jun 30 00:31:16 PDT 2012 META-INF/AUTHOR.EC
        1287 Sat Jun 30 00:31:02 PDT 2012 META-INF/RDK.SF
         280 Sat Jun 30 00:31:02 PDT 2012 META-INF/RDK.EC
           0 Tue Jan 01 00:00:00 PST 1980 META-INF/
           0 Tue Jan 01 00:00:00 PST 1980 native/
barsigner error: java.lang.NullPointerException

所以这不是很有帮助。我不知道 -verify 工具是否只是片状,或者 .bar 文件的某些问题是否导致它崩溃,或者什么。

这一切都非常令人沮丧,因为我过去曾成功签署并提交过 .bar 文件。我不知道我现在在做什么不同。

正如我所说,我已经坚持了好几天了。如果你能给我指点,那就太好了。如果我可以将我的 .bar 文件发送给您,您可以告诉我它有什么问题,那就更好了。

非常感谢任何帮助。

4

3 回答 3

3

我解决这个问题的小技巧是像往常一样签署 .bar(RDK 和作者),然后将 .bar 文件重命名为 .zip 并将所有文件解压缩到一个临时目录中。

使用 7Zip 然后我使用以下命令重新压缩所有文件:

7z a -tzip <AppName>.bar *.* -r

这将重新压缩所有文件并删除目录名称的条目。

对其进行验证:

blackberry-signer -verbose -verify <AppName>.bar

只要您正确签署了应用程序,您应该会看到可爱的消息:信息:已验证栏。

提交它,然后你就走了!

于 2012-07-24T05:12:26.217 回答
2

我已经弄清楚这里发生了什么。问题是世界上有两种 .zip 文件,一种是目录在 .zip 文件的目录中有自己的条目,另一种没有。这是一个棘手的问题,因为(据我了解)大多数用于查看 .zip 文件的工具都没有指示目录是否有自己的条目——它们只是使用 Windows 资源管理器中的 GUI 文件夹图标或其他方式显示目录.

此处给出了解决方案:http: //supportforums.blackberry.com/t5/Native-Development/Error-while-uploading-Invalid-signature-file-digest-for-Manifest/td-p/1623873

它提供了一个 java 程序来从提取的内容中重建 .zip,并且使用该特定的 java 库来重建 .zip 不包括文件夹作为它们自己的条目。

出现这个问题有两个原因:

(1) RIM Vendor Portal 提交工具检查文件中的每个项目是否已正确签名,它显然会在目录中看到这两个目录条目,并且因为它们没有签名而吓坏了,因此“一些文件(原文如此)缺少签名。” 事实上,它似乎只是注意到这些是零长度的目录条目,而且无论如何都没有什么要签名的,然后就让它过去吧。那将首先避免整个混乱。

(2) 制作 .bar 文件的 Marmalade 工具会创建一个包含这些目录条目的 zip。棘手的是,据我所知,它不会在每个人的系统上创建这些条目,只是在一些系统上。还有其他果酱用户显然没有遇到这个问题。我不知道它是否与 Marmalade 工具正在使用的底层 .zip 库有关,无论它是 .jdk 的一部分,还是 Marmalade 使用的 python 系统的一部分,还是什么。但它在不同的系统上的表现肯定不同。

所以,RIM 和 Marmalade 都应该包含这方面的信息。当 RIM 给出“某些项目缺少签名”的错误时,它应该指定这些零长度的目录条目缺少签名(或者它根本不能将其视为错误,如上所述)。Marmalade 应该告诉所有正在处理 PlayBook 提交的用户这个问题。

于 2012-07-01T01:54:25.680 回答
0

好的,不要使用这种方法....它验证并允许您提交但在 RIM 方面他们会抱怨您在签名后修改了 .bar 文件这一事实!!

于 2012-07-29T05:25:06.777 回答