可以使用if / else语句(在清单文件中包括两个api的声明)来实现这一目的。
好吧,清单中不能包含“ if / else语句”。
从我的角度来看,基本上有三种方案:
- 设备没有OpenGL ES 2.0或更高版本
- 该设备确实具有OpenGL ES 2.0或更高版本,但目前没有Google Play服务(可能是因为它没有Play商店)
- 该设备具有OpenGL ES 2.0或更高版本,并具有Google Play服务
正如您在对另一个答案的评论中所指出的那样,我的方案#1无法与其他两个方案共存,仅仅是因为您 必须 具有
<uses-feature>调用OpenGL
ES 2.0 的元素。而且,由于Play商店不支持基于OpenGL ES
API级别的多个APK文件,因此对于同一Play商店列表,您无法同时支持方案1和其他两个方案。您必须在Play商店中拥有两个完全独立的应用程序:一个仅使用可在所有Android设备上运行的Maps
V1,另一个使用Maps V2(在我的方案#2中使用Maps V1)在OpenGL ES 2.0+设备上运行。
另外,请记住,在2013年3月3日之后,将不再提供Maps V1
API密钥。在那之后进行Maps V1开发会变得越来越危险,因为如果开发环境出现问题,您将无法获取新的API密钥。
基本上,这意味着与以前相比,依赖Google Maps开发应用程序的方式新颖有趣。即使您说要彻底放弃Maps
V1,也存在属于我的方案2的设备。希望不会有很多,尽管肯定有一些(例如,靠近我的HTC EVO 3G)。不应有运行Android 3.0及更高版本的设备-
我很确定OpenGL ES 2.0是Android 3.0的硬性要求,并且Play商店应该在所有这些设备上(因此, Google
Play服务应可用于所有服务)。
坦白说,对于某些开发人员来说,最好的答案是完全放弃Google的地图,并使用OpenStreetMap或其他具有更高稳定性的东西(如果他们想支持Android
1.x / 2.x设备)。



