diff --git a/frb_codegen/assets/integration_template/app/rust_builder/cargokit b/frb_codegen/assets/integration_template/app/rust_builder/cargokit index 8cd24eda4e6..6f7144d192b 160000 --- a/frb_codegen/assets/integration_template/app/rust_builder/cargokit +++ b/frb_codegen/assets/integration_template/app/rust_builder/cargokit @@ -1 +1 @@ -Subproject commit 8cd24eda4e6fa971f0fdbffbf633e88fed6ffa68 +Subproject commit 6f7144d192b04075acd73af2656cdebb1d3e4055 diff --git a/frb_codegen/assets/integration_template/plugin/cargokit b/frb_codegen/assets/integration_template/plugin/cargokit index 8cd24eda4e6..6f7144d192b 160000 --- a/frb_codegen/assets/integration_template/plugin/cargokit +++ b/frb_codegen/assets/integration_template/plugin/cargokit @@ -1 +1 @@ -Subproject commit 8cd24eda4e6fa971f0fdbffbf633e88fed6ffa68 +Subproject commit 6f7144d192b04075acd73af2656cdebb1d3e4055 diff --git a/frb_example/flutter_package/cargokit/build_tool/lib/src/android_environment.dart b/frb_example/flutter_package/cargokit/build_tool/lib/src/android_environment.dart index 15fc9eedacc..37dec5708b3 100644 --- a/frb_example/flutter_package/cargokit/build_tool/lib/src/android_environment.dart +++ b/frb_example/flutter_package/cargokit/build_tool/lib/src/android_environment.dart @@ -189,7 +189,21 @@ class AndroidEnvironment { if (rustFlags.isNotEmpty) { rustFlags = '$rustFlags\x1f'; } - rustFlags = '$rustFlags-L\x1f$workaroundDir'; + if (["arm64-v8a", "x86_64"].contains(target.android)) { + rustFlags = '$rustFlags-L\x1f$workaroundDir\x1f'; + + const pageSizeArgs = [ + "-C", + "link-arg=-Wl,--hash-style=both", + "-C", + "link-arg=-Wl,-z,max-page-size=16384" + ]; + final pageSizeArgsString = pageSizeArgs.join("\x1f"); + + rustFlags = '$rustFlags$pageSizeArgsString'; + } else { + rustFlags = '$rustFlags-L\x1f$workaroundDir'; + } return rustFlags; } } diff --git a/frb_example/flutter_via_create/rust_builder/cargokit/build_tool/lib/src/android_environment.dart b/frb_example/flutter_via_create/rust_builder/cargokit/build_tool/lib/src/android_environment.dart index 15fc9eedacc..37dec5708b3 100644 --- a/frb_example/flutter_via_create/rust_builder/cargokit/build_tool/lib/src/android_environment.dart +++ b/frb_example/flutter_via_create/rust_builder/cargokit/build_tool/lib/src/android_environment.dart @@ -189,7 +189,21 @@ class AndroidEnvironment { if (rustFlags.isNotEmpty) { rustFlags = '$rustFlags\x1f'; } - rustFlags = '$rustFlags-L\x1f$workaroundDir'; + if (["arm64-v8a", "x86_64"].contains(target.android)) { + rustFlags = '$rustFlags-L\x1f$workaroundDir\x1f'; + + const pageSizeArgs = [ + "-C", + "link-arg=-Wl,--hash-style=both", + "-C", + "link-arg=-Wl,-z,max-page-size=16384" + ]; + final pageSizeArgsString = pageSizeArgs.join("\x1f"); + + rustFlags = '$rustFlags$pageSizeArgsString'; + } else { + rustFlags = '$rustFlags-L\x1f$workaroundDir'; + } return rustFlags; } } diff --git a/frb_example/flutter_via_integrate/rust_builder/cargokit/build_tool/lib/src/android_environment.dart b/frb_example/flutter_via_integrate/rust_builder/cargokit/build_tool/lib/src/android_environment.dart index 15fc9eedacc..37dec5708b3 100644 --- a/frb_example/flutter_via_integrate/rust_builder/cargokit/build_tool/lib/src/android_environment.dart +++ b/frb_example/flutter_via_integrate/rust_builder/cargokit/build_tool/lib/src/android_environment.dart @@ -189,7 +189,21 @@ class AndroidEnvironment { if (rustFlags.isNotEmpty) { rustFlags = '$rustFlags\x1f'; } - rustFlags = '$rustFlags-L\x1f$workaroundDir'; + if (["arm64-v8a", "x86_64"].contains(target.android)) { + rustFlags = '$rustFlags-L\x1f$workaroundDir\x1f'; + + const pageSizeArgs = [ + "-C", + "link-arg=-Wl,--hash-style=both", + "-C", + "link-arg=-Wl,-z,max-page-size=16384" + ]; + final pageSizeArgsString = pageSizeArgs.join("\x1f"); + + rustFlags = '$rustFlags$pageSizeArgsString'; + } else { + rustFlags = '$rustFlags-L\x1f$workaroundDir'; + } return rustFlags; } } diff --git a/frb_example/gallery/rust_builder/cargokit/build_tool/lib/src/android_environment.dart b/frb_example/gallery/rust_builder/cargokit/build_tool/lib/src/android_environment.dart index 15fc9eedacc..37dec5708b3 100644 --- a/frb_example/gallery/rust_builder/cargokit/build_tool/lib/src/android_environment.dart +++ b/frb_example/gallery/rust_builder/cargokit/build_tool/lib/src/android_environment.dart @@ -189,7 +189,21 @@ class AndroidEnvironment { if (rustFlags.isNotEmpty) { rustFlags = '$rustFlags\x1f'; } - rustFlags = '$rustFlags-L\x1f$workaroundDir'; + if (["arm64-v8a", "x86_64"].contains(target.android)) { + rustFlags = '$rustFlags-L\x1f$workaroundDir\x1f'; + + const pageSizeArgs = [ + "-C", + "link-arg=-Wl,--hash-style=both", + "-C", + "link-arg=-Wl,-z,max-page-size=16384" + ]; + final pageSizeArgsString = pageSizeArgs.join("\x1f"); + + rustFlags = '$rustFlags$pageSizeArgsString'; + } else { + rustFlags = '$rustFlags-L\x1f$workaroundDir'; + } return rustFlags; } } diff --git a/frb_example/integrate_third_party/rust_builder/cargokit/build_tool/lib/src/android_environment.dart b/frb_example/integrate_third_party/rust_builder/cargokit/build_tool/lib/src/android_environment.dart index 15fc9eedacc..37dec5708b3 100644 --- a/frb_example/integrate_third_party/rust_builder/cargokit/build_tool/lib/src/android_environment.dart +++ b/frb_example/integrate_third_party/rust_builder/cargokit/build_tool/lib/src/android_environment.dart @@ -189,7 +189,21 @@ class AndroidEnvironment { if (rustFlags.isNotEmpty) { rustFlags = '$rustFlags\x1f'; } - rustFlags = '$rustFlags-L\x1f$workaroundDir'; + if (["arm64-v8a", "x86_64"].contains(target.android)) { + rustFlags = '$rustFlags-L\x1f$workaroundDir\x1f'; + + const pageSizeArgs = [ + "-C", + "link-arg=-Wl,--hash-style=both", + "-C", + "link-arg=-Wl,-z,max-page-size=16384" + ]; + final pageSizeArgsString = pageSizeArgs.join("\x1f"); + + rustFlags = '$rustFlags$pageSizeArgsString'; + } else { + rustFlags = '$rustFlags-L\x1f$workaroundDir'; + } return rustFlags; } } diff --git a/frb_example/rust_ui_counter/ui/rust_builder/cargokit/build_tool/lib/src/android_environment.dart b/frb_example/rust_ui_counter/ui/rust_builder/cargokit/build_tool/lib/src/android_environment.dart index 15fc9eedacc..37dec5708b3 100644 --- a/frb_example/rust_ui_counter/ui/rust_builder/cargokit/build_tool/lib/src/android_environment.dart +++ b/frb_example/rust_ui_counter/ui/rust_builder/cargokit/build_tool/lib/src/android_environment.dart @@ -189,7 +189,21 @@ class AndroidEnvironment { if (rustFlags.isNotEmpty) { rustFlags = '$rustFlags\x1f'; } - rustFlags = '$rustFlags-L\x1f$workaroundDir'; + if (["arm64-v8a", "x86_64"].contains(target.android)) { + rustFlags = '$rustFlags-L\x1f$workaroundDir\x1f'; + + const pageSizeArgs = [ + "-C", + "link-arg=-Wl,--hash-style=both", + "-C", + "link-arg=-Wl,-z,max-page-size=16384" + ]; + final pageSizeArgsString = pageSizeArgs.join("\x1f"); + + rustFlags = '$rustFlags$pageSizeArgsString'; + } else { + rustFlags = '$rustFlags-L\x1f$workaroundDir'; + } return rustFlags; } } diff --git a/frb_example/rust_ui_todo_list/ui/rust_builder/cargokit/build_tool/lib/src/android_environment.dart b/frb_example/rust_ui_todo_list/ui/rust_builder/cargokit/build_tool/lib/src/android_environment.dart index 15fc9eedacc..37dec5708b3 100644 --- a/frb_example/rust_ui_todo_list/ui/rust_builder/cargokit/build_tool/lib/src/android_environment.dart +++ b/frb_example/rust_ui_todo_list/ui/rust_builder/cargokit/build_tool/lib/src/android_environment.dart @@ -189,7 +189,21 @@ class AndroidEnvironment { if (rustFlags.isNotEmpty) { rustFlags = '$rustFlags\x1f'; } - rustFlags = '$rustFlags-L\x1f$workaroundDir'; + if (["arm64-v8a", "x86_64"].contains(target.android)) { + rustFlags = '$rustFlags-L\x1f$workaroundDir\x1f'; + + const pageSizeArgs = [ + "-C", + "link-arg=-Wl,--hash-style=both", + "-C", + "link-arg=-Wl,-z,max-page-size=16384" + ]; + final pageSizeArgsString = pageSizeArgs.join("\x1f"); + + rustFlags = '$rustFlags$pageSizeArgsString'; + } else { + rustFlags = '$rustFlags-L\x1f$workaroundDir'; + } return rustFlags; } }