2

我有一个在 Google Play 和 Amazon AppStore 上发布的应用程序。我最近向这个应用程序添加了地图 API 功能,因此我不得不使用 Google APIs SDK 来构建它。我已在 Google Play 上成功发布了我的新版本,但在亚马逊上遇到了问题。

该应用程序被亚马逊 AppStore 拒绝,因为他们说 Kindle 系列设备不支持它。经过进一步研究,我下载了新的 Kindle 模拟器,发现它们不支持 Google API。由于 Kindle Fire 平板电脑似乎是人们通过 Amazon AppStore 购买应用程序的主要设备,我意识到我需要提交一个不包含地图功能的应用程序版本,否则是同一个应用程序。

所以我的问题是:如何创建基于标准 Android SDK 且不包含映射 API,但使用相同 Java 源文件的应用程序的第二个版本?作为一名长期的 C++ 程序员,我可以使用条件编译标志在 C++ 中轻松完成此操作,但我开始意识到 Java 不支持条件编译。而且我当然不知道如何从一个 Android Eclipse 构建中排除库并将它们包含在另一个构建中。

谁能给我一些关于如何在 Android 中实现我想要的结果的提示?我知道我可以创建两个单独的应用程序,但是会有很多代码重叠,当我必须进行更新时,这对我来说会做更多的工作,我真的不想为了支持 Kindle 而维护两个单独的代码库火灾!

4

1 回答 1

2

您可以检查 Build.Manufacturer 是否等于“Amazon”,或者检查应用程序是否从 Amazon AppStore 安装(例如在 Fire 设备上或现在在 Blackberry 上),如果它没有初始化或调用谷歌地图功能(如果图书馆在那里,只要它们不活跃,似乎不会受到伤害)

boolean isAmazonDevice = Build.MANUFACTURER.equalsIgnoreCase("amazon");

final Application application = getApplication();
String installerName = application.getPackageManager().getInstallerPackageName(application.getPackageName());
boolean fromAmazonStore = installerName != null && installerName.equalsIgnoreCase("com.amazon.venezia");

然后检查以下值:

isAmazonDevice || fromAmazonStore
于 2014-11-01T06:04:40.397 回答