6

Mam projekt z 4 modułów:google-usługi plugin nie może wykryć każdą wersję dla com.google.android.gms lub com.google.firebase - dziwne zachowanie

  • aplikacji (główny)
  • wspólny -lib
  • C
  • D

mam ustawiony prawidłowo Firebase jak stwierdza tutaj: https://firebase.google.com/docs/android/setup

W moim aplikacji modułu Nie używam żadnych dodatkowych bibliotek, tylko moduł zależności:

dependencies { 
    debugCompile project(path: ':common-lib', configuration: 'debug') 
    releaseCompile project(path: ':common-lib', configuration: 'release') 
} 

W moich common-lib modułu używam Firebase bibliotek:

dependencies { 
    (...) 
    compile 'com.google.firebase:firebase-core:11.2.0' 
    compile 'com.google.firebase:firebase-crash:11.2.0' 
    compile 'com.google.firebase:firebase-messaging:11.2.0' 
    compile 'com.google.firebase:firebase-config:11.2.0' 
    compile 'com.google.firebase:firebase-ads:11.2.0' 
} 

W ten projekt sytuacji kompiluje się, ale otrzymałem komunikat:

google-services plugin could not detect any version for com.google.android.gms or com.google.firebase, default version: 9.0.0 will be used. 
please apply google-services plugin at the bottom of the build file. 

Co jest interesujące, gdy kopiuję wspólne zależności bazy firebase do mojego modułu aplikacji, komunikat znika.

Czy to błąd? Czy coś źle zrobiłem? Czy plik wyjściowy mojej aplikacji zawiera poprawną bibliotekę firewalla w wersji 11.2.0 lub czy w komunikatach jest napisane 9.0.0?


Edited

build.gradle projekt:

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

allprojects { 
    repositories { 
     jcenter() 
     maven { 
      url 'https://maven.google.com' 
      // Alternative URL is 'https://dl.google.com/dl/android/maven2/' 
     } 
     maven { url 'https://jitpack.io' } 
    } 
} 

moduł aplikacji build.gradle

apply plugin: 'com.android.application' 

android { 
    (...) 
} 


dependencies { 

    debugCompile project(path: ':common-lib', configuration: 'debug') 
    debugTestCompile project(path: ':common-lib', configuration: 'debugTest') 
    releaseCompile project(path: ':common-lib', configuration: 'release') 

} 

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

common-lib moudle build.gradle

apply plugin: 'com.android.library' 


android { 
    (...) 
} 
dependencies { 
    (...) 
    //firebase 
    compile 'com.google.firebase:firebase-core:11.2.0' 
    compile 'com.google.firebase:firebase-crash:11.2.0' 
    compile 'com.google.firebase:firebase-messaging:11.2.0' 
    compile 'com.google.firebase:firebase-config:11.2.0' 
    compile 'com.google.firebase:firebase-ads:11.2.0' 
} 
+0

Och, myślę, że powinieneś umieścić go na wspólnej liście. Lub wszystkie, które w rzeczywistości mają zależności od Firebase –

+0

@ cricket_007 Kiedy dodaję "Zastosuj wtyczkę:" com.google.gms.google-services '"do mojej wspólnej biblioteki, pojawia się błąd:" Nie można uzyskać nieznanej właściwości "LibraryVariants "dla obiektu typu com.android.build.gradle.LibraryExtension." – AppiDevo

+0

@AppiDevo Czy próbowałeś zobaczyć drzewo zależności gradle za pomocą polecenia gradle app: dependencies? –

Odpowiedz

0

próbowałeś dodać to:

apply plugin: 'com.google.gms.google-services' poziomu głównego Gradle plik?

+0

Tak, mam to na dole pliku build.gradle modułu aplikacji (w którym nie mam zależności firebase) – AppiDevo

+0

wklej swój plik gradle w celu upewnienia się, że: – Vyacheslav

+0

quote: Następnie, w swoim pliku Gradle modułu (zazwyczaj app/build.gradle), dodaj linię wtyczki stosu na dole pliku, aby włączyć wtyczkę Gradle: – Vyacheslav

0

I rozwiązany ten problem, dodając w moich app (main) moduł zależnościami:

implementation "com.google.firebase:firebase-core:$firebase_version" 
implementation "com.android.support:appcompat-v7:$support_version" 

Więc teraz mam nad zależnościami w moim app i moim module common-lib (library). Dodałem także $firebase_version i $support_version, więc konserwacja jest łatwiejsza.Zmienne są umieszczone w projekcie gradle.build:

buildscript { 

    ext { 
     firebase_version = '11.8.0' 
     support_version = '26.1.0' 
    } 
    (...) 
} 

Problem pojawia się, ponieważ google-usługi plugin sprawdza zależności i nie znajdzie go w Gradle plik aplikacji. Ale to nie sprawdza zależności biblioteki, nawet jeśli narazić go wyraźnie zmieniając implementation do api:

common-lib gradle.build:

api "com.google.firebase:firebase-core:$firebase_version" 
api "com.android.support:appcompat-v7:$support_version" 

Nadal nie działa.