Gradle: Birden fazla proje çeşidi: myLib, tüketici özellikleriyle eşleşir


81

Ben yazdığım bir kütüphane myLibkullanımlarını RemoteMessagegelen Firebaseuygulamanın kendisi de kullanır Firebase.

Gradle kullanımı 4.7. 4.4.1'de de bununla karşı karşıya.

Nasıl düzeltilir?

project.gradle

buildscript {
    
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath 'com.google.gms:google-services:3.3.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        mavenLocal()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.test.app"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    dexOptions {
        preDexLibraries = false
        jumboMode = false
        javaMaxHeapSize "2048M"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    productFlavors {
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:27.1.1'

    implementation 'com.google.android.gms:play-services-gcm:12.0.1'
    implementation 'com.google.android.gms:play-services:12.0.1'
    implementation 'com.google.firebase:firebase-core:12.0.1'
    implementation 'com.google.firebase:firebase-messaging:12.0.1'
    implementation 'com.google.firebase:firebase-crash:12.0.1'

    implementation project(":myLib")
}

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

myLib.gradle

apply plugin: 'com.android.library'

android {
    compileSdkVersion 27



    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:27.1.1'

    implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.2'
    implementation 'com.j256.ormlite:ormlite-core:5.0'
    implementation 'com.j256.ormlite:ormlite-android:5.0'

    implementation 'com.google.firebase:firebase-messaging:12.0.1'
}

Hata çıkışı testApp\myLib> gradle clean assembleDebugvetestApp\app> gradle clean assembleDebug

Birden fazla proje çeşidi: myLib, tüketici özellikleriyle eşleşir:

  • Yapılandırma ': myLib: debugApiElements'in varyantı android-aidl:
    • ArtifactType 'android-aidl' bulundu, ancak gerekli değildi.
    • Gerekli com.android.build.api.attributes.BuildTypeAttr 'debug' ve uyumlu 'debug' değeri bulundu.
    • Com.android.build.api.attributes.VariantAttr 'debug' bulundu ancak gerekli değildi.
    • Gerekli com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' ve uyumlu 'Aar' değeri bulundu.
    • Gerekli org.gradle.usage 'java-api' ve uyumlu 'java-api' değeri bulundu.
  • Configuration ': myLib: debugApiElements'in varyantı android sınıfları:
    • ArtifactType 'android sınıfları' bulundu, ancak gerekli değildi.
    • Gerekli com.android.build.api.attributes.BuildTypeAttr 'debug' ve uyumlu 'debug' değeri bulundu.
    • Com.android.build.api.attributes.VariantAttr 'debug' bulundu ancak gerekli değildi.
    • Gerekli com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' ve uyumlu 'Aar' değeri bulundu.
    • Gerekli org.gradle.usage 'java-api' ve uyumlu 'java-api' değeri bulundu.
  • Yapılandırma ': myLib: debugApiElements'in varyantı android bildirimi:
    • ArtifactType 'android-manifest' bulundu, ancak gerekli değildi.
    • Gerekli com.android.build.api.attributes.BuildTypeAttr 'debug' ve uyumlu 'debug' değeri bulundu.
    • Com.android.build.api.attributes.VariantAttr 'debug' bulundu ancak gerekli değildi.
    • Gerekli com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' ve uyumlu 'Aar' değeri bulundu.
    • Gerekli org.gradle.usage 'java-api' ve uyumlu 'java-api' değeri bulundu.
  • Yapılandırma ': myLib: debugApiElements'in varyantı android-render:
    • ArtifactType 'android-renderscript' bulundu, ancak gerekli değildi.
    • Gerekli com.android.build.api.attributes.BuildTypeAttr 'debug' ve uyumlu 'debug' değeri bulundu.
    • Com.android.build.api.attributes.VariantAttr 'debug' bulundu ancak gerekli değildi.
    • Gerekli com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' ve uyumlu 'Aar' değeri bulundu.
    • Gerekli org.gradle.usage 'java-api' ve uyumlu 'java-api' değeri bulundu.
  • Yapılandırma ': myLib: debugApiElements'in değişken kavanozu:
    • ArtifactType 'jar' bulundu, ancak gerekli değildi.
    • Gerekli com.android.build.api.attributes.BuildTypeAttr 'debug' ve uyumlu 'debug' değeri bulundu.
    • Com.android.build.api.attributes.VariantAttr 'debug' bulundu ancak gerekli değildi.
    • Gerekli com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' ve uyumlu 'Aar' değeri bulundu.
    • Gerekli org.gradle.usage 'java-api' ve uyumlu 'java-api' değeri bulundu.

12
Google Hizmetlerini 3.2.1 kullanmak bunu düzeltir.
Paul Woitaschek

1
hayatımı kurtardın @PaulWoitaschek
NullPointer

2
yeh - bu com.google.gms: google-services: 3.3.0 ile ilgili bir hata gibi görünüyor. 3.2.1 sürümüne düşürme benim için çözüldü
Zayin Krige

1
Google Hizmeti şimdi 4.0.0'a yükseltildi. Bkz developers.google.com/android/guides/...
Peter Zhao

Yanıtlar:


86

google-servicesGradle eklentisi Google Play Hizmetleri ve Firebase ile çalışmak için yapılır 15+, ancak sürümüyle kullanıyorsun 12.0.1.

Çözüm şunlardan biri olabilir:

  • Play Hizmetlerinizi ve Firebase bağımlılıklarınızı sürüme yükseltin 15+ (artık farklı sürümleri olduğunu unutmayın)
  • Senin İptal google-servicesyükseltme 3.3.0size yükseltmek dek 15+, sürüme gradle eklentisi downgrading olduğunu 3.2.1.

DÜZENLEME 1 : Çok modüllü uygulamalarda kullanımla ilgili bilinen bir sorun vargoogle-services 3.3 . Yani eski sürümüne araçları google-servicesiçin 3.2.1hata salınır giderilen yeni sürüme kadar olabilir tek seçenek.

DÜZENLEME 2 : Yukarıda belirtilen hata sürümünde düzeltildi 4.0.1ait google-servicesgradle eklentisi! (ve sürüm 4.0.2ayrıca bazı durumlarda meydana gelen bir NPE'yi de düzeltir)

BTW, FCM'ye geçmelisiniz. GCM, çok da uzak olmayan bir gelecekte çalışmayı bırakacak.


Ionic 3'e nasıl entegre olurum? Teşekkürler!
wilfredonoyola

1
@wilfredonoyola Bu, gradle ile çalışır. Ionic projenizde gradle kullanırsanız, tam olarak aynı şekilde çalışır. Aksi takdirde, hiç alakası yoktur.
Louis CAD

Evet, ionic 3 gradle ile ilgilidir. Şu anda, Android'de yeni bir derleme yaptığımda birçok hata yaşıyorum.
wilfredonoyola

@wilfredonoyola O zaman, cevabım ve aramalarınız yapı sorunlarınızı çözmek için yeterli değilse, kendi sorunuzu gönderin
Louis CAD

28

Google hizmetlerini kullandığımda şu hatayı aldım: 3.3.0.

classpath 'com.google.gms:google-services:3.2.1'Projenizde .gradle sürümüne geçin.

Sorunu çözmeli.

Güncelleme: Muhtemelen mevcut sürümlerde meydana gelmemelidir.


2
3.3.0'a güncelledikten sonra da bununla karşılaştım, ancak yeni oyun hizmetleri / firebase sürümleri için gerekli olduğu için eski sürüme geçemiyoruz> = 15. android-developers.googleblog.com/2018/05/…
hardysim

1
@hardysim, 3.2.1 ile> = 15 firebase sürümünü kullanabilmeniz gerekir
Sree

7

3.3.1'e yükseltme yapılırken benzer bir sorunla karşılaşıldı

3.2.1'e düşürülerek düzeltildi

Firebase version> = 15'i 3.2.1 ile kullanabiliriz


1

Aşağıdaki adımlar benim için çalıştı ---

  1. Android / build.gradle dosyasına gidin.
  2. jcentre()Yöntemi arayın .
  3. Tüm jcenter()yöntemleri kendi bloğunun içinde aşağı kaydırın.

Benim için de çalıştı. İnanılmaz 😯
David Leuliette

0

Son birkaç gün içinde benzer bir sorunla karşılaştım.

implementation 'com.google.android.gms:play-services-auth:15.0.0'
implementation 'com.google.firebase:firebase-messaging:15.0.0'

çözüm, ya düşürmekti

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

veya Google Cloud Hizmetlerinden çıkıp tamamen FCM'ye geçmeyi düşünün

Farklı sürüm numaralarına sahip olduklarına dikkat edin, buradan bakabilirsiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.