Flutter:未找到目标文件 "lib/main.dart"
Flutter : Target file "lib/main.dart" not found
当我执行 flutter 运行 时出现错误
未找到目标文件"lib/main.dart"。
为什么会发生这种情况,我该如何解决?
Flutter 正在 lib
文件夹中寻找 main.dart
,而您必须在任何其他包中找到文件。
最佳解决方案是将 main.dart
文件放在 lib
文件夹中。 Flutter 运行 命令肯定会起作用。
对我有用。
main.dart
url 应该是:
<app dir>/lib/main.dart
您可以 运行 任何目录中的任何文件,前提是您设置了目标文件路径,例如:
flutter run -t lib/main_dev.dart
或
flutter run lib/dev/main_dev.dart
更新(2020 年 2 月 5 日)
但是不建议从您的项目中删除 main.dart。
我敢肯定你们中的大多数人都发现了这个 link 因为您正在设置/配置您的应用程序以适应不同的环境,例如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 相关这个文件。
- 常见构建错误(AndroidX 迁移、APK 构建等)
以下与 flutter 构建错误相关的更多信息/解决方案:以非零退出值 1 完成
flutter run -t lib/main_dev.dart
的替代方案
在 VS Code 中使用调试器工具。
- 单击 "Add Configuration" 并添加以下内容或手动添加:
.vscode/launch.json
"configurations": [
{
"name": "Flutter",
"request": "launch",
"type": "dart",
// "args": ["--enable-software-rendering"]
// "flutterMode": "profile", //debug //release
"program": "${workspaceFolder}/lib/main_dev.dart"
}
]
希望这对您有所帮助。
如果您正在使用 vscode...
出现错误时,边栏出现vscode文件夹。它里面有 launch.json 文件。
您可以将 launch.json 文件中的 "program": "..." 属性 更改为 运行 .dart 文件在你想要的目录中。
这发生在我使用Visual Studio代码时。我所做的解决问题的方法是编辑 .vscode/launch.json
文件并将 "program"
的值更改为我的 main.dart
文件的绝对路径(例如 C://...
)。
如果您使用的是可视化代码,并且在调试时遇到了这个问题,
只需转到 launch.json,转到您的 flutter 应用程序所在的位置,到 lib 文件夹,然后到 main.dart,复制路径,然后将其添加到文本 program 在 launch.json 如下图所示
launch.json "program" path
VSCode 用户:请导航至 launch.json 并将 "Program" 行替换为以下内容:
"Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
在android studio 这个工作对我来说
- 左键单击 main.dart
- 在配置文件中右击 main.dart
这会执行快照应用程序来配置根配置文件 运行 您的应用程序
如果您在 vs code
中使用 Debug Mode
,请确保 vs code
工作文件夹是您的 Flutter
项目主文件夹。
如果要更改 vs code
工作文件夹,可以使用 File > Open Folder
菜单或 Ctrl+O
快捷方式。
当我更改文件夹时,它对我有效。
我的情况是什么
我忘了写调用main的代码....
void main()
{
runApp......
}
这样做有效
尝试final FlutterDevice flutterDevice = await FlutterDevice.create
根本原因是我们用来附加和执行热重载的 ResidentRunner 会在未宣布目标时尝试查找 main.dart
文件。 Attach 不提供目标,因此它始终使用默认行为。根据 DaceShuckerow.
官方 Repo.
上仍然存在此问题
如果您正在使用 VSCODE
检查文件夹.vscode>launch.json并添加配置:
如果你已经有了它,请更改 "program":"path of main.dart example: lib/main.dart"
{
"name": "Dart",
"type": "dart",
"request": "launch",
"program": "lib/main.dart"
},
如果您使用的是 VSCode
,请尝试此方法:
删除项目目录中的 .vscode 文件夹并重新运行程序。
所以基本上当你执行这个
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
如果您有多个 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 文件夹
- 将 ios 文件夹重命名为 ios_old
- 运行 => flutter 创建 fakeApp
- 打开fakeApp,复制ios文件夹到你的项目
- 从 ios_old 迁移更改(如果您有任何更改)
- 删除ios_old
我有一个类似的错误消息,它发生是因为我不小心删除了 void main()
确保你的 main.dart
inside lib 文件夹直接不在另一个包或目录中
当我执行 flutter 运行 时出现错误
未找到目标文件"lib/main.dart"。
为什么会发生这种情况,我该如何解决?
Flutter 正在 lib
文件夹中寻找 main.dart
,而您必须在任何其他包中找到文件。
最佳解决方案是将 main.dart
文件放在 lib
文件夹中。 Flutter 运行 命令肯定会起作用。
对我有用。
main.dart
url 应该是:
<app dir>/lib/main.dart
您可以 运行 任何目录中的任何文件,前提是您设置了目标文件路径,例如:
flutter run -t lib/main_dev.dart
或
flutter run lib/dev/main_dev.dart
更新(2020 年 2 月 5 日)
但是不建议从您的项目中删除 main.dart。
我敢肯定你们中的大多数人都发现了这个 link 因为您正在设置/配置您的应用程序以适应不同的环境,例如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 相关这个文件。
- 常见构建错误(AndroidX 迁移、APK 构建等)
以下与 flutter 构建错误相关的更多信息/解决方案:以非零退出值 1 完成
flutter run -t lib/main_dev.dart
的替代方案
在 VS Code 中使用调试器工具。
- 单击 "Add Configuration" 并添加以下内容或手动添加:
.vscode/launch.json
"configurations": [
{
"name": "Flutter",
"request": "launch",
"type": "dart",
// "args": ["--enable-software-rendering"]
// "flutterMode": "profile", //debug //release
"program": "${workspaceFolder}/lib/main_dev.dart"
}
]
希望这对您有所帮助。
如果您正在使用 vscode...
出现错误时,边栏出现vscode文件夹。它里面有 launch.json 文件。
您可以将 launch.json 文件中的 "program": "..." 属性 更改为 运行 .dart 文件在你想要的目录中。
这发生在我使用Visual Studio代码时。我所做的解决问题的方法是编辑 .vscode/launch.json
文件并将 "program"
的值更改为我的 main.dart
文件的绝对路径(例如 C://...
)。
如果您使用的是可视化代码,并且在调试时遇到了这个问题, 只需转到 launch.json,转到您的 flutter 应用程序所在的位置,到 lib 文件夹,然后到 main.dart,复制路径,然后将其添加到文本 program 在 launch.json 如下图所示
launch.json "program" path
VSCode 用户:请导航至 launch.json 并将 "Program" 行替换为以下内容:
"Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
在android studio 这个工作对我来说
- 左键单击 main.dart
- 在配置文件中右击 main.dart
这会执行快照应用程序来配置根配置文件 运行 您的应用程序
如果您在 vs code
中使用 Debug Mode
,请确保 vs code
工作文件夹是您的 Flutter
项目主文件夹。
如果要更改 vs code
工作文件夹,可以使用 File > Open Folder
菜单或 Ctrl+O
快捷方式。
当我更改文件夹时,它对我有效。
我的情况是什么 我忘了写调用main的代码....
void main()
{
runApp......
}
这样做有效
尝试final FlutterDevice flutterDevice = await FlutterDevice.create
根本原因是我们用来附加和执行热重载的 ResidentRunner 会在未宣布目标时尝试查找 main.dart
文件。 Attach 不提供目标,因此它始终使用默认行为。根据 DaceShuckerow.
官方 Repo.
上仍然存在此问题如果您正在使用 VSCODE
检查文件夹.vscode>launch.json并添加配置:
如果你已经有了它,请更改 "program":"path of main.dart example: lib/main.dart"
{
"name": "Dart",
"type": "dart",
"request": "launch",
"program": "lib/main.dart"
},
如果您使用的是 VSCode
,请尝试此方法:
删除项目目录中的 .vscode 文件夹并重新运行程序。
所以基本上当你执行这个
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
如果您有多个 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 文件夹
- 将 ios 文件夹重命名为 ios_old
- 运行 => flutter 创建 fakeApp
- 打开fakeApp,复制ios文件夹到你的项目
- 从 ios_old 迁移更改(如果您有任何更改)
- 删除ios_old
我有一个类似的错误消息,它发生是因为我不小心删除了 void main()
确保你的 main.dart
inside lib 文件夹直接不在另一个包或目录中