将 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 文件compileSdkVersiontargetSdkVersion 都设置为 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 检索到颤振项目时出错

当我将 firebase_core 库添加到我的颤振项目并运行“颤振构建 ipa”时,我遇到了一个问题

颤振问题中的 Firebase 实施

将多个firebase项目添加到一个flutter(android部分)项目中

颤振)使用firebase有问题

无法将firebase添加到android(颤振)