【发布时间】:2018-11-04 10:29:48
【问题描述】:
当我执行 flutter 运行时出现错误
找不到目标文件“lib/main.dart”。
为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
你从哪个目录执行命令。请将
flutter doctor的输出添加到您的问题中。
标签: flutter flutter-dependencies flutter-test
当我执行 flutter 运行时出现错误
找不到目标文件“lib/main.dart”。
为什么会发生这种情况,我该如何解决?
【问题讨论】:
flutter doctor 的输出添加到您的问题中。
标签: flutter flutter-dependencies flutter-test
只要您设置了目标文件路径,您就可以从任何 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));
}
main.dart
class App extends StatefulWidget {
final dynamic configuredApp;
App(this.configuredApp);
@override
_AppState createState() => _AppState();
}
事实证明,如果您没有 main.dart 文件和此文件中引用的方法 main() {},Android Studio 中的某些构建步骤将失败,主要与 Gradle 相关。
以下与颤振构建错误相关的更多信息/解决方案:以非零退出值 1 结束
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"
}
]
希望这会有所帮助。
【讨论】:
Flutter 正在 lib 文件夹中寻找 main.dart,而您必须在任何其他包中都有文件。
最好的解决方案是将您的main.dart 文件放在lib 文件夹中。 Flutter run 命令肯定会起作用。
它对我有用。
main.dart 网址应该是:
<app dir>/lib/main.dart
【讨论】:
所以基本上当你执行这个时
flutter run
Flutter 尝试在 /lib 目录中查找 main.dart。
因此,如果您有一个文件存在于/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
其中--target-platform=android-arm64 是可选的,适用于 64 位 Android 设备,这有助于减少 APK 大小,否则会生成包含 32 位和 64 位二进制文件的胖 APK。更多信息here
【讨论】:
如果你使用的是 vscode...
发生错误时,vscode文件夹出现在侧边栏中。它里面有launch.json文件。
您可以更改launch.json文件中的"program": "..."属性以在您想要的目录中运行.dart文件。
【讨论】:
这发生在我使用 Visual Studio Code 时。我解决此问题的方法是编辑.vscode/launch.json 文件并将"program" 的值更改为我的main.dart 文件的绝对路径(例如C://...)。
【讨论】:
在 android studio 中为我工作
这会执行快照应用程序来配置根配置文件以运行您的应用程序
【讨论】:
检查文件夹 .vscode>launch.json 并添加配置:
如果你已经改变了 "program": "path of main.dart example: lib/main.dart"
{
"name": "Dart",
"type": "dart",
"request": "launch",
"program": "lib/main.dart"
},
【讨论】:
我有一个类似的错误信息,它的发生是因为我不小心删除了 void main()
【讨论】:
VSCode 用户:请导航到 launch.json 并将“程序”行替换为以下内容:
"Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
【讨论】:
如果您在vs code 中使用Debug Mode,请确保vs code 工作文件夹是您的Flutter 项目主文件夹。
如果要更改vs code 工作文件夹,可以使用File > Open Folder 菜单或Ctrl+O 快捷方式。
当我更改文件夹时,它对我有用。
【讨论】:
试试final FlutterDevice flutterDevice = await FlutterDevice.create
根本原因是我们用来附加和执行热重载的 ResidentRunner 会在未宣布目标时尝试查找main.dart 文件。 Attach 不提供目标,因此它始终使用默认行为。根据DaceShuckerow。
官方Repo上依然有这个问题。
【讨论】:
我的情况是什么 我忘了写调用main的代码......
void main()
{
runApp......
}
这样做很有效
【讨论】:
如果您有多个 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"
]
}]
【讨论】:
如果有人为此苦苦挣扎,对我有用的是重新创建 ios 文件夹。无论目标的位置或目标的名称如何,-t 都可以工作,并且不需要在您的 lib 文件夹中包含 main.dart。
重新创建ios文件夹
【讨论】:
如果您使用的是VSCode,请尝试以下方法:
删除项目目录中的 .vscode 文件夹并重新运行程序。
【讨论】: