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

标签 java android google-maps

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

谷歌 released the android google map api v2v1 仍然存在(并且更适合旧手机)。

到目前为止,我看到了两个场景。

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 语句”。

从我的角度来看,基本上有三种情况:

  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 文件,因此您不能为同一个 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/

相关文章:

javascript - 引用错误: $ is not defined

javascript - 使用 FileReader 加载 CSV 以制作 map 标记的 JS 对象( map API)

java - Cordova错误: Failed to execute shell command "getprop,dev.bootcomplete""

android - VideoView无法打开下载目录中的视频文件(权限被拒绝)

java - 无法解析项目 : Android library and Java library module dependency

android - RxJava 中的 CompositeDisposable 是什么

google-maps - 停止将谷歌地图拖到视觉范围之外

java - play 2.0 发送邮件异常

java - Swing 图形不会显示 - Java

java - 从 Java 运行时隐藏 Putty 终端