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 
}