8

長篇故事縮短:我正在更改使用Azure移動應用服務的Android應用以使用Google Firebase。 Firebase非常簡單直接地爲Javascript設置,但是我一直在獲取Android設置方面遇到無窮無盡的問題。未知'LibraryVariants'屬性 - Gradle不會同步

我的應用程序有三個模塊:完整,精簡版和充當庫的第三個模塊。 我正在嘗試安裝該應用程序,以便完整版本具有Firebase支持,並且我使用內置於Android Studio的助手進行了這一操作。這樣做後,不會生成,因爲添加的JSON文件只包含完整版本包名稱。我最終在Firebase控制檯中創建了3個應用程序版本,並手動將JSON文件添加到項目中(net.gptiming,net.gptiming.full和net.gptiming.library)。這似乎奏效了 - 我可以使用Firebase庫和構建的程序。

我發現的下一個問題是Firebase未能初始化 - 經過幾個小時的Google和stackoverflow的拖網之後,我發現這可能是由於庫不匹配造成的。 我最初的步驟是更新Android studio(2.3.2)和最新的Google存儲庫和構建工具。

現在,這又產生了另一個問題 - 我似乎無法在網上找到任何地方。搖籃不會同步因以下錯誤:

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

此錯誤是在包含以下庫模塊gradle這個build文件顯示:

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' 

項目gradle這個文件如下:

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') 
} 

,這裏是完整版本的模塊文件:

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' 

到目前爲止,我已經嘗試將Gradle版本更改爲2.3,但Android Studio 2.3.2將不支持較早的Gradle版本。我也嘗試將構建工具版本更改爲上面顯示的版本,這些版本沒有什麼區別。 Android工作室在這個問題上沒有提供額外的幫助。

對不起,我是Android開發的新手 - 我沒有完全理解庫方面對於Gradle的工作方式,以及如何正確地集成Firebase,因爲文檔有點稀疏,並且構建在工具中是沒有用的。我不知道錯誤與Firebase有什麼關係,或者它只是一個簡單的Gradle不匹配,但任何幫助將非常感謝!

我應該說,在更新Android工作室版本和相關工具之前,我對這個庫結構沒有任何問題 - 但是這可能已被Firebase庫問題所掩蓋。這些應用程序在進行這些更改之前與Azure合作

+2

您應該只把'應用插件:在應用程序和模塊本身不是「com.google.gms.google-services'' 。 – riteshakya037

+0

@ riteshakya037,請您進一步解釋一下嗎?有沒有關於你所描述的任何文件? –

+0

同樣的問題:https://stackoverflow.com/questions/44884400/unknown-property-libraryvariants-in-build-gradle和https:// stackoverflow。com/questions/45092308 /應用插件失敗 - com-google-gms-google-services(後者有解決方案) –

回答

1

我遇到了與我的庫模塊相同的問題,並解決了它更新gradle和google-services版本的問題。

// 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 
}