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,在哪里可以找到: @JasonHocker 你在哪里添加的?如果我将它添加到我的 android 配置中,compileDebugJava 任务将失败并显示“无效的源版本:1.7” 自发帖以来,我已经升级了Android Studio。我不再拥有以前使用的示例应用程序,因此我尝试重新创建它。我没有收到我最初收到的消息。如果我正在做完全相同的示例,或者升级到 Studio 修复了它(我使用的是最新的金丝雀 0.8.9 版本)或者我的系统上的其他内容发生了变化,我不能发誓。我想我将 compileOptions 添加到 build.gradle 中。你有安装 java 7 吗?

以上是关于Android Studio:包含 Google Maps 时的编译器设置的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 2.2 来啦

重要Android Studio 2.2 来啦

Android资源收集

Google Android Studio Kotlin

com.google.android.maps 在 Android Studio 中不存在

无法按照 Google“入门”页面中的说明在 Android Studio 中添加地图; Android Studio 报错