我有一个Flutter应用程序,它也有一些Rust代码,它们通过flutter_rust_bridge进行通信。已经有一些教程讨论如何构建这样的应用程序。但是,它们需要我手动触发cargo build
(或类似的命令)和flutter run
分开。你知道,这是相当麻烦的,如果我忘记执行cargo,或者那个命令失败,我冒着用旧的二进制文件构建Flutter应用程序的风险。因此,我想知道如何自动化这个过程。谢谢!
我有一个Flutter应用程序,它也有一些Rust代码,它们通过flutter_rust_bridge进行通信。已经有一些教程讨论如何构建这样的应用程序。但是,它们需要我手动触发cargo build
(或类似的命令)和flutter run
分开。你知道,这是相当麻烦的,如果我忘记执行cargo,或者那个命令失败,我冒着用旧的二进制文件构建Flutter应用程序的风险。因此,我想知道如何自动化这个过程。谢谢!
1条答案
按热度按时间h9a6wy2h1#
安卓系统
将以下内容添加到
build.gradle
字符串
其中
build-your-rust-code
是用于构建Rust代码的命令。(例如,我使用fastlane Package 它(当然你可以使用其他),我把它放在rust文件夹中,所以我只调用cd $projectDir/../rust/fastlane && bundle exec fastlane build_android profile:$profileMode
。)iOS
方法一
最手动的方法如下。转到
Build Phases
,单击+
按钮并选择New Run Script Phase
。然后输入您想要运行以构建Rust代码的脚本。(例如,对于我自己,我使用Shell/bin/sh
并调用一些执行实际命令的fastlane命令。)的数据
方法二
更自动化的方法是使用CocoaPod文件,它将自动帮助您设置所有内容。例如,我添加:
型
(For例如,我的脚本是
%q{env -i HOME="$HOME" PROJECT_DIR="$PROJECT_DIR" CONFIGURATION="$CONFIGURATION" /bin/bash -c 'source ~/.bashrc && cd $PROJECT_DIR/../.symlinks/plugins/vision_utils/rust/fastlane && LC_ALL= LANG=en_US.UTF-8 bundle exec fastlane build_ios profile:$CONFIGURATION'}
。请注意,至少在我的情况下,我必须创建一个全新的shell。否则我的Rust中的opencv会抱怨并无法编译。但是如果你的Rust代码不包含c++的东西,你可能不会遇到这个问题。)(问答式的回答,以帮助与我面临同样情况的人,特别是当不熟悉Android和iOS时)