支持谷歌地图api(v1和v2)的最佳方式是什么?

Nam*_*arl 5 java android google-maps

在我的应用程序中支持android map apis的最佳方法是什么?

谷歌发布了Android谷歌地图api v2,v1仍然存在(并且对旧款手机效果更好).

到目前为止,我看到两个scenarii.

1)两个apks:每个api一个apk

我可以使用多个apk功能google play.

  • 我该如何区分google play?关于opengl的支持?

这种情况意味着每次我想构建我的项目时,我都必须复制/粘贴一些文件,更新其他可能很麻烦的文件.

除非我使用定制的构建过程(使用ant或maven).

  • 有关此事的任何建议?

2)一个apk

,人们可以利用来实现if/else的语句,包括在manifest文件中的声明的API.

  • 有没有人试过这个?

注意:旧版手机的谷歌地图

首先,新的v2 api是基于矢量的,在CPU/GPU上更重(v1 api使用位图图块).

其次,新的v2 api需要opengl 2.0.据说在所有Android设备运行froyo或以后都支持. 不幸的是,事实并非如此.

例如,谷歌游戏/市场无法识别古老的HTC魔术运行姜饼(在自定义ROM上)以支持opengl 2.0.

也许还有更多......

Com*_*are 5

可以使用if/else语句实现那个,包括在清单文件中api的声明.

好吧,你不能在清单中有"if/else语句".

从我的观点来看,基本上有三种情况:

  1. 该设备没有OpenGL ES 2.0或更高版本
  2. 该设备确实有OpenGL ES 2.0或更高版本但目前没有Google Play服务(可能是因为它没有Play商店)
  3. 该设备具有OpenGL ES 2.0或更高版本,并具有Google Play服务

正如您在对另一个答案的评论中所指出的那样,我的场景#1不能与其他两个场景共存,因为您必须拥有<uses-feature>调用OpenGL ES 2.0 的元素.并且,由于Play商店不支持基于OpenGL ES API级别的多个APK文件,因此您无法同时支持场景#1和其他两个场景同一Play商店列表.您必须在Play商店中拥有两个完全独立的应用程序:一个仅使用适用于所有Android设备的Maps V1和一个使用Maps V2的应用程序(回退到其他地方,如地图V1,用于我的场景#2)适用于OpenGL ES 2.0+设备.

另请注意,Maps V1 API密钥在2013年3月3日之后将无法使用.在此之后进行Maps V1开发变得越来越危险,因为如果您的开发环境出现问题,您将无法获得新的API密钥.

基本上,这意味着与以前的方式相比,开发依赖于Google地图的应用程序会以新的和有趣的方式吸收.即使你说你将完全放弃地图V1,也有一些设备属于我的场景#2.希望没有那么多,虽然肯定有一些(例如HTC EVO 3G坐在我附近).应该没有运行Android 3.0及更高版本的设备 - 我很确定OpenGL ES 2.0对Android 3.0来说是一个强硬的要求,Play Store应该放在所有这些设备上(因此,应为所有人提供Google Play服务).

坦率地说,对于一些开发人员来说,最好的答案就是完全抛弃Google的地图,并使用OpenStreetMap或其他具有更高稳定性的东西,如果他们想要支持Android 1.x/2.x设备的话.