8

Lange Geschichte verkürzt: Ich ändere eine Android-App von der Verwendung von Azure Mobile App-Diensten, um Google Firebase zu verwenden. Firebase war wirklich einfach und unkompliziert, um Javascript einzurichten, aber ich hatte endlose Probleme mit der Einrichtung von Android.Unbekannte Eigenschaft 'LibraryVariants' - Gradle wird nicht synchronisiert

Meine App hat drei Module: Full, Lite und ein drittes Modul, das als eine Bibliothek fungiert. Ich versuche, die App so einzurichten, dass die Vollversion Firebase-Unterstützung hat, und ich tat dies mit dem in Android Studio integrierten Assistenten. Nachdem dies geschehen ist, würde dies nicht funktionieren, da die JSON-Datei, die hinzugefügt wurde, nur den vollständigen Paketnamen enthielt. Am Ende habe ich 3 Versionen der App in der Firebase-Konsole erstellt und manuell die JSON-Datei zum Projekt hinzugefügt (net.gptiming, net.gptiming.full und net.gptiming.library). Das scheint zu funktionieren - ich kann die Firebase-Bibliotheken und das erstellte Programm verwenden.

Das nächste Problem, das ich fand, war, dass Firebase konnte nicht initialisieren - Nach einigen weiteren Stunden von Google Trawling und stackoverflow fand ich, dass dies aufgrund von nicht übereinstimmenden Bibliotheken sein könnte. Mein erster Schritt war Android Studio zu aktualisieren (auf 2.3.2) und die neuesten Google-Repositories und Build-Tools.

Nun ergab sich ein weiteres Problem - eines, das ich nirgendwo online finden kann. Gradle wird nicht aufgrund der folgenden Fehler synchronisieren:

"Could not get unknown property 'LibraryVariants' for object of type com.android.build.gradle.LibraryExtension" 

Dieser Fehler wird in dem Bibliothekmodul Gradle Build-Datei zeigt, die folgendes enthält:

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion rootProject.compileSdkVersion 
    buildToolsVersion rootProject.buildToolsVersion 
    buildToolsVersion '23.0.2' 
} 

dependencies { 
    compile 'com.google.code.gson:gson-parent:2.7' 
    compile 'com.google.firebase:firebase-core:10.2.1' 
    compile 'com.google.firebase:firebase-database:10.2.1' 
    compile 'com.google.firebase:firebase-auth:10.2.1' 
} 

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

Das Projekt Gradle Datei lautet wie folgt:

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

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


ext { 
    compileSdkVersion = 19 
    buildToolsVersion = "23.0.2" 
    storeFilePath = System.getenv('STORE_FILE') 
    storePassword = System.getenv('STORE_PASSWORD') 
    keyAlias = System.getenv('KEY_ALIAS') 
    keyPassword = System.getenv('KEY_PASSWORD') 
} 

und hier ist die Vollversion Moduldatei:

apply plugin: 'com.android.application' 

dependencies { 
    compile project(':gptiming-gptiming') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.firebase:firebase-database:10.2.1' 
    compile 'com.google.firebase:firebase-auth:10.2.1' 
} 

android { 
    compileSdkVersion rootProject.compileSdkVersion 
    buildToolsVersion rootProject.buildToolsVersion 

    if (rootProject.storeFilePath) { 
     signingConfigs { 
      release { 
       storeFile file(rootProject.storeFilePath) 
       storePassword rootProject.storePassword 
       keyAlias rootProject.keyAlias 
       keyPassword rootProject.keyPassword 
      } 
     } 
     buildTypes { 
      release { 
       signingConfig signingConfigs.release 
      } 
     } 
    } 
    buildToolsVersion '25.0.0' 
} 
apply plugin: 'com.google.gms.google-services' 

Bisher habe ich versucht, die Gradle-Version auf 2.3 zu ändern, aber Android Studio 2.3.2 wird die ältere Gradle-Version nicht unterstützen. Ich habe auch versucht, die Build-Tool-Versionen zu den oben gezeigten zu ändern, die keinen Unterschied machten. Android Studio bot keine zusätzliche Hilfe zu dem Problem an.

Sorry für die lange Frage, aber ich bin ein Anfänger, wenn es um Android-Entwicklung geht - ich verstehe nicht vollständig, wie der Bibliotheksaspekt in Bezug auf Gradle funktioniert und wie Firebase richtig zu integrieren, wie die Dokumentation ein wenig dünn ist und gebaut in Werkzeugen nützen nichts. Ich weiß nicht, ob der Fehler etwas mit Firebase zu tun hat oder ob es nur ein Gradle-Missverhältnis ist, aber jede Hilfe wäre sehr willkommen!

Ich sollte sagen, dass ich keine Probleme mit dieser Bibliotheksstruktur hatte, bevor ich die Version von Android Studio und die zugehörigen Tools aktualisierte - allerdings könnte dies durch die Firebase-Bibliotheksprobleme maskiert worden sein. Die App arbeitete mit Azure vor diesen Änderungen

+2

Sie nur Plugin setzen sollten 'gelten:‚com.google.gms.google-services'' in der Anwendung und nicht im Modul selbst. – riteshakya037

+0

@ riteshakya037, können Sie bitte weiter erklären? Gibt es Unterlagen zu Ihrer Beschreibung? –

+0

Gleiche Frage: https://stackoverflow.com/questions/44884400/unknown-property-libraryvariants-in-build-gradle und https: // stackoverflow.com/questions/45092308/failed-to-apply-plugin-com-google-gms-google-services (letzteres hat eine lösung) –

Antwort

1

Ich hatte das gleiche Problem mit meinem Bibliotheksmodul und löste es aktualisieren Gradle und Google-Dienste Versionen.

// Top-level build file where you can add configuration options common to all sub-projects/modules. 
buildscript { 
    repositories { 
     google() 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.0.0' 
     classpath 'com.google.gms:google-services:3.1.1' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

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

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