将 Firebase 添加到颤振项目,破坏项目
Posted
技术标签:
【中文标题】将 Firebase 添加到颤振项目,破坏项目【英文标题】:Adding Firebase to flutter project, breaks the project 【发布时间】:2020-02-06 08:12:06 【问题描述】:我按照几个教程将 firebase 添加到我的颤振项目中。但无论我做什么,我的项目都以同样的失败告终。
我尝试创建新项目,但同样失败。
目前,我关注this tutorial。
更改应用程序级别的 build.gradle 文件后,我立即开始构建我的应用程序。我使用flutter run
在我的物理设备上运行该应用程序。
每次,我都会遇到同样的错误,并且在互联网上搜索,并没有解决问题,因此提出了问题。
我的错误:
* Error running Gradle:
ProcessException: Process "D:\Projects\flutter_creds\android\gradlew.bat" exited abnormally:
Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details
FAILURE: Build failed with an exception.
* Where:
Build file 'D:\Projects\flutter_creds\android\app\build.gradle' line: 24
* What went wrong:
A problem occurred evaluating project ':app'.
> ASCII
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1m 58s
Command: D:\Projects\flutter_creds\android\gradlew.bat app:properties
Please review your Gradle project setup in the android/ folder.
Exited (sigterm)
错误出现在我的应用级 build.gradle 文件的第 24 行。但是,那是行,我没有改变。这是我的 build.gradle(应用级别)
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists())
localPropertiesFile.withReader('UTF-8') reader ->
localProperties.load(reader)
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null)
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null)
flutterVersionCode = '1'
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null)
flutterVersionName = '1.0'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android
compileSdkVersion 28
sourceSets
main.java.srcDirs += 'src/main/kotlin'
lintOptions
disable 'InvalidPackage'
defaultConfig
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.sowingfiber.flutter_creds"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
buildTypes
release
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
flutter
source '../..'
dependencies
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
apply plugin: 'com.google.gms.google-services'
【问题讨论】:
【参考方案1】:这是由于 AndroidX 兼容性, 创建一个新项目并按照以下步骤操作:
为了使您的项目与 AndroidX 兼容,您需要将以下两行添加到您的 gradle.properties 文件中:
android.useAndroidX = true
android.enableJetifier = true
确保在您的 app build.gradle 文件中 compileSdkVersion 和 targetSdkVersion 都设置为 28
从您的主app build.gradle 文件中删除所有带有注释“Remove”的行:
android
compileSdkVersion 28
lintOptions
disable 'InvalidPackage'
defaultConfig
applicationId "YOUR_APPLICATION_ID"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" //Remove
buildTypes
release
signingConfig signingConfigs.debug
dependencies
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2' // Remove
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' // Remove
如果您尝试构建项目,您将收到与 AndroidX 核心库有关的错误,要修复它,请将代码添加到 子项目 项目级 build.gradle 文件中的类别:
buildscript
repositories
google()
jcenter()
dependencies
classpath 'com.android.tools.build:gradle:3.2.1'
subprojects
project.configurations.all
resolutionStrategy.eachDependency details ->
if (details.requested.group == 'androidx.core'
&& !details.requested.name.contains('androidx') )
details.useVersion "1.0.1"
注意 1:在第 4 步中,请记住子项目类别应位于依赖项类别之下,如果不存在,则复制并粘贴给定的代码。
我更愿意在 Android Studio 中尝试上述步骤,保存所有文件并重新启动项目,添加 Firebase 依赖项以及文档中告知的任何更改:Documentation。它会起作用的。
祝你好运!!
【讨论】:
其实这很奇怪。我正在使用 VS 代码来处理这个项目。我切换到 android studio 并且错误更改为清单文件中的错误包名称。我更改了包名称并且它起作用了。您建议的所有其他设置这次都不需要了。我想知道,VSCode 出了什么问题,它给出了不同的错误?以上是关于将 Firebase 添加到颤振项目,破坏项目的主要内容,如果未能解决你的问题,请参考以下文章
当我将 firebase_core 库添加到我的颤振项目并运行“颤振构建 ipa”时,我遇到了一个问题