【问题标题】:Questions about preparing an apk for the Amazon Android App Store有关为 Amazon Android App Store 准备 apk 的问题
【发布时间】:2011-09-07 06:05:30
【问题描述】:

令人惊讶的是,亚马逊的文档缺少有关提交二进制过程的信息。据我所知,您提交了一个未签名的二进制文件,然后他们将其包装在自己的代码中并生成一个签名的 apk?

这留下了几个问题:

  1. Amazon App Store 是否为您执行 zipalign?
  2. 如果您的应用程序已经在 Android Market (Google) 中,建议使用相同的包名称还是不同的包名称?有什么区别吗?
  3. 我还在其他地方看到,他们提供了下载他们准备的 apk 并使用您自己的密钥对其进行签名的选项。是否建议使用此密钥,然后使用您在 Android Market 中使用的相同密钥对其进行签名?有什么区别吗?

在深入研究此过程之前,是否还有其他需要了解的注意事项或陷阱?

谢谢

【问题讨论】:

    标签: android amazon apk signing amazon-appstore


    【解决方案1】:
    1. 是的。亚马逊使用特定于其应用商店的代码包装您的二进制文件,从而允许他们收集分析数据并实施 DRM。该应用程序将在此之后重新打包。

    2. 您应该使用相同的包名。亚马逊分销协议目前有一些附带条件;例如,您的应用在其他应用商店中的价格不低。他们还会不定期检查您的应用程序在市场上的版本是否是最新的。这些检查主要是使用包名完成的;更改应用程序的包名称很容易被他们视为规避协议条款的一种手段。

    3. 没有。一个人想要这样做可能有很好的理由,但我想不出。默认情况下,Amazon 会使用您的 Amazon 开发者帐户特定的签名对您的 apk 进行签名。

    其他:

    Read this。特别是,确保应用程序正确链接到亚马逊应用程序商店,而不是 Android 市场或其他。我没有内部数据,但我敢打赌,亚马逊拒绝的绝大多数提交都违反了这一要求。

    编辑:第 2 点不再正确;请参阅下面的评论。

    【讨论】:

    • 我最终提交了我的应用程序,我将在此答案中添加一些我的经验/笔记,希望它可能对其他人有所帮助。我想在两个市场上保持相同的签名。为了启用以这种方式上传二进制文件的选项,您必须联系 Amazon 并请求在您的开发人员门户中将其打开。完成后,您将在上传二进制部分中看到一个选项。在 Eclipse 中,如果您右键单击您的项目并转到 Android 工具,则会有一个未签名的二进制导出选项。将其上传到亚马逊并按照他们提供的步骤操作。
    • 我最近不得不将我的应用程序上传到亚马逊,并且肯定有一个用于签署您自己的应用程序的大型用例。如果您使用任何类型的第三方 API,例如 Google Maps 或 Facebook SSO,您需要使用这些服务签署您的生产密钥才能在您的应用程序中使用它们。在这种情况下,您需要知道您签署应用程序时使用的密钥,因此您需要使用自己的密钥对其进行签名(更不用说为第三方服务管理一个密钥的便利性了)。
    • 是的 - 从那以后我也看到了几个案例,我可以看到亲自签名的好处。
    • 第二个问题的答案不再正确。请参阅developer.amazon.com/public/support/submitting-your-app/…“每个应用的包名称必须是唯一的。您提交给亚马逊的每个应用的包名称必须不同于任何其他应用商店(例如 Google Play)上使用的包名称。”
    • 好像又改了,不再指定其他商店:"每个应用的包名必须唯一。您提交给亚马逊的每个应用的包名必须不同于任何其他应用程序中使用的包名称。” 信任什么?
    【解决方案2】:

    这是我从亚马逊移动应用分发团队收到的关于提交签名或未签名 apk 的问题的回复:

    "您可以向商店提交已签名或未签名的二进制文件 - 然后,无论哪种情况,我们都会将我们的签名应用到您的应用程序。如果您需要使用已知签名对您的应用程序进行签名(如果您例如,正在使用 Facebook 授权)您可以选择使用我们的自签名流程上传您的应用(您需要要求我们为您启用此功能)。”

    提交应用程序最直接的方法是从 Eclipse 中导出已签名的 apk(所有 zip 对齐都已准备就绪),然后使用我们的 DRM 和签名通过分发门户上传。

    对于我的应用程序的最新更新,我刚刚使用了我之前发布到 google play 的同一个签名 apk,它运行良好。

    【讨论】:

      【解决方案3】:

      我只发布了两个几乎一无所获的小应用程序,但都获得了批准,并且我遵循了在 Android 市场上发布的完全相同的程序:我刚刚从 eclipse 导出了签名的 .apk 并使用了相同的包姓名。到目前为止,我没有任何问题,所以我想没问题。

      【讨论】:

        【解决方案4】:

        作为实践,您应该在每次构建期间进行 zipalign。

        我在亚马逊上使用与发布到 Google 之前完全相同的构建过程。唯一的区别是一个接口的变量来确定市场链接(在构建时,if/else 被编译出来)。

        【讨论】:

        • 我想知道您能否澄清一下如何切换市场链接。目前,我必须手动将 Android Market 链接换成 Amazon Appstore 链接。这会产生两个不同的 APK。您是否有一种方法可以只创建一个 APK?谢谢
        • 使用我不知道的一个 apk。我的构建脚本为每个最终构建生成多个 apk(付费、演示、谷歌、亚马逊)
        • @Turbo 在一个类中设置静态方法,然后做if (ThisOneClass.IS_MARKET){useMarketLink} else {useAppStoreLink}
        • @Jakar 我想他首先问的是如何设置ThisOneClass.IS_MARKET
        • @Jakar CrackerJack9 是正确的。我不知道您如何检查(我会在运行时考虑)您的应用是从哪个市场安装的。亚马逊的开发者博客提到可以做一个运行时switch of the links,但我不知道怎么做。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-08
        • 2012-02-09
        • 2019-06-12
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多