1

我已经为谷歌游戏市场完成了我的入门应用程序。我想做一个免费和付费的版本,所以我想知道的是:

我可以为免费版本注释掉付费版本中的部分,并在对话框中更具体地使用相同的项目引用市场上的付费版本,只是使用不同的版本号和导出的 apk 吗?

我想知道,因为我听说市场不会让 apk 具有相同的包名称,但我之前使用过的应用程序如果你有付费版本,你就不能有免费版本,所以我猜测它的所有关于版本#

感谢您的时间

4

1 回答 1

1

您是对的,Google Play 不允许上传具有相同包名的 APK。Play 商店使用包名称将不同的应用程序与其他应用程序区分开来。

但是,您认为它是处理相同应用程序(免费和付费)的版本有点偏离轨道。

但是(再次)相同应用程序的免费和付费版本可以在使用相同 Google 帐户下载的同一设备上共存。应用程序中可能存在检查并通知用户的功能。但这不是 Google Play 商店提供的机制。

以一个名为 FriendCaster 的应用程序为例。(我是一名独立的自由职业者,与 FriendCaster 或 OneLouder Apps 无关

  1. FriendCaster 的免费版本是:https ://play.google.com/store/apps/details?id=uk.co.senab.blueNotifyFree

  2. 如果同一个应用程序的付费版本是:https ://play.google.com/store/apps/details?id=uk.co.senab.blueNotify

它们都具有相同的版本,但包名称不同(结尾不同)。您将能够在一台设备上同时安装这两个应用程序。

就我而言,我为我的应用程序的免费和付费版本使用相同的代码库。唯一的区别是(显然)付费版本已从 XML 中删除了所有广告。

我使用两个不同的 Eclipse 工作空间来保持我的免费版本和付费版本彼此分开。这比其他任何事情都更方便。您可以很好地将这两个项目放在同一个 Eclipse 工作空间中。

但是,根据您对 OP 的评论,您不能使用同一个项目导出两个具有不同包名称的不同 APK。如果您已完成付费版本,则需要为免费版本创建一个新项目。您需要独立导出每个项目的 APK。

为了保持代码库的一致性,我尽可能避免使用硬代码。例如,在打开应用程序的 Google Play 详细信息页面的 Activity 中,我没有在其中硬编码我的包名称,而是使用如下内容:

Uri playUri = Uri.parse("market://details?id=" + Feedback.this.getPackageName());
Intent openGooglePlay = new Intent(Intent.ACTION_VIEW, playUri);
try {
    startActivity(openGooglePlay);
} catch (ActivityNotFoundException e) {

    // SHOW A TOAST
    String tstMessage = "Could not launch the Play Store app.";
    showToast.showToast(tstMessage);
}

我希望我对这篇文章有所了解。如果您需要任何澄清,请随时询问。:-)

于 2013-03-14T06:16:34.103 回答