在我的应用程序中支持这两个 android map api 的最佳方法是什么?
谷歌 released the android google map api v2而 v1 仍然存在(并且更适合旧手机)。
到目前为止,我看到了两个场景。
1) 两个apks:每个api一个apk
我可以使用 google play
中提供的多个 apk 功能。
- 我如何在
google play
上进行区分?关于 opengl 支持?
这种情况意味着每次我想要构建我的项目时,我都必须复制/粘贴一些文件,更新其他文件,这可能很麻烦。
除非我使用定制的构建过程(使用 ant 或 maven)。
- 关于这件事有什么建议吗?
2) 一个apk
这可以使用 if/else
语句来实现,包括在 manifest
文件中 both api 的声明。
- 有人试过这个吗?
注意:旧手机的谷歌地图
首先,新的 v2 api 是基于 vector 的,这对 CPU/GPU 来说更重(v1 api 使用位图图 block )。
其次,新的 v2 api 需要 opengl 2.0。据说所有运行 froyo
或更高版本的 Android 设备都支持它。
Unfortunately , this is not true .
例如,google play/market 无法识别受人尊敬的 HTC magic running gingerbread(在自定义 rom 上)支持 opengl 2.0。
也许还有更多......
最佳答案
That one could be achieved using if/else statements, including in the manifest file the declaration for both the apis.
好吧, list 中不能有“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+ 设备。
此外,请记住 Maps V1 API keys are not going to be available after 3 March 2013 .在那之后进行 Maps V1 开发的风险会越来越大,因为如果您的开发环境出现问题,您将无法获得新的 API key 。
基本上,这意味着开发依赖于 Google map 的应用程序在新的和有趣的方式上比以前更糟糕。即使您说您将彻底放弃 Maps V1,也有一些设备属于我的场景 #2。希望没有那么多,尽管肯定有一些(比如坐在我附近的 HTC EVO 3G)。不应该有运行 Android 3.0 及更高版本的此类设备——我很确定 OpenGL ES 2.0 是 Android 3.0 的硬性要求,Play Store 应该在所有这些设备上(因此, Google Play 服务应该适用于所有这些服务)。
坦率地说,对于一些开发者来说,最好的答案是完全抛弃谷歌的 map ,使用 OpenStreetMap 或其他具有更高稳定性的东西,如果他们想支持 Android 1.x/2.x 设备的话。
关于java - 支持谷歌地图 API(v1 和 v2)的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998911/