Skip to content

Commit 4313516

Browse files
authored
Combine and simplify legacy ffi plugin pages (#13469)
Combine the 3 pages (iOS, macOS, Android) covering the legacy template and mechanisms into a single, cleaned up page so we have a smaller legacy surface to maintain while not confusing developers who already used the template or are still using the mechanisms used by it. Also completes some clean up, updates, and fixes to the consolidated content. However, removes or updates the remaining links to the legacy pages to their more up-to-date counterparts. Contributes to #13313
1 parent 4413818 commit 4313516

14 files changed

Lines changed: 449 additions & 507 deletions

File tree

firebase.json

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,20 +167,23 @@
167167
{ "source": "/learn/learning-resources", "destination": "/reference/learning-resources", "type": 301 },
168168
{ "source": "/material-3-migration", "destination": "/release/breaking-changes/material-3-migration", "type": 301 },
169169
{ "source": "/packages-and-plugins/androidx-compatibility", "destination": "/platform-integration/android/androidx-migration", "type": 301 },
170-
{ "source": "/packages-and-plugins/c-interop", "destination": "/platform-integration/android/c-interop", "type": 301 },
170+
{ "source": "/packages-and-plugins/c-interop", "destination": "/platform-integration/legacy-ffi-plugin", "type": 301 },
171171
{ "source": "/packages-and-plugins/plugins-in-tests", "destination": "/testing/plugins-in-tests", "type": 301 },
172172
{ "source": "/packages-and-plugins/plugin-api-migration", "destination": "/release/breaking-changes/plugin-api-migration", "type": 301 },
173173
{ "source": "/platform-integration/android/androidx-migration", "destination": "/release/breaking-changes/androidx-migration", "type": 301 },
174+
{ "source": "/platform-integration/android/c-interop", "destination": "/platform-integration/legacy-ffi-plugin", "type": 301 },
174175
{ "source": "/platform-integration/android/install-android", "destination": "/platform-integration/android/setup", "type": 301 },
175176
{ "source": "/platform-integration/android/install-android/:rest*", "destination": "/platform-integration/android/setup", "type": 301 },
176177
{ "source": "/platform-integration/android/splash-screen-migration", "destination": "/release/breaking-changes/splash-screen-migration", "type": 301 },
177-
{ "source": "/platform-integration/c-interop", "destination": "/platform-integration", "type": 301 },
178+
{ "source": "/platform-integration/c-interop", "destination": "/platform-integration/legacy-ffi-plugin", "type": 301 },
178179
{ "source": "/platform-integration/ios-app-clip", "destination": "/platform-integration/ios/ios-app-clip", "type": 301 },
180+
{ "source": "/platform-integration/ios/c-interop", "destination": "/platform-integration/legacy-ffi-plugin", "type": 301 },
179181
{ "source": "/platform-integration/ios/install-ios", "destination": "/platform-integration/ios/setup", "type": 301 },
180182
{ "source": "/platform-integration/ios/install-ios/:rest*", "destination": "/platform-integration/ios/setup", "type": 301 },
181183
{ "source": "/platform-integration/ios/splash-screen", "destination": "/platform-integration/ios/launch-screen", "type": 301 },
182184
{ "source": "/platform-integration/linux/install-linux", "destination": "/platform-integration/linux/setup", "type": 301 },
183185
{ "source": "/platform-integration/linux/install-linux/:rest*", "destination": "/platform-integration/linux/setup", "type": 301 },
186+
{ "source": "/platform-integration/macos/c-interop", "destination": "/platform-integration/legacy-ffi-plugin", "type": 301 },
184187
{ "source": "/platform-integration/macos/install-macos", "destination": "/platform-integration/macos/setup", "type": 301 },
185188
{ "source": "/platform-integration/macos/install-macos/:rest*", "destination": "/platform-integration/macos/setup", "type": 301 },
186189
{ "source": "/platform-integration/platform-adaptations", "destination": "/ui/adaptive-responsive/platform-adaptations", "type": 301 },
@@ -809,7 +812,7 @@
809812
{ "source": "/to/add-to-app", "destination": "/add-to-app", "type": 301 },
810813
{ "source": "/to/add-swift-package-manager-manually", "destination": "/packages-and-plugins/swift-package-manager/for-app-developers#add-to-a-flutter-app-manually", "type": 301 },
811814
{ "source": "/to/add-web-support", "destination": "/platform-integration/web/building#add-web-support-to-an-existing-app", "type": 301 },
812-
{ "source": "/to/android-ffi", "destination": "/platform-integration/android/c-interop", "type": 301 },
815+
{ "source": "/to/android-ffi", "destination": "/platform-integration/legacy-ffi-plugin", "type": 301 },
813816
{ "source": "/to/android-setup", "destination": "/platform-integration/android/setup", "type": 301 },
814817
{ "source": "/to/android-supported-architectures", "destination": "/deployment/android#what-are-the-supported-target-architectures", "type": 301 },
815818
{ "source": "/to/asset-from-package", "destination": "/ui/assets/assets-and-images#from-packages", "type": 301 },
@@ -860,16 +863,15 @@
860863
{ "source": "/to/ios-create-flutter-engine", "destination": "/add-to-app/ios/add-flutter-screen#create-a-flutterengine", "type": 301 },
861864
{ "source": "/to/ios-deploy", "destination": "/deployment/ios", "type": 301 },
862865
{ "source": "/to/ios-development-team", "destination": "/deployment/ios#review-xcode-project-settings", "type": 301 },
863-
{ "source": "/to/ios-ffi", "destination": "/platform-integration/ios/c-interop", "type": 301 },
864-
{ "source": "/platform-integration/ios/c-interop", "destination": "/platform-integration/bind-native-code", "type": 301 },
866+
{ "source": "/to/ios-ffi", "destination": "/platform-integration/legacy-ffi-plugin", "type": 301 },
865867
{ "source": "/to/ios-minimum-target", "destination": "/deployment/ios#review-xcode-project-settings", "type": 301 },
866868
{ "source": "/to/to/java-gradle-incompatibility", "destination": "/release/breaking-changes/android-java-gradle-migration-guide", "type": 301 },
867869
{ "source": "/to/java-gradle-incompatibility", "destination": "/release/breaking-changes/android-java-gradle-migration-guide", "type": 301 },
868870
{ "source": "/to/linux-android-setup", "destination": "/platform-integration/android/setup", "type": 301 },
869871
{ "source": "/to/macos-android-setup", "destination": "/platform-integration/android/setup", "type": 301 },
870872
{ "source": "/to/macos-deploy", "destination": "/deployment/macos", "type": 301 },
871873
{ "source": "/to/macos-entitlements", "destination": "/platform-integration/macos/building#entitlements-and-the-app-sandbox", "type": 301 },
872-
{ "source": "/to/macos-ffi", "destination": "/platform-integration/macos/c-interop", "type": 301 },
874+
{ "source": "/to/macos-ffi", "destination": "/platform-integration/legacy-ffi-plugin", "type": 301 },
873875
{ "source": "/to/macos-ios-setup", "destination": "/platform-integration/ios/setup", "type": 301 },
874876
{ "source": "/to/macos-minimum-target", "destination": "/deployment/ios#review-xcode-project-settings", "type": 301 },
875877
{ "source": "/to/minimize-layout-passes", "destination": "/perf/best-practices#minimize-layout-passes-caused-by-intrinsic-operations", "type": 301 },

sites/docs/src/_includes/docs/resource-links/ffi-video-resources.md

Lines changed: 0 additions & 10 deletions
This file was deleted.

sites/docs/src/content/packages-and-plugins/developing-packages.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,8 +1026,6 @@ file, like any other Dart package.
10261026
[Effective Dart Documentation]: {{site.dart-site}}/guides/language/effective-dart/documentation
10271027
[federated plugins]: #federated-plugins
10281028
[ffigen docs]: {{site.pub-pkg}}/ffigen/install
1029-
[Android]: /platform-integration/android/c-interop
1030-
[macOS]: /platform-integration/macos/c-interop
10311029
[`fluro`]: {{site.pub}}/packages/fluro
10321030
[Flutter editor]: /tools/editors
10331031
[Flutter Favorites]: {{site.pub}}/flutter/favorites

sites/docs/src/content/platform-integration/android/c-interop.md

Lines changed: 0 additions & 210 deletions
This file was deleted.

sites/docs/src/content/platform-integration/android/setup.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ or begin improving integration with Android.
377377
<a class="text-button" href="/deployment/android">Build and deploy to Android</a>
378378
</li>
379379
<li>
380-
<a class="text-button" href="/platform-integration/android/c-interop">Bind to native Android code</a>
380+
<a class="text-button" href="/platform-integration/bind-native-code">Bind to native Android code</a>
381381
</li>
382382
<li>
383383
<a class="text-button" href="/platform-integration/android/splash-screen">Add a splash screen</a>

sites/docs/src/content/platform-integration/bind-native-code.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ If you need to use the Flutter Plugin API, or if you need to configure a Google
1717
Play services runtime on Android, use the standard plugin template (`flutter create
1818
--template=plugin`).
1919

20+
:::note
21+
Looking for the previous FFI plugin workflow? See
22+
[Bind to native code using the legacy FFI plugin template](/platform-integration/legacy-ffi-plugin),
23+
which documents the `plugin_ffi` template and OS-specific build files.
24+
:::
25+
2026
[build hooks]: https://dart.dev/tools/hooks
2127
[dart:ffi]: {{site.dart.api}}/dart-ffi/dart-ffi-library.html
2228
[FFI]: https://en.wikipedia.org/wiki/Foreign_function_interface
@@ -107,6 +113,14 @@ For many system libraries on Android, iOS, Linux, and macOS, you can use
107113
For Windows, you often use `DynamicLoadingSystem()` and provide the name of the
108114
DLL.
109115

116+
:::note
117+
For desktop-specific guidance on calling system APIs&mdash;including wrapper
118+
packages like [`package:win32`]({{site.pub-pkg}}/win32) and
119+
[Canonical's Linux packages]({{site.pub}}/publishers/canonical.com/packages)&mdash;see
120+
[Integrating with Windows](/platform-integration/windows/building#integrating-with-windows)
121+
and [Integrate with Linux](/platform-integration/linux/building#integrate-with-linux).
122+
:::
123+
110124
Here is an example `build.dart` that links against system libraries to get the
111125
host name:
112126

sites/docs/src/content/platform-integration/index.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,12 @@ Learn how to add custom integrations with Android to your Flutter app.
141141
<p>Learn how the latest Android APIs in your app from Dart.</p>
142142
</div>
143143
</a>
144-
<a class="card outlined-card" href="/platform-integration/android/c-interop">
144+
<a class="card outlined-card" href="/platform-integration/bind-native-code">
145145
<div class="card-header">
146146
<span class="card-title">Bind to native code</span>
147147
</div>
148148
<div class="card-content">
149-
<p>Learn how to bind to native C code from your app on Android.</p>
149+
<p>Learn how to bind to native code from your app on Android.</p>
150150
</div>
151151
</a>
152152
<a class="card outlined-card" href="/platform-integration/android/platform-views">
@@ -188,6 +188,14 @@ Learn how to add custom integrations with iOS to your Flutter app.
188188
<p>Learn about plugins that support functionality from native iOS frameworks.</p>
189189
</div>
190190
</a>
191+
<a class="card outlined-card" href="/platform-integration/bind-native-code">
192+
<div class="card-header">
193+
<span class="card-title">Bind to native code</span>
194+
</div>
195+
<div class="card-content">
196+
<p>Learn how to bind to native code from your app on iOS.</p>
197+
</div>
198+
</a>
191199
<a class="card outlined-card" href="/platform-integration/ios/platform-views">
192200
<div class="card-header">
193201
<span class="card-title">Embed an iOS view</span>
@@ -228,14 +236,6 @@ web platform to your Flutter app.
228236
<p>Customize how your Flutter app is initialized on the web.</p>
229237
</div>
230238
</a>
231-
<a class="card outlined-card" href="/platform-integration/android/c-interop">
232-
<div class="card-header">
233-
<span class="card-title">Bind to native code</span>
234-
</div>
235-
<div class="card-content">
236-
<p>Learn how to bind to native C code from your app on Android.</p>
237-
</div>
238-
</a>
239239
<a class="card outlined-card" href="/platform-integration/web/web-content-in-flutter">
240240
<div class="card-header">
241241
<span class="card-title">Embed web content</span>
@@ -309,12 +309,12 @@ Learn how to add custom integrations with Windows to your Flutter app.
309309
Learn how to add custom integrations with macOS to your Flutter app.
310310

311311
<div class="card-grid">
312-
<a class="card outlined-card" href="/platform-integration/macos/c-interop">
312+
<a class="card outlined-card" href="/platform-integration/bind-native-code">
313313
<div class="card-header">
314314
<span class="card-title">Bind to native code</span>
315315
</div>
316316
<div class="card-content">
317-
<p>Learn how to bind to native C, Objective-C, and Swift code from your app.</p>
317+
<p>Learn how to bind to native code from your app on macOS.</p>
318318
</div>
319319
</a>
320320
<a class="card outlined-card" href="/platform-integration/macos/platform-views">

sites/docs/src/content/platform-integration/ios/setup.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,9 @@ or begin improving integration with iOS.
251251
<li>
252252
<a class="text-button" href="/deployment/ios">Build and deploy to iOS</a>
253253
</li>
254+
<li>
255+
<a class="text-button" href="/platform-integration/bind-native-code">Bind to native iOS code</a>
256+
</li>
254257
<li>
255258
<a class="text-button" href="/platform-integration/ios/apple-frameworks">Leverage system frameworks</a>
256259
</li>

0 commit comments

Comments
 (0)