43

当我执行颤振运行时出现错误

未找到目标文件“lib/main.dart”。

为什么会发生这种情况,我该如何解决?

4

17 回答 17

79

只要您设置了目标文件路径,您就可以从任何 DIR 运行任何文件,例如:

flutter run -t lib/main_dev.dart

或者

flutter run lib/dev/main_dev.dart

更新(2020 年 2 月 5 日)

但是,不建议从项目中删除main.dart

我相信你们中的大多数人都找到了这个链接,因为您正在设置/配置您的应用程序以适应不同的环境,例如 dev、stg、beta 和 prod。

例子:

main_dev.dart:

void main() async {
  dynamic configuredApp = AppConfig(
    appName: 'Flutter',
    flavorName: 'development',
    appVersion: 1.0,
    apiBaseUrl: 'https://dev-api.example.com/'
  );

  runApp(App(configuredApp));
}

主要.dart

class App extends StatefulWidget {
  final dynamic configuredApp;

  App(this.configuredApp);

  @override
  _AppState createState() => _AppState();
}

事实证明,如果您没有 main.dart 文件和该文件中引用的方法 main() {},Android Studio 中的一些构建步骤将失败,主要与 Gradle 相关。

  • 常见的构建错误(AndroidX 迁移、APK 构建等)
  • 以下与颤振构建错误相关的更多信息/解决方案:以非零退出值 1 完成

    1. 问题评论
    2. 问题评论
    3. 问题评论

使用调试器工具替代flutter run -t lib/main_dev.dart VS Code。

  • 单击“添加配置”并添加以下内容或手动添加:

.vscode/launch.json

  "configurations": [

    {
      "name": "Flutter",
      "request": "launch",
      "type": "dart",
      // "args": ["--enable-software-rendering"]
      // "flutterMode": "profile", //debug //release 
      "program": "${workspaceFolder}/lib/main_dev.dart"
    }
  ]

希望这可以帮助。

于 2018-10-26T07:20:20.093 回答
11

Flutter 正在文件夹中查找main.dartlib而您必须在任何其他包中都有文件。

最好的解决方案是将main.dart文件放在lib文件夹中。Flutter run 命令肯定会起作用。

它对我有用。

main.dart网址应该是:

<app dir>/lib/main.dart
于 2018-06-15T07:56:09.990 回答
6

所以基本上当你执行这个

 flutter run

Flutter 尝试main.dart/lib目录中查找。

因此,如果您有一个文件存在于目录的某个其他子目录中/lib或具有不同的名称,例如result_page.dart,您会遇到此错误。现在,很多答案都建议将文件重命名为main.dart或直接移动到/lib目录下。

但是您实际上可以通过简单地提供当前目录中的目标文件路径来简单地运行任何文件,如下所示 -

flutter run --target=lib/customization/result_screen.dart

所以这将简单地执行我的result_screen.dart文件存在于其他名为customization.

您还可以按照相同的逻辑生成 APK 文件,命令如下所示 -

flutter build apk --target=lib/customization/result_screen.dart --target-platform=android-arm64

where--target-platform=android-arm64是可选的,适用于 64 位 Android 设备,这有助于减少 APK 大小,否则会生成包含 32 位和 64 位二进制文​​件的胖 APK。更多信息在这里

于 2020-08-26T07:50:00.107 回答
3

如果你使用 vscode...

发生错误时,vscode文件夹出现在侧栏中。它里面有launch.json文件。

您可以更改 launch.json 文件中的"program": "..."属性以运行所需目录中的 .dart 文件。

于 2018-12-30T23:28:23.877 回答
3

这发生在我使用 Visual Studio Code 时。我解决此问题的方法是编辑.vscode/launch.json文件并将 的值更改"program"为我的文件的绝对路径main.dart(例如C://...)。

于 2019-01-21T03:53:59.570 回答
2

如果您使用可视化代码并且在调试时遇到此问题,只需转到launch.json,转到您的flutter应用所在的位置,到lib文件夹,然后到main.dart,复制路径然后添加它到launch.json中的文本程序,如下图所示

launch.json“程序”路径

于 2019-04-03T18:26:56.470 回答
1

在 android studio 这对我来说

  1. 左键单击 main.dart
  2. 右键单击配置文件 main.dart

这将执行快照应用程序以配置根配置文件并运行您的应用程序

在此处输入图像描述

于 2019-07-01T12:32:57.470 回答
1

我有一个类似的错误消息,它发生是因为我不小心删除了 void main()

于 2021-06-08T18:13:04.017 回答
1

如果您使用的是 VSCODE

检查文件夹.vscode>launch.json并添加配置:
如果您已经更改了“程序”:“main.dart 的路径示例:lib/main.dart”

 {
    "name": "Dart",
    "type": "dart",
    "request": "launch",
    "program": "lib/main.dart"
},

于 2019-11-17T19:44:15.197 回答
1

确保您的main.dart内部 lib 文件夹直接不在另一个包或目录中

在此处输入图像描述

于 2021-07-20T01:09:07.313 回答
0

尝试 final FlutterDevice flutterDevice = await FlutterDevice.create

根本原因是我们用来附加和执行热重载的ResidentRunnermain.dart将在未宣布目标时尝试查找文件。Attach 不提供目标,因此它始终使用默认行为。根据DaceShuckerow

这个问题在官方 Repo上仍然存在。

于 2019-10-30T04:50:20.117 回答
0

如果您使用Debug Modein vs code,请确保vs code工作文件夹是您的Flutter项目主文件夹。

如果要更改vs code工作文件夹,可以使用File > Open Folder菜单或Ctrl+O快捷方式。

当我更改文件夹时,它对我有用

于 2019-08-28T21:14:02.803 回答
0

VSCode 用户:请导航到 launch.json 并将“程序”行替换为以下内容:

"Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
于 2019-04-08T06:44:42.777 回答
0

我的情况是我忘记编写调用 main 的代码......

void main()
{
  runApp......
}

这样做很有效

于 2019-10-30T03:00:31.130 回答
0

如果您有多个 iOS 方案,那么您可以这样尝试:

flutter run --flavor UserDev -t lib/user/dev/main_dev.dart

为了,

"configurations": [{
            "name": "User-Dev",
            "request": "launch",
            "type": "dart",
            "program": "lib/user/dev/main_dev.dart",
            "args": [
                "--flavor",
                "UserDev"
            ]
        }]
于 2020-11-11T12:29:38.417 回答
0

如果有人为此苦苦挣扎,对我有用的是重新创建 ios 文件夹。无论目标的位置或目标的名称如何, -t 都可以工作,并且不需要在您的 lib 文件夹中包含 main.dart。

重新创建 ios 文件夹

  • 将 ios 文件夹重命名为 ios_old
  • 运行 => 颤振创建 fakeApp
  • 打开 fakeApp,将 ios 文件夹复制到你的项目中
  • 从 ios_old 迁移更改(如果您有任何更改)
  • 删除 ios_old
于 2021-03-11T11:42:48.273 回答
-1

如果您正在使用,请VSCode尝试以下方法:删除项目目录中的
.vscode文件夹并重新运行程序。

于 2020-01-07T17:15:42.310 回答