This directory contains Android and iOS projects that import and use a Flutter module. They're designed to show recommended approaches for adding Flutter to existing Android and iOS apps.
fullscreen
— Embeds a full screen instance of Flutter into an existing iOS or Android app.prebuilt_module
— Embeds a full screen instance of Flutter as a prebuilt library that can be loaded into an existing iOS or Android app.plugin
— Embeds a full screen Flutter instance that is using plugins into an existing iOS or Android app.books
— Mimics a real world use-case of embedding Flutter into an existing Android app and demonstrates using Pigeon to communicate between Flutter and the host application.multiple_flutters
— Shows the usage of the Flutter Engine Group APIs to embed multiple instances of Flutter into an existing app with low memory cost.android_view
— Shows how to integrate a Flutter add-to-app module at a view level for Android.
- Show developers how to add Flutter to their existing applications.
- Show the following options:
- Whether to build the Flutter module from source each time the app builds or rely on a separately pre-built module.
- Whether plugins are needed by the Flutter module used in the app.
- Show Flutter being integrated ergonomically with applications with existing middleware and business logic data classes.
The iOS samples in this repo require the latest version of Cocoapods. To make sure you've got it, run the following command on a macOS machine:
sudo gem install cocoapods
See https://guides.cocoapods.org/using/getting-started.html for more details.
You can flutter attach
to the running host application to debug the Flutter
module. This will
allow you to hot reload, set breakpoints, and use DevTools and other debugging
functionality, similar to a full Flutter app.
If you run into an issue with the sample itself, please file an issue in the Flutter samples repo.
- Open the top level build.gradle file in Android Studio
- Open “Upgrade Assistant” and click upgrade
-
If after upgrading it fails to build, try upgrading to a slightly less new version
-
If there's an "Unknown class version exception " try setting the version of Java used by modifying JAVA_HOME
-
If it still fails to build, check that the Flutter code referenced in the build is up-to-date and doesn't use discontinued plugins. (Common cases include “namespace”)
-
The 'project structure' -> 'modules' view can be helpful in understanding the dependency tree.
-
Once the app builds with the latest gradle/agp, update any deprecated usages in app/build.gradle
-
compileSdkVersion -> sdkVersion
-
Update the target sdk version and read through each target sdk update
-
Export broadcast receivers
-
Update the way flutter is imported to use flutter gradle plugin
-
When updating an app that uses AAR as a Flutter module -- In android studio update any android dependencies that are indicated as in yellow as old. Keep
androidx.test:runner
,androidx.test.espresso:espresso-core
, andandroidx.test:core
, as defined in https://github.com/flutter/packages/tree/main/packages/espresso