tools/manual_tests/cargokit-to-native-assets-migration.md
Verify that an app created with the default Cargokit backend can be migrated to Native Assets by following the documented migration steps, and that its Flutter tests still pass on Linux.
website/docs/manual/integrate/05-migrate-cargokit-to-native-assets.md, .claude/skills/frb-manual-test/SKILL.mdRun after changing the Cargokit-to-Native-Assets migration guide, either integration backend, or the create and integrate commands.
fzyzcjy/flutter_rust_bridgeflutter --version.dart --version.rustc --version.From the repository root:
git submodule update --init --recursive
.claude/skills/frb-dev-env/frb_dev_env.py docker create
.claude/skills/frb-dev-env/frb_dev_env.py docker exec -- flutter --version
.claude/skills/frb-dev-env/frb_dev_env.py docker exec -- dart --version
.claude/skills/frb-dev-env/frb_dev_env.py docker exec -- rustc --version
frb_migration_test, generated by the current checkout./root/frb_manual_test_cargokit_migration inside the development container.Confirm that tools/manual_tests/cargokit-to-native-assets-migration.md is aligned with website/docs/manual/integrate/05-migrate-cargokit-to-native-assets.md.
Create a default Cargokit app with the current code generator.
.claude/skills/frb-dev-env/frb_dev_env.py docker exec -- bash -lc '
set -euxo pipefail
rm -rf /root/frb_manual_test_cargokit_migration
cargo run --manifest-path frb_codegen/Cargo.toml -- create /root/frb_manual_test_cargokit_migration --platforms linux --skip-fvm-install
test -d /root/frb_manual_test_cargokit_migration/rust_builder/cargokit
'
Run Native Assets integration and remove the old Cargokit package and analyzer exclusion.
.claude/skills/frb-dev-env/frb_dev_env.py docker exec -- bash -lc '
set -euxo pipefail
cd /root/frb_manual_test_cargokit_migration
cargo run --manifest-path "$OLDPWD/frb_codegen/Cargo.toml" -- integrate --integration-backend native-assets --platforms linux --skip-fvm-install
flutter pub remove rust_lib_frb_manual_test_cargokit_migration
rm -rf rust_builder
perl -0pi -e "s/analyzer:\n exclude:\n - rust_builder\/cargokit\/\*\*\n\n//" analysis_options.yaml
test -f hook/build.dart
grep -q 'crate-type.*cdylib.*staticlib' rust/Cargo.toml
grep -q '^channel = "[0-9]' rust/rust-toolchain.toml
test ! -e rust_builder
! grep -q rust_builder pubspec.yaml analysis_options.yaml
'
Refresh dependencies, regenerate the bridge, and run the Flutter tests.
.claude/skills/frb-dev-env/frb_dev_env.py docker exec -- bash -lc '
set -euxo pipefail
cd /root/frb_manual_test_cargokit_migration
flutter pub get
cargo run --manifest-path "$OLDPWD/frb_codegen/Cargo.toml" -- generate
xvfb-run -a flutter test integration_test/simple_test.dart -d linux
'
hook/build.dart exists after integration.rust/Cargo.toml has cdylib and staticlib crate types, and rust/rust-toolchain.toml pins a concrete toolchain.pubspec.yaml and analysis_options.yaml do not reference rust_builder.All tests passed!.The test fails if any of the following happens:
rust_builder reference remains.Environment setup or package-source unavailability should be reported as blocked instead of a product failure.
hook/build.dart, rust_builder, pubspec.yaml, and analysis_options.yaml.frb_dev_env.py docker create.flutter doctor -v and classify the run as blocked..claude/skills/frb-dev-env/frb_dev_env.py docker exec -- rm -rf /root/frb_manual_test_cargokit_migration
git status --short
This scenario can move into the integrate-generation CI once that job can create, mutate, and test a disposable project without materially increasing its runtime.