【问题标题】:Flutter Error : VM snapshot invalid and could not be inferred from settingsFlutter 错误:VM 快照无效,无法从设置中推断出
【发布时间】:2019-06-25 09:22:20
【问题描述】:

将颤振作为一个模块添加到我现有的项目中并导致崩溃。 关注这个link

2019-06-24 11:08:24.366 30834-30834/com.alarmnet.tc2 E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
2019-06-24 11:08:24.366 30834-30834/com.alarmnet.tc2 E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
2019-06-24 11:08:24.366 30834-30834/com.alarmnet.tc2 E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
2019-06-24 11:08:24.366 30834-30834/com.alarmnet.tc2 A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
2019-06-24 11:08:24.368 30834-30834/com.alarmnet.tc2 A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 30834 (om.alarmnet.tc2)

【问题讨论】:

    标签: android flutter


    【解决方案1】:

    找到解决办法:

    如果您尝试按照 link 为现有项目添加颤振

    打开你的 Flutter SDK:FlutterSdk/flutter/packages/flutter_tools/gradle/flutter.gradle

    • 在任何编辑器中打开 flutter.gradle 并进行以下更改

    来自:

       // We know that the flutter app is a subproject in another Android app when these tasks exist.
    Task packageAssets = project.tasks.findByPath(":flutter:package${variant.name.capitalize()}Assets")
    Task cleanPackageAssets = project.tasks.findByPath(":flutter:cleanPackage${variant.name.capitalize()}Assets")
    Task copyFlutterAssetsTask = project.tasks.create(name: "copyFlutterAssets${variant.name.capitalize()}", type: Copy) {
    dependsOn flutterTasks
    if (packageAssets && cleanPackageAssets) {
    dependsOn packageAssets
    dependsOn cleanPackageAssets
    into packageAssets.outputDir
    } else {
    dependsOn variant.mergeAssets
    dependsOn "clean${variant.mergeAssets.name.capitalize()}"
    into variant.mergeAssets.outputDir
    }
    flutterTasks.each { flutterTask ->
    with flutterTask.assets
    // Include the snapshots in the assets directory.
    if (flutterBuildMode != 'release' || targetPlatformValue != 'android-arm-all') {
    with flutterTask.snapshots
    }
    }
    }
      if (packageAssets) {
          String mainModuleName = "app"
         try {
                   String tmpModuleName = project.rootProject.ext.mainModuleName
                   if (tmpModuleName != null && !tmpModuleName.empty) {
                mainModuleName = tmpModuleName
         }
       } catch (Exception e) {
       }
     Only include configurations that exist in parent project.
     Task mergeAssets = project.tasks.findByPath(":${mainModuleName}:merge${variant.name.capitalize()}Assets")
          if (mergeAssets) {
            mergeAssets.dependsOn(copyFlutterAssetsTask)
      }
    } else {
      def processResources = variant.outputs.first().processResources
      processResources.dependsOn(copyFlutterAssetsTask)
     }
    

    收件人:

        // We know that the flutter app is a subproject in another Android app when these tasks exist.
    Task packageAssets = project.tasks.findByPath(":flutter:package${variant.name.capitalize()}Assets")
    Task cleanPackageAssets = project.tasks.findByPath(":flutter:cleanPackage${variant.name.capitalize()}Assets")
    Task copyFlutterAssetsTask = project.tasks.create(name: "copyFlutterAssets${variant.name.capitalize()}", type: Copy) {
    dependsOn flutterTasks
    if (packageAssets && cleanPackageAssets) {
    dependsOn packageAssets
    dependsOn cleanPackageAssets
    into packageAssets.outputDir
    } else {
    dependsOn variant.mergeAssets
    dependsOn "clean${variant.mergeAssets.name.capitalize()}"
    into variant.mergeAssets.outputDir
    }
    flutterTasks.each { flutterTask ->
    with flutterTask.assets
    // Include the snapshots in the assets directory.
    if (flutterBuildMode != 'release' || targetPlatformValue != 'android-arm-all') {
    with flutterTask.snapshots
    }
    }
    }
    //  if (packageAssets) {
    //      String mainModuleName = "app"
    //      try {
    //               String tmpModuleName = project.rootProject.ext.mainModuleName
    //               if (tmpModuleName != null && !tmpModuleName.empty) {
    //             mainModuleName = tmpModuleName
    //     }
    //   } catch (Exception e) {
    //   }
    // Only include configurations that exist in parent project.
    // Task mergeAssets = project.tasks.findByPath(":${mainModuleName}:merge${variant.name.capitalize()}Assets")
    //      if (mergeAssets) {
    //        mergeAssets.dependsOn(copyFlutterAssetsTask)
    //  }
    //} else {
    //  def processResources = variant.outputs.first().processResources
    //  processResources.dependsOn(copyFlutterAssetsTask)
    // }
    def processResources = variant.outputs.first().processResources
    processResources.dependsOn(copyFlutterAssetsTask)
    

    保存并关注此link

    【讨论】:

      【解决方案2】:

      如果您在现有应用中添加了 Flutter,请转到 Flutter 模块 --> .android --> build.gradle。类路径必须与 Android 相同

      dependencies {
              classpath 'com.android.tools.build:gradle:3.4.2'
          }
      

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2020-04-12
        • 1970-01-01
        相关资源
        最近更新 更多