Почему эта ошибка, связанная с пожарной базой, возникает во время выполнения проекта на устройстве android? - PullRequest
0 голосов
/ 21 января 2020

В моем проекте флаттера появляются ошибки, связанные с пожарной базой. Это требует поддержки androidx, поэтому я создал новый проект с помощью этой команды

flutter create --androidx -t app --org com.giftbaar.flash_chat -a kotlin -i swift flash_chat

flutter pub get работает хорошо, затем я запускаю свой проект на Android Emulator и вот моя ошибка с flutter run командой

abhishekkumar@Abhisheks-MacBook-Air flash_chat % flutter run

Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling software rendering with
"--enable-software-rendering".
Launching lib/main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...                                  
Note: /Users/abhishekkumar/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.3+2/android/src/main/java/io/flutter/plugins/firebase/core/FirebaseCorePlugin.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.                                                               
Note: /Users/abhishekkumar/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.0+1/android/src/main/java/io/flutter/plugins/firebase/cloudfirestore/CloudFirestorePlugin.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.                                                                 
D8: Cannot fit requested classes in a single dex file (# methods: 81454 > 65536)                                   
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:                            
The number of method references in a .dex file cannot exceed 64K.                                                  
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html                      
        at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131)        
        at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118)             
        at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102)
        at com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:444)               
        at com.android.build.gradle.internal.tasks.Workers$ActionFacade.run(Workers.kt:335)                        
        at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50)                        
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:47)                    
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:65)     
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:61)     
        at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)         
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.execute(NoIsolationWorkerFactory.java:61)      
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)                               
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)                               
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)       
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:56)        
        at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:215)                
        at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:210)                
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)                                                
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)                                 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)                                                
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)  
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)                   
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)                         
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)                         
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)   
        at java.lang.Thread.run(Thread.java:748)                                                                   
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete                         
        at com.android.tools.r8.utils.t.a(:55)                                                                     
        at com.android.tools.r8.D8.run(:11)                                                                        
        at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:116)             
        ... 34 more                                                                                                
Caused by: com.android.tools.r8.utils.AbortException: Error: null, Cannot fit requested classes in a single dex file (# methods: 81454 > 65536)
        at com.android.tools.r8.utils.Reporter.a(:21)                                                              
        at com.android.tools.r8.utils.Reporter.a(:7)                                                               
        at com.android.tools.r8.dex.VirtualFile.a(:33)                                                             
        at com.android.tools.r8.dex.VirtualFile$h.a(:5)                                                            
        at com.android.tools.r8.dex.ApplicationWriter.a(:13)                                                       
        at com.android.tools.r8.dex.ApplicationWriter.write(:35)                                                   
        at com.android.tools.r8.D8.d(:44)                                                                          
        at com.android.tools.r8.D8.b(:1)                                                                           
        at com.android.tools.r8.utils.t.a(:23)                                                                     
        ... 36 more                                                                                                


FAILURE: Build failed with an exception.                                                                           

* What went wrong:                                                                                                 
Execution failed for task ':app:mergeDexDebug'.                                                                    
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade                  
   > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:                       
     The number of method references in a .dex file cannot exceed 64K.                                             
     Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html                 

* 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 14m 11s                                                                                            
Running Gradle task 'assembleDebug'...                                                                             
Running Gradle task 'assembleDebug'... Done                       860.2s (!)
[!] The shrinker may have failed to optimize the Java bytecode.
    To disable the shrinker, pass the `--no-shrink` flag to this command.
    To learn more, see: https://developer.android.com/studio/build/shrink-code
Gradle task assembleDebug failed with exit code 1

А вот и мой паб c .yaml

name: flash_chat
description: Start your chatting

version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  flutter_launcher_icons: ^0.7.4
  animated_text_kit: ^2.0.0
  firebase_core: ^0.4.3+2
  firebase_auth: ^0.15.3+1
  cloud_firestore: ^0.13.0+1

flutter_icons:
  android: true
  ios: true
  image_path: "assets/icon/icon.png"

dev_dependencies:
  flutter_test:
    sdk: flutter


flutter:

  uses-material-design: true
  assets:
    - images/
    - assets/


Вот уровень проекта build.gradle

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

и вот уровень приложения 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.giftbaar.flash_chat.flash_chat"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "androidx.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 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

Все нормально и работает в iOS, но только Android создают проблемы? Что нужно сделать, чтобы решить проблему?

Ответы [ 2 ]

1 голос
/ 26 января 2020

По умолчанию Flutter поддерживает Android SDK v16 (Jelly Bean, выпущенный в 2012 году), но multidex действительно не работает с Jelly Bean (хотя это возможно). Настройка Jelly Bean для работы выходит за рамки этой кодовой метки, поэтому мы изменим минимальную целевую версию SDK с v16 на v21 (Lollipop, выпуск 2014 г.).

Чтобы изменить минимальную целевую версию SDK:

Откройте android / app / build.gradle, затем найдите строку с надписью minSdkVersion 16. Измените эту строку на minSdkVersion 21. Сохраните файл.

1 голос
/ 22 января 2020

Обновите minSdkVersion:

С:

minSdkVersion 16

до следующего:

minSdkVersion 23
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...