如何在本地构建 Flutter 应用程序?
How do I build Flutter application locally?
我开发了(在 Mac 上)一个小型 Flutter 应用程序来学习这项技术。现在,我想构建它并在 Mac、Linux 和 Android 上使用它。我用过的几个包声称与所有系统兼容。
所以我做的第一件事就是 运行 flutter build macos
。我确实获得了 build/macos/Build/Products/Release/nameofmyapp.app
下的申请。这 运行 似乎是正确的,但它失败了,例如,从数据库加载数据,这是它应该做的第一件事。
我有几个问题:
- 我还应该采取其他步骤吗?我看到关于发布过程的很长 guide,但坦率地说,我不需要或不想要任何这些:我只想自己使用该应用程序。除了
flutter build macos
,还有什么可以做的吗?
- 我在正确的地方寻找内置的应用程序吗?
- 如果我做的一切都正确,是否需要授权应用程序以某种方式访问文件?我应该自己管理这个工作流,还是有一个标准的方法可以在 Flutter 中执行这个操作?
抱歉问了不止一个问题,但我不确定是不是我做错了
- 构建过程
- 在哪里寻找构建的应用程序,或者
- (不)处理应用权限。
编辑
根据 Madhavam 的建议,我尝试了 flutter run --release
。结果与 运行 构建的应用程序相同:没有从数据库加载任何内容,控制台中也没有出现任何错误。
需要说明的是,这些库不起作用:
- sqflite 应该从数据库(在我的文档文件夹中)加载数据但不显示任何内容
- file picker cross 应该允许我从 JSON 文件加载数据,但是当我尝试这种交互时,我没有显示任何加载文件的对话框
- shared preferences 应该读取一些设置,但它们都显示为
null
简而言之,任何与外部文件或存储交互的东西似乎都不起作用
是的,你必须自己管理它。看看这个包
:https://pub.dev/packages/permission_handler
如果您使用的是 Firebase,那么您可能需要添加发布密钥。
还有一件事,如果您只在发布版本中遇到错误,那么我推荐 运行 具有 flutter run --release
的应用程序,以便您可以看到正在抛出的错误。
所以这似乎与默认是在沙盒中运行的应用程序有关。由于我不想分发该应用程序,因此我可以禁用此设置。详情在
我开发了(在 Mac 上)一个小型 Flutter 应用程序来学习这项技术。现在,我想构建它并在 Mac、Linux 和 Android 上使用它。我用过的几个包声称与所有系统兼容。
所以我做的第一件事就是 运行 flutter build macos
。我确实获得了 build/macos/Build/Products/Release/nameofmyapp.app
下的申请。这 运行 似乎是正确的,但它失败了,例如,从数据库加载数据,这是它应该做的第一件事。
我有几个问题:
- 我还应该采取其他步骤吗?我看到关于发布过程的很长 guide,但坦率地说,我不需要或不想要任何这些:我只想自己使用该应用程序。除了
flutter build macos
,还有什么可以做的吗? - 我在正确的地方寻找内置的应用程序吗?
- 如果我做的一切都正确,是否需要授权应用程序以某种方式访问文件?我应该自己管理这个工作流,还是有一个标准的方法可以在 Flutter 中执行这个操作?
抱歉问了不止一个问题,但我不确定是不是我做错了
- 构建过程
- 在哪里寻找构建的应用程序,或者
- (不)处理应用权限。
编辑
根据 Madhavam 的建议,我尝试了 flutter run --release
。结果与 运行 构建的应用程序相同:没有从数据库加载任何内容,控制台中也没有出现任何错误。
需要说明的是,这些库不起作用:
- sqflite 应该从数据库(在我的文档文件夹中)加载数据但不显示任何内容
- file picker cross 应该允许我从 JSON 文件加载数据,但是当我尝试这种交互时,我没有显示任何加载文件的对话框
- shared preferences 应该读取一些设置,但它们都显示为
null
简而言之,任何与外部文件或存储交互的东西似乎都不起作用
是的,你必须自己管理它。看看这个包 :https://pub.dev/packages/permission_handler
如果您使用的是 Firebase,那么您可能需要添加发布密钥。
还有一件事,如果您只在发布版本中遇到错误,那么我推荐 运行 具有 flutter run --release
的应用程序,以便您可以看到正在抛出的错误。
所以这似乎与默认是在沙盒中运行的应用程序有关。由于我不想分发该应用程序,因此我可以禁用此设置。详情在