3

我有 Android 应用程序(.apk 包)。应用程序名称包含变音符号。我正在尝试将 .apk 包转换为 .bar (BlackBerry 10)。我正在使用 BlackBerry Repackaging Tool Plug-in for Eclipse。

重新打包和签名后,.bar 包中的 MANIFEST.MF 文件中的进程应用程序名称包含“?” 符号而不是变音符号。因此,我无法将 .bar 包上传到 BlackBerry World。当我尝试上传它时,我收到了错误:

清单主要属性的签名文件摘要无效 System.exit 不允许调用!

4

2 回答 2

1

迈克尔,您自己的答案无法正常工作。BAR 文件经过签名和验证,但如果我将最终应用程序安装到真正的 Z10 设备上,则应用程序名称为“App f\u00FCr BlackBerry”(直接打印转义序列)。

我在这里找到了简单的解决方案:在将 Android 应用程序移植到黑莓时,西里尔文应用程序名称编码错误

问题在于 BlackBerry 命令工具使用的编码。你只需要添加

-Dfile.encoding=utf-8

参数到 apk2bar 和 blackberry-signer 批处理命令中。例如:

java -Djava.awt.headless=true -Dfile.encoding=utf-8 -Xmx512M -cp "$LIB/BarPackager.jar:$LIB/Apk2Bar.jar"...

然后,您可以直接从 Eclipse 对 BlackBerry World 使用签名。

于 2013-06-12T21:41:39.237 回答
0

我想我找到了解决方案。

假设我们有一个名称中带有变音符号的 Android 应用程序 (.APK),例如:"App für BlackBerry". 如果我们想成功地将其转换为 BlackBerry 应用程序 (.BAR),对其进行签名并上传到 BlackBerry World,那么我们必须执行以下操作:

  1. 用我们 Android 项目的 AndroidManifest.xml 文件中的 unicode 转义序列替换应用程序名称中的变音符号。所以,我们会有"App f\u00FCr BlackBerry". 构建我们的应用程序(这将创建 .APK 文件)。

  2. 使用 apk2bar 实用程序将 .APK 转换为 .BAR(这将在与我们的 .APK 文件相同的文件夹中创建 .BAR 文件):

    apk2bar <path to our .APK file> <path to Android SDK>
    
  3. 将 .BAR 文件的文件扩展名更改为 .ZIP(或在 .BAR 后添加 .ZIP)。使用任何存档管理器解压缩文件。我们应该在存档文件夹中看到下一个文件:

    android/<application name>.APK
    META-INF/MANIFEST.MF
    

    我们需要打开 META-INF/MANIFEST.MF 文件并检查“Application-Name”和“Entry-Point-Name”行。如果它们看起来像:

    Application-Name: App für BlackBerry
    Entry-Point-Name: App für BlackBerry
    

    然后我们需要将 MANIFEST.MF 文件复制到与我们的 .APK 文件相同的文件夹中,并将这些行中的变音符号替换为 unicode 转义序列:

    Application-Name: App f\u00FCr BlackBerry
    Entry-Point-Name: App f\u00FCr BlackBerry
    

    完成此步骤后,我们可以删除 .ZIP 文件和解压缩文件夹。

  4. 通过附加选项再次使用 apk2bar 实用程序:

    apk2bar <path to our .APK file> <path to Android SDK> -m <path to our updated MANIFEST.MF file>
    

    在这一步之后,我们将在内部 MANIFEST.MF 文件中拥有带有 unicode 转义序列的 .BAR 文件,而不是变音符号。

    注意:不要更新内部 MANIFEST.MF 文件、压缩解压缩文件夹并将存档扩展名从 .ZIP 更改回 .BAR。它可能会损坏 .BAR 文件。所以对我来说。

  5. 使用 blackberry-signer 实用程序签署我们的 .BAR 文件。

    • 如果我们的 p12 和 CSK 密码相同,那么我们可以使用:

      blackberry-signer -storepass <our P12/CSK password> <path to our .BAR file>
      
    • 如果我们的 p12 和 CSK 密码不同,那么我们应该使用:blackberry-signer -keystore -storepass author 和:

      blackberry-signer -verbose -cskpass <our CSK password> -keystore <path to our lP12 file> -storepass <our P12 password> <path to our .BAR file> RDK
      
  6. 验证我们的 .BAR 文件:

    blackberry-signer -verify <path to our .BAR file>
    

如果此命令没有显示错误,那么我们可以将 .BAR 文件上传到 BlackBerry World。

就是这样。

于 2013-06-10T11:31:31.270 回答