我不知道哪个gms,gcm版本适合我的项目

时间:2018-03-26 01:31:05

标签: android google-cloud-messaging

我正在运行gcm web服务器,但它有超过gcm版本(以前的firebase)

所以,引用旧项目并使用该项目的gcm依赖项。

我看到了这个问题:enter image description here

但它对我不起作用。

我的gradle设置如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation project(path: ':permissionchecker')
    implementation project(path: ':datastateview')
    implementation 'com.android.support:appcompat-v7:25.1.0'
    implementation 'com.android.support:support-vector-drawable:25.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.squareup.retrofit2:converter-scalars:+'
    implementation 'com.squareup.retrofit2:converter-gson:+'
    implementation 'me.relex:circleindicator:1.2.2@aar'
    implementation 'com.android.support:design:25+'
    implementation 'com.android.support:support-v4:25+'
    implementation 'com.android.support:recyclerview-v7:25+'
    implementation 'br.com.simplepass:loading-button-android:+'
    implementation 'com.googlecode.android-query:android-query:0.25.9'
    implementation 'org.altbeacon:android-beacon-library:2.+'
    compile 'com.google.android.gms:play-services-gcm:10.0.1'
    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

root build.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'
    classpath 'com.google.gms:google-services:3.0.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

我试过很多版本,但我遇到了很多例外。 像

  

java.lang.IllegalAccessError:方法'void android.support.v4.content.ContextCompat。()'无法访问“com.google.android.gms.iid.zzd”类(com.google的声明。 android.gms.iid.zzd'出现在base.apk中)

  

错误:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败。   java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex

和其他任何人。

1 个答案:

答案 0 :(得分:0)

这是因为存在重复的依赖关系。您不能使用+使用不精确的库版本。你不应该使用这个:

implementation 'com.android.support:design:25+'

因为这意味着您希望获得最新版本的support library 25。所以,它将与:

相同
implementation 'com.android.support:design:25.4.0'

使用appcompat-v7和support-v4支持设计是隐含的。所以,上面的代码与:

相同
implementation 'com.android.support:design:25.4.0'
implementation 'com.android.support:appcompat-v7:25.4.0'
implementation 'com.android.support:support-v4:25.4.0'

最后,您的支持库依赖项将是:

implementation 'com.android.support:appcompat-v7:25.1.0'
implementation 'com.android.support:support-vector-drawable:25.1.0'
implementation 'com.android.support:design:25.4.0'
implementation 'com.android.support:appcompat-v7:25.4.0'
implementation 'com.android.support:support-v4:25.4.0'

显然是重复的。

您需要check if you have another duplicated libraries

gradle -q dependencies your-app-project:dependencies

your-app-project更改为您的模块名称,例如app