Android:如何删除Amazon AppStore的地图功能&点燃

时间:2012-11-06 04:27:39

标签: android google-maps kindle-fire amazon-appstore

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您可以检查Build.Manufacturer是否等于“亚马逊”或检查该应用是否为installed from the 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