Когда я выполняю пробег с трепетанием, я получаю сообщение об ошибке
Целевой файл "lib / main.dart" не найден.
Почему это происходит и как это исправить?
Когда я выполняю пробег с трепетанием, я получаю сообщение об ошибке
Целевой файл "lib / main.dart" не найден.
Почему это происходит и как это исправить?
Вы можете запустить любой файл из любого DIR, если вы укажете путь к целевому файлу, например:
flutter run -t lib/main_dev.dart
OR
flutter run lib/dev/main_dev.dart
ОБНОВЛЕНИЕ (5 февраля 2020 г.)
Однако не рекомендуется удалять 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();
}
Оказывается, некоторые шаги сборки не будут выполнены в Android Studio, в основном связанные с Gradle, если у вас нет файла main.dart и метода main () {}, на которые есть ссылка внутри этого файла.
Дополнительная информация / решения ниже, связанные с ошибкой сборки флаттера: завершено с ненулевым значением выхода 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 ищет main.dart
в папке lib
, в то время как у вас должен быть файл внутри любого другого пакета.
Лучшее решение - поместить ваш main.dart
файл в папку lib
. Тогда команда Flutter run точно сработает.
У меня сработало.
main.dart
URL должен быть:
<app dir>/lib/main.dart
Если вы используете vscode ...
При возникновении ошибки на боковой панели появляется папка vscode. Внутри него находится файл launch.json.
Вы можете изменить свойство "program": "..." в файле launch.json, чтобы запустить файл .dart в нужном каталоге.
Это произошло, когда я использовал Visual Studio Code. Чтобы исправить эту проблему, я отредактировал файл .vscode/launch.json
и изменил значение "program"
на абсолютный путь к моему main.dart
файлу (например, C://...
).
Итак, в основном, когда вы выполняете это
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
где --target-platform=android-arm64
является необязательным и предназначен для 64-битных устройств Android, что помогает уменьшить размер APK, в противном случае генерировался бы толстый APK, включающий как 32-битные, так и 64-битные двоичные файлы. Дополнительная информация здесь
Если вы используете визуальный код и столкнулись с этой проблемой во время отладки, просто перейдите в launch.json, перейдите в то место, где находится ваше приложение flutter, в папку lib, а затем в main.dart, скопируйте путь и добавьте его в текст программы в файле launch.json, как показано на фотографии ниже
"программный" путь launch.json
Пользователи VSCode: перейдите к launch.json и замените строку «Программа» следующим:
"Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
в студии Android это Wokrs для меня
это выполняет приложение моментального снимка для настройки корневого профиля для запуска вашего приложения
Если вы используете Debug Mode
в vs code
, убедитесь, что рабочая папка vs code
является основной папкой вашего Flutter
проекта.
Если вы хотите изменить vs code
рабочую папку, вы можете использовать меню File > Open Folder
или ярлык Ctrl+O
.
Когда я меняю папку, у меня сработало.
Попробуйте final FlutterDevice flutterDevice = await FlutterDevice.create
Основная причина в том, что ResidentRunner, который мы используем для подключения и выполнения горячей перезагрузки, будет пытаться найти main.dart
файл, когда цель не объявлена. Attach не предоставляет цель, поэтому всегда использует поведение по умолчанию. Согласно DaceShuckerow.
Эта проблема все еще присутствует в официальном репозитории.
В моем случае я забыл написать код для вызова main ....
void main()
{
runApp......
}
И это сработало
Проверьте папку .vscode> launch.json и добавьте конфигурацию:
если она у вас уже есть, измените "программу": "путь к примеру main.dart: lib / main.dart"
{
"name": "Dart",
"type": "dart",
"request": "launch",
"program": "lib/main.dart"
},
Если вы используете VSCode
, попробуйте этот метод:
Удалите папку .vscode в каталоге вашего проекта и перезапустите программу.
Если у вас несколько схем 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 работает независимо от местоположения цели или имени цели и без необходимости иметь main.dart в вашей папке lib.
Чтобы воссоздать папку ios
У меня было аналогичное сообщение об ошибке, и это произошло из-за того, что я случайно удалил void main ()
flutter doctor
к вашему вопросу. - person Günter Zöchbauer   schedule 25.05.2018