Android Studio:包含 Google Maps 时的编译器设置
Posted
技术标签:
【中文标题】Android Studio:包含 Google Maps 时的编译器设置【英文标题】:Android Studio: what compiler settings when including Google Maps 【发布时间】:2014-09-08 12:51:45 【问题描述】:我在 android Studio 中创建了一个新项目并添加了一个 Google 地图活动。
我收到以下警告:
warning: com/google/android/gms/maps/GoogleMap.class(com/google/android/gms/maps:GoogleMap.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
warning: com/google/android/gms/maps/SupportMapFragment.class(com/google/android/gms/maps:SupportMapFragment.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
warning: com/google/android/gms/maps/model/LatLng.class(com/google/android/gms/maps/model:LatLng.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
warning: com/google/android/gms/maps/model/MarkerOptions.class(com/google/android/gms/maps/model:MarkerOptions.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
warning: com/google/android/gms/maps/model/Marker.class(com/google/android/gms/maps/model:Marker.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
我的猜测是我有 JDK 不匹配或其他问题。我安装了 JDK 7,当我执行 javac -version 时,我看到 1.7.0_65。我在 Android Studio 的首选项中更改了项目字节码版本,但这并没有改变这些警告。
我的 build.gradle 有这个
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
// You must install or update the Google Repository through the SDK manager to use this dependency.
compile 'com.google.android.gms:play-services:5.0.77'
compile 'com.android.support:support-v13:18.0.+'
我需要做什么来修复这些警告,还是应该在 Android Studio 中忽略它们?
【问题讨论】:
【参考方案1】:我能够根据 Jason Hocker 的提示和 this answer 解决此问题。将此添加到您的 android
gradle 任务中:
compileOptions
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
请注意,您必须安装 Java 7 JDK。我还必须将此添加到我的 gradlew
以允许 gradle 找到正确的 JDK:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
【讨论】:
【参考方案2】:“主要版本”是指 Java 版本。 Java 7 = 51,Java 6 = 50。代码是为 Java 7 编写的,这是 Android 的 dex 支持的。我不确定你正在构建的不是为 Java 7 设置的,但这就是问题所在。项目中的 Maven 构建工作正常。我没有看到你提到的错误,它也可能与 Java 6 vs 7 有关。
【讨论】:
我添加了 compileOptions sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 ,这使得错误消失了。这是最好的方法吗? Jason,我认为您的解决方案是正确的。来自 Android 文档:“默认值为“1.6”。这会影响所有编译 Java 源代码的任务。”。所以必须改成1.7或者1.8。 gradle同步后,这个文件会改成:.idea/misc.xml,在哪里可以找到:android
配置中,compileDebugJava
任务将失败并显示“无效的源版本:1.7”
自发帖以来,我已经升级了Android Studio。我不再拥有以前使用的示例应用程序,因此我尝试重新创建它。我没有收到我最初收到的消息。如果我正在做完全相同的示例,或者升级到 Studio 修复了它(我使用的是最新的金丝雀 0.8.9 版本)或者我的系统上的其他内容发生了变化,我不能发誓。我想我将 compileOptions 添加到 build.gradle 中。你有安装 java 7 吗?以上是关于Android Studio:包含 Google Maps 时的编译器设置的主要内容,如果未能解决你的问题,请参考以下文章
com.google.android.maps 在 Android Studio 中不存在
无法按照 Google“入门”页面中的说明在 Android Studio 中添加地图; Android Studio 报错