This project demonstrates how to embed Flutter within an iOS or Android application. On iOS, the iOS and Flutter components are built with Xcode. On Android, the Android and Flutter components are built with Android Studio or gradle.
Create an ios/Flutter/Generated.xcconfig
file with this entry:
FLUTTER_ROOT=[absolute path to the Flutter SDK]
There are a number of other parameters you can control with this file:
FLUTTER_APPLICATION_PATH
: The path to the directory that contains yourpubspec.yaml
file relative to yourxcodeproj
file.FLUTTER_BUILD_MODE
: Whether to build fordebug
,profile
, orrelease
. Defaults torelease
.FLUTTER_TARGET
: The path to yourmain.dart
relative to yourpubspec.yaml
. Defaults tolib/main.dart
.FLUTTER_FRAMEWORK_DIR
: The absolute path to the directory that containsFlutter.framework
. Defaults to theios-release
version ofFlutter.framework
in thebin/cache
directory of the Flutter SDK.
Once you've configured your project, you can open ios/HelloServices.xcodeproj
in Xcode and build the project as usual.
Create an android/local.properties
file with these entries:
sdk.dir=[path to the Android SDK]
flutter.sdk=[path to the Flutter SDK]
There are a number of other parameters you can control with this file:
flutter.buildMode
: Whether to build fordebug
,profile
, orrelease
. Defaults torelease
.flutter.jar
: The path toflutter.jar
. Defaults to theandroid-arm-release
version offlutter.jar
in thebin/cache
directory of the Flutter SDK.
See android/app/build.gradle
for project specific settings, including:
source
: The path to the directory that contains yourpubspec.yaml
file relative to yourbuild.gradle
file.target
: The path to yourmain.dart
relative to yourpubspec.yaml
. Defaults tolib/main.dart
.
To build directly with gradle
, use the following commands:
cd android
gradle wrapper
./gradlew build
To build with Android Studio, open the android
folder in Android Studio and
build the project as usual.
You can push new Dart code to a Flutter app during development without performing a full rebuild of the Android app package.
The flutter refresh
tool manages this process. flutter refresh
will build
a snapshot of an app's Dart code, copy it to an Android device, and send an
intent instructing the Android app to load the snapshot.
To try this out:
- Install and run the app on your device
- Edit the Dart code
flutter refresh --activity a14n.geolocation/.MainActivity
flutter refresh
sends an ACTION_RUN
intent with an extra containing the
device filesystem path where the snapshot was copied. ExampleActivity.java
shows how an activity can handle this intent and load the new snapshot into
a FlutterView.