无法解析符号“GoogleApiClient”

问题描述 投票:0回答:1

我正在尝试升级我的 Google Play 服务库,以便我可以使用最新的 Android Gradle (3.2) 和 Android SDK 版本 (28)。问题是我所有的 GMS 导入都无法解决。

示例:

import com.google.android.gms.common.api.GoogleApiClient;

import com.google.android.gms.games.Games;

我已经查看了导入这些库时出现问题的各种问题,但没有一个是最新的或似乎可以解决我的问题。我尝试过使缓存/重新启动、清理/重建项目无效。目前我正在导入一个

google-play-services_lib
库,其中包含捆绑的 GMS 作为依赖项:
com.google.android.gms:play-services:12.0.1

我的项目build.gradle:

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.google.com' }
        maven { url 'https://jitpack.io' }
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.2.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

apply plugin: 'com.android.application'

android {
sourceSets {
    main {
        manifest.srcFile 'src/main/AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }

    debug.setRoot('build-types/debug')
    release.setRoot('build-types/release')
}

compileSdkVersion 28

defaultConfig {
    applicationId "com.example.exampleapp"
    minSdkVersion 14
    targetSdkVersion 28
    versionCode 34         // increment with every release
    versionName '3.0.5'   // change with every release
    setProperty("archivesBaseName", "example_$versionName")
}
signingConfigs {
    release {
        keyAlias = "example key alias"
    }
}
buildTypes {
    release {
        minifyEnabled true
    }
}
}

dependencies {
    implementation project(':google-play-services_lib')
    implementation project(':appcompat_v7')
}

repositories {
    google()
    jcenter()
    maven { url 'https://maven.google.com' }
}

我的模块/应用程序 build.gradle:

buildscript {
    repositories {
        google()
        jCenter()
        mavenCentral()
        maven {
           url 'https://maven.google.com/'
           name 'Google'
        }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:appcompat-v4:22.0.0'
    compile 'com.google.android.gms:play-services:12.0.1'
}

android {
    compileSdkVersion 28

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
    }

    // Move the tests to tests/java, tests/res, etc...
    instrumentTest.setRoot('tests')

    // Move the build types to build-types/<type>
    // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
    // This moves them out of them default location under src/<type>/... which would
    // conflict with src/ being used by the main source set.
    // Adding new build types or product flavors should be accompanied
    // by a similar customization.
    debug.setRoot('build-types/debug')
    release.setRoot('build-types/release')
}
}

希望有一种方法可以解决这些导入错误,这似乎是支持库的 gradle 构建与实际项目本身之间的脱节......

android-studio build.gradle
1个回答
0
投票

找到了。对于从一路回来的迁移(如目标 API <= 21), 摆脱使用捆绑/手动库并坚持使用较新的 Gradle 版本

  1. 从 Android Manifest 中删除指定 Google Play 服务版本(捆绑版本)的元标记

  2. 删除你的

    google-play-services_lib

  3. 将必要的 GMS 依赖项添加到项目级别

    build.gradle
    ,无论是手动还是在文件 → 项目结构 → MyApp 模块 → 依赖项选项卡中添加库,即使它没有显示在新的 Android Studio 的库搜索中。

示例:

implementation 'com.google.android.gms:play-services-base:16.0.1'

我知道这是相当明显的,但这可能是一篇很好的文章,用于将使用 GMS 的较旧的 Android 应用程序迁移到较新的版本。这至少可以让您选择要使用的 GMS 模块,而不是笨重的捆绑包。

2023 年更新:

只需使用编目库依赖项(即

implementation libs.play.services.ads

更多信息:https://docs.gradle.org/current/userguide/platforms.html

© www.soinside.com 2019 - 2024. All rights reserved.