无法通过 gradle 导入 com.google.maps.android:android-maps-utils

Posted

技术标签:

【中文标题】无法通过 gradle 导入 com.google.maps.android:android-maps-utils【英文标题】:Can't import com.google.maps.android:android-maps-utils via gradle 【发布时间】:2014-05-29 14:29:19 【问题描述】:

我尝试在 Android Studio 0.5.4 中将com.google.maps.android:android-maps-utils 导入到我的项目中。

我得到这个 Gradle 信息错误

Information:[C:\Users\Gast1_000\android studio projects\GeoPicture\app\build\exploded-aar\com.google.maps.android\android-maps-utils\0.3\AndroidManifest.xml:2, C:\Users\Gast1_000\android studio projects\GeoPicture\app\build\exploded-aar\com.google.android.gms\play-services\4.3.23\AndroidManifest.xml:3] Main manifest has <uses-sdk android:minSdkVersion='8'> but library uses minSdkVersion='9'


Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merging failed. See console for more info.

我的 build.gradle:

dependencies 
    compile 'com.android.support:support-v13:+'
    compile 'com.google.android.gms:play-services:4.3.+'
    compile 'com.google.maps.android:android-maps-utils:0.3'

项目清单.xml

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="19" />

我尝试在 maps-utils 的清单中手动更改 minSdk 版本,但每次 gradle 同步都会将其更改回来。 在 AS 0.5.4 中添加库还有其他可能吗?

【问题讨论】:

显然您需要将项目更改为版本 9,因为 utils 库中的某些内容需要版本 9。更改外部库的清单通常不是一个好主意。 您不能只更改库的 minSdkVersion 并希望它能够工作。你不知道他们使用的是什么 API。因此,如果您想使用该库,则需要将 minSdkVersion 设置为 9,因为该库无法使用 8。 我当前的minSDK版本是15 @TimRoes 图书馆有 minSDK 8,而播放服务有 minSDK 9。我认为存在冲突,因为它取决于播放服务 【参考方案1】:

目前这似乎是一个错误:https://github.com/googlemaps/android-maps-utils/issues/60

如果 Gradle 覆盖了您的更改,只需使用 Gradle 进行这些更改(如上面链接中的建议);)

将以下代码块添加到 android .. 块内的构建文件中。

applicationVariants.all variant ->
  variant.processManifest.doFirst 
    File manifestFile = file("$buildDir/exploded-aar/com.google.maps.android/android-maps-utils/0.3/AndroidManifest.xml")
    if (manifestFile.exists()) 
      String content = manifestFile.getText('UTF-8')
      content = content.replaceAll(/minSdkVersion="8"/, 'minSdkVersion=\"9\"')
      manifestFile.write(content, 'UTF-8')
    
  

这当然不是最好的解决方案,但应该在错误修复之前这样做:

https://code.google.com/p/android/issues/detail?id=66109(匹配库时忽略 minSdkVersions)

【讨论】:

以上是关于无法通过 gradle 导入 com.google.maps.android:android-maps-utils的主要内容,如果未能解决你的问题,请参考以下文章

Gradle:通过版本分类器覆盖传递依赖

无法解决:带有 gradle 的 IntelliJ Idea 中的 com.google.android.gms:play-services

将gradle中的外部jar添加到Android项目

无法连接到火力基地

无法通过 `api` 方法从 Android 模块解析主题和样式

Gradle 无法解析 androidx.appcompat:appcompat:1.1.0-alpha01 和 com.google.android.gms:play-services-nearby