mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
90 lines
3.1 KiB
Markdown
90 lines
3.1 KiB
Markdown
# Example of embedding Flutter using FlutterView
|
|
|
|
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.
|
|
|
|
You can read more about
|
|
[accessing platform and third-party services in Flutter](https://flutter.io/platform-services/).
|
|
|
|
## iOS
|
|
|
|
### Configure
|
|
|
|
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 your
|
|
`pubspec.yaml` file relative to your `xcodeproj` file.
|
|
* `FLUTTER_BUILD_MODE`: Whether to build for `debug`, `profile`, or `release`.
|
|
Defaults to `release`.
|
|
* `FLUTTER_TARGET`: The path to your `main.dart` relative to your
|
|
`pubspec.yaml`. Defaults to `lib/main.dart`.
|
|
* `FLUTTER_FRAMEWORK_DIR`: The absolute path to the directory that contains
|
|
`Flutter.framework`. Defaults to the `ios-release` version of
|
|
`Flutter.framework` in the `bin/cache` directory of the Flutter SDK.
|
|
|
|
### Build
|
|
|
|
Once you've configured your project, you can open `ios/HelloServices.xcodeproj`
|
|
in Xcode and build the project as usual.
|
|
|
|
## Android
|
|
|
|
### Configure
|
|
|
|
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 for `debug`, `profile`, or `release`.
|
|
Defaults to `release`.
|
|
* `flutter.jar`: The path to `flutter.jar`. Defaults to the
|
|
`android-arm-release` version of `flutter.jar` in the `bin/cache` directory
|
|
of the Flutter SDK.
|
|
|
|
See `android/app/build.gradle` for project specific settings, including:
|
|
|
|
* `source`: The path to the directory that contains your `pubspec.yaml` file
|
|
relative to your `build.gradle` file.
|
|
* `target`: The path to your `main.dart` relative to your `pubspec.yaml`.
|
|
Defaults to `lib/main.dart`.
|
|
|
|
### Build
|
|
|
|
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.
|
|
|
|
### Updating the Dart code
|
|
|
|
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 com.example.flutter/.ExampleActivity`
|
|
|
|
`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.
|