【发布时间】:2017-10-29 00:33:29
【问题描述】:
长话短说:我正在将一个 Android 应用从使用 Azure 移动应用服务更改为使用 Google Firebase。 Firebase 设置 Javascript 非常简单直接,但我在设置 Android 时遇到了无穷无尽的问题。
我的应用程序包含三个模块:Full、Lite 和作为库的第三个模块。 我正在尝试设置应用程序,以便完整版支持 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 存储库和构建工具。
现在这又产生了另一个问题 - 我似乎在网上任何地方都找不到。由于以下错误,Gradle 将无法同步:
"Could not get unknown property 'LibraryVariants' for object of type com.android.build.gradle.LibraryExtension"
此错误显示在包含以下内容的库模块 gradle 构建文件中:
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 Studio 没有为这个问题提供额外的帮助。
抱歉,这个问题很长,但我是 Android 开发的新手 - 我不完全了解库方面如何与 Gradle 相关,以及如何正确集成 Firebase,因为文档有点稀疏且内置工具没有用。我不知道这个错误是否与 Firebase 有任何关系,或者它是否只是一个简单的 Gradle 不匹配,但任何帮助将不胜感激!
我应该说,在更新 Android Studio 版本和相关工具之前,我对这个库结构没有任何问题 - 但是这可能已被 Firebase 库问题所掩盖。在这些更改之前,该应用与 Azure 配合使用
【问题讨论】:
-
您应该只将
apply plugin: 'com.google.gms.google-services'放在应用程序中,而不是在模块本身中。 -
@riteshakya037,您能进一步解释一下吗?有没有关于你描述的文件?
标签: android android-studio firebase gradle google-play-services