错误:无法访问zzbgl。

11

我正在开发一个应用程序,但是我遇到了以下错误:

error: cannot access zzbgl
class file for com.google.android.gms.internal.zzbgl not found

我知道在StackOverflow上有一个与我遇到相同错误的问题,发布于4天前,但是答案对我的情况没有帮助。(我指的是这个)

在我的项目中设置Firebase分析后,错误就出现了。

我的build.gradle (Module: app)文件如下:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 26
    buildToolsVersion '27.0.3'
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        applicationId 'com.geoactio.montferri'
        minSdkVersion 14
        targetSdkVersion 26
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    dependencies {
         implementation 'com.android.support:multidex:1.0.3'
         implementation 'com.android.support:appcompat-v7:26.1.0'
//        compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.0'
        implementation 'com.google.android.gms:play-services:12.0.1'
        //implementation 'com.google.android.gms:play-services-maps:15.0.1'
        //implementation 'com.google.android.gms:play-services-location:15.0.1'
        implementation "com.google.android.gms:play-services-base:15.0.1"
        implementation 'com.navercorp.pulltorefresh:library:3.2.3@aar'

    }
    productFlavors {
    }
    lintOptions {
        disable 'MissingTranslation'
    }

    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }
}
repositories {
    maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases' }
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-messaging:17.1.0'

    implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
    transitive = true;
    }
}

apply plugin: 'com.google.gms.google-services'

我的 build.gradle (项目:myPorojectName) 文件如下:

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath 'com.google.gms:google-services:4.1.0'
    }
}

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

然后当我点击错误时,它会将我带到new MarkerOptions()之后的此处:

Translated:

当我点击错误时,它会将我带到new MarkerOptions()之后这里:

mapView.addMarker(new MarkerOptions().position(new LatLng(puntomarker.getLatitud(), puntomarker.getLongitud()))
                    .zIndex(0.5f)
                    .anchor(0.5f, 0.5f)
                    .title(puntomarker.getId() + "")
                    .snippet(puntomarker.getNombre())
                    .icon(BitmapDescriptorFactory.fromBitmap(((BitmapDrawable) marker).getBitmap())));

(其中 mapView 是一个 GoogleMap 实例)。

我希望有人能够看到错误并解决它,非常感谢您的提前帮助。 如果您需要更多信息以便解决此问题,请告诉我。


请参考此stackoverflow答案 - Roberto Manfreda
我认为你在 build.gradle(根级别)中缺少 google() 依赖。 - Roberto Manfreda
不要导入完整的Play服务。只添加你需要的依赖项。Play服务是一个庞大的库。 - Vivek Mishra
我只更改和添加了地图、位置和分析功能,现在它可以工作了!感谢您的帮助 @VivekMishra - P. Vera
谢谢,但是Vivek的回答解决了问题!@RobertoManfreda - P. Vera
4个回答

16

Google API Release Notes表明,支持组合的play-services库在2018年4月已经结束:

从15.0.0开始,将不再有play-services别名目标来拉取所有Google Play服务组件。这已经被建议不要使用一段时间了。

你不能再像以前一样指定对组合的Google Play服务目标的单个依赖关系:

implementation 'com.google.android.gms:play-services:12.0.1'.
当使用旧版本的支持时,会导入比您所需更多的Google Play库。请参见设置指南表1中的API列表,并仅包含应用程序使用的特定API。
检查Google Maven Repository,确认12.0.1版本是综合play-services目标的最后一个版本。
因此,请删除上述实现,并仅使用:
implementation "com.google.android.gms:play-services-base:15.0.1"

如果您同时使用其他Play服务,请将它们作为单独的依赖项添加。


2

我认为你出错的主要原因是使用了两个不同版本的play services库。

        implementation 'com.google.android.gms:play-services:12.0.1'

这里是 12.0.1
        implementation "com.google.android.gms:play-services-base:15.0.1"

这里使用的版本是15.0.1。

尽量在各处使用相关库的同一个版本。


如果我升级版本,我会遇到另一个错误,但是按照他们告诉我的,我进行了更改,并且只使用了我需要的库,而不是整个谷歌服务。谢谢! - P. Vera
是我建议你这样做的。 - Vivek Mishra
@AlexMamo,也许你对此是错误的。我刚试过了,我成功同步了我的项目。它只是给出了一个警告,建议避免使用bundle。 - Vivek Mishra
@AlexMamo,这就是我想说的,虽然我们不应该使用整个Play服务包,但你所说的整个Play服务已经不存在是错误的。我尝试过并且能够在我的项目中包含完整的Play服务依赖项。所以我只是想指出它仍然存在。 - Vivek Mishra
你能使用不同的服务吗?恐怕你不能。 - Alex Mamo
显示剩余4条评论

0

你只需要更改一个依赖项,因为12.0.1已经不再使用了。

implementation 'com.google.android.gms:play-services:12.0.1'

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

然后按同步Gradle

希望这可以帮到你


这是@VivekMishra在下面发布的相同解决方案,正如我所说,当我这样做时出现了错误。正确的解决方案写在原始帖子的评论中(也是同一用户)。无论如何,还是谢谢你的帮助。 - P. Vera

0

更新所有依赖项的版本。通常,如果您正在处理多个新旧依赖项,则会出现此错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接