最高的Firebase版本代码也用于编译Play服务库。

9 浏览
0 Comments

最高的Firebase版本代码也用于编译Play服务库。

我在我的项目中使用了某些Firebase和Play服务库。在将Play服务插件版本更新为4.0.0之后,由于Firebase和Play服务现在对每个库使用不同的版本编码策略,其中一个库中的最高版本代码将替换所有其他库。这导致无法解析仍在使用较低版本代码的库。

build.gradle

buildscript {
    ext.kotlin_version = '1.2.41'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath 'com.google.gms:google-services:4.0.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

app.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    defaultConfig {
        applicationId "com.vanse.android"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "8.0"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        manifestPlaceholders = [onesignal_app_id               : ONE_SIGNAL_APP_ID,
                                onesignal_google_project_number: "REMOTE"]
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
    lintOptions {
        abortOnError false
    }
}
buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/' }
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.8.1'
    }
}
repositories {
    maven { url 'https://maven.google.com' }
}
dependencies {
    // 各种依赖库
}
apply plugin: 'com.google.gms.google-services'

错误信息

构建失败: 出现异常。
* 出现了什么问题:
无法解析配置“:app:debugCompileClasspath”的所有文件。
> 找不到 com.google.firebase:firebase-appindexing:16.0.0。
  需要它来运行:
      项目:app
> 找不到 com.google.firebase:firebase-ads:16.0.0。
  需要它来运行:
      项目:app
> 找不到 com.google.android.gms:play-services-auth:16.0.0。
  需要它来运行:
      项目:app
> 找不到 com.google.android.gms:play-services-gcm:16.0.0。
  需要它来运行:
      项目:app
> 找不到 com.google.android.gms:play-services-location:16.0.0。
  需要它来运行:
      项目:app
> 找不到 com.google.android.gms:play-services-base:16.0.0。
  需要它来运行:
      项目:app
      项目:app > com.google.firebase:firebase-invites:16.0.0 > com.google.android.gms:play-services-appinvite:16.0.0
      项目:app > com.google.firebase:firebase-invites:16.0.0 > com.google.android.gms:play-services-appinvite:16.0.0 > com.google.firebase:firebase-dynamic-links:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0 > com.google.firebase:firebase-iid:16.0.0 > com.google.firebase:firebase-iid-interop:16.0.0
> 找不到 com.google.android.gms:play-services-cast-framework:16.0.0。
  需要它来运行:
      项目:app
> 找不到 com.google.firebase:firebase-messaging:16.0.0。
  需要它来运行:
      项目:app > com.onesignal:OneSignal:3.9.1
> 找不到 com.google.android.gms:play-services-location:16.0.0。
  需要它来运行:
      项目:app > com.onesignal:OneSignal:3.9.1
> 找不到 com.google.android.gms:play-services-base:16.0.0。
  需要它来运行:
      项目:app > com.onesignal:OneSignal:3.9.1
> 找不到 com.google.android.gms:play-services-basement:16.0.0。
  需要它来运行:
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-measurement-connector-impl:16.0.0
      项目:app > com.google.firebase:firebase-invites:16.0.0 > com.google.android.gms:play-services-appinvite:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-common:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-measurement-connector-impl:16.0.0 > com.google.firebase:firebase-measurement-connector:16.0.0
      项目:app > com.google.firebase:firebase-invites:16.0.0 > com.google.android.gms:play-services-appinvite:16.0.0 > com.google.firebase:firebase-dynamic-links:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0 > com.google.firebase:firebase-iid:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0 > com.google.firebase:firebase-iid:16.0.0 > com.google.firebase:firebase-iid-interop:16.0.0
> 找不到 com.google.android.gms:play-services-measurement-base:16.0.0。
  需要它来运行:
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-measurement-connector-impl:16.0.0
      项目:app > com.google.firebase:firebase-invites:16.0.0 > com.google.android.gms:play-services-appinvite:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0
      项目:app > com.google.firebase:firebase-invites:16.0.0 > com.google.android.gms:play-services-appinvite:16.0.0 > com.google.firebase:firebase-dynamic-links:16.0.0
> 找不到 com.google.android.gms:play-services-stats:16.0.0。
  需要它来运行:
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0 > com.google.firebase:firebase-iid:16.0.0
> 找不到 com.google.android.gms:play-services-tasks:16.0.0。
  需要它来运行:
      项目:app > com.google.firebase:firebase-invites:16.0.0 > com.google.android.gms:play-services-appinvite:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-common:16.0.0
      项目:app > com.google.firebase:firebase-invites:16.0.0 > com.google.android.gms:play-services-appinvite:16.0.0 > com.google.firebase:firebase-dynamic-links:16.0.0
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0 > com.google.firebase:firebase-iid:16.0.0
> 找不到 com.google.android.gms:play-services-ads-identifier:16.0.0。
  需要它来运行:
      项目:app > com.google.firebase:firebase-core:16.0.0 > com.google.firebase:firebase-analytics:16.0.0 > com.google.firebase:firebase-analytics-impl:16.0.0
* 尝试:
使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获取更多日志输出。使用 --scan 运行以获取完整的信息。
* 在 https://help.gradle.org 获取更多帮助
在 36s内构建失败

0
0 Comments

最高的Firebase版本编译Play服务库时也被使用了,导致出现了问题。解决方法是将Firebase版本从16.0.1降级到15.0.0,与com.google.android.gms:play-services-maps:15.x.x相匹配,并升级最新的OneSignal插件。如果在尝试运行项目时遇到另一个错误,并且出现以下警告,则可能会出现错误:

AGPBI: {"kind":"error","text":"Program type already present: android.support.design.widget.CoordinatorLayout$Behavior","sources":[{}],"tool":"D8"}

如果是这样,请在依赖项中添加以下代码:

implementation 'com.android.support:design-v7:27.1.0'

同时确保使用与我这里完全相同的版本,否则可能会遇到问题。其他需要检查的内容有:

classpath 'com.android.tools.build:gradle:3.1.0'

classpath 'com.google.gms:google-services:3.0.0'

希望这能帮到你,因为我花了两天才解决,如果还有其他问题,请随时提问。编码愉快!

0
0 Comments

问题的原因是Gradle插件(com.onesignal.androidsdk.onesignal-gradle-plugin)存在bug或者需要更新到新版本。错误信息中指出找不到com.google.firebase:firebase-appindexing:16.0.0库,这是由于该库在当时还没有发布。查看插件源代码可以看到对v15.x.x版本的特殊处理,这可能导致bug或者需要更新到新版本。移除插件后,应用程序将不再尝试寻找未发布的16.0.0库。

解决方法是更新插件到最新版本。更新后问题得到解决。

0