【问题标题】:Android - Build two version of the same appAndroid - 构建同一个应用的两个版本
【发布时间】:2014-01-10 03:16:25
【问题描述】:

我正在为 Google Play 和 Amazon Store 开发一个应用程序。和市场有一些不同,狐狸的例子:下载应用程序页面的链接。因此,我的 apk 有点不同。 我不想为每个构建/签名 apk 替换所有这些。 有没有人有办法解决吗? 感谢您的帮助!

【问题讨论】:

  • 更多细节将帮助我们正确回答您的问题。
  • 例如:我的应用程序具有“Rate”功能,当用户单击“确定”按钮转到 merket(Google 或 Amazon)时,如果他们从 Google Play 下载了我的应用程序,它将重新将他们引导到 Play 商店,否则,亚马逊。所以我需要两个具有相同发布密钥库的 apk,但它有一点区别。

标签: android google-play amazon


【解决方案1】:

如果您创建了两个相同的 APK,但使用不同的密钥对它们进行了签名,那么您可以使用一些代码根据密钥签名确定在应用程序中显示的内容。

这里有人做过类似的事情:Detect if app was downloaded from Android Market

【讨论】:

  • 感谢您的帮助!我只使用一个发布密钥库。目前,我使用这篇文章中的“使用 ant 切换 Android 配置构建”:link,但我正在寻找更好的解决方案。
【解决方案2】:

对于“给予评分选项”的这个特殊问题,

您可以使用条件分支进行相同的构建,这会检测设备是否为亚马逊设备。

if (Build.MANUFACTURER.contains("亚马逊"){ // 显示亚马逊商店页面 } 别的 { // 显示谷歌页面 }

如果您还为 Samsung 商店 构建,那么它会变得有点棘手,因为您会想知道您的构建是否已通过 Samsung 商店 安装> 或 Play 商店

为此,您将需要 2 个不同的构建。

或者您可以使用新的 API,它会告诉您谁安装了该应用程序。 (来自@Aelexe 的另一个问题的链接)

http://developer.android.com/reference/android/content/pm/PackageManager.html#getInstallerPackageName%28java.lang.String%29

【讨论】:

  • 使用 Build.MANUFACTURER 是不可能的,因为 Google-power 设备(例如:Nexus 4 或 Galaxy S4)也可以从 Amazon Store 下载应用程序。我正在使用 Build.MANUFACTURER 检查设备是 Kindle 还是 Google-power 来处理应用内计费(应用内购买),但我厌倦了更改代码并使用更合乎逻辑的 if...else。
  • 在这种情况下,您需要的是第二个选项。 (检测安装程序包)。但是,就个人而言,如果用户使用的是非亚马逊设备,我不介意他浏览我的 Play 商店页面。他可能会留下一个很好的评价,这将提高我的应用的整体知名度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多