blob: 2bf5448798b2c7e879fa2733dbf39b7192f42ae5 [file] [view]
# Scenario App
This folder contains a dart:ui application and scripts to compile it to AOT
for exercising embedders.
It intentionally has no dependencies on the Flutter framework or tooling, such
that it should be buildable as a presubmit or postsubmit to the engine even in
the face of changes to Dart or dart:ui that require upstream changes in the
Flutter tooling.
To add a new scenario, create a new subclass of `Scenario` and add it to the
map in `main.dart`. For an example, see animated_color_square.dart, which draws
a continuously animating colored square that bounces off the sides of the
viewport.
## Building for iOS
In this folder, after building the `ios_host` and `ios_profile` engine targets,
run:
```bash
./compile_ios_aot.sh ../../../out/host_profile ../../../out/ios_profile/clang_x64/
```
This will create an `App.framework` copy it as well as the correct
`Flutter.framework` to where the Xcode project expects to find them.
You can then use `xcodebuild` to build the `ios/Scenarios/Scenarios.xcodeproj`,
or open that in Xcode and build it that way.
Currently, only AOT modes are supported.
## Building for Android
In this folder, after building the `host_profile` and `android_profile_arm64`
engine targets, run:
```bash
./compile_android_aot.sh ../../../out/host_profile ../../../out/android_profile_arm64/clang_x64/
```
This will produce a suitable `libapp.so` for building with an Android app and
copy it (along with flutter.jar) to where Gradle will expect to find it to build
the app in the `android/` folder. The app can be run by opening it in Android
Studio and running it, or by running `./gradlew assemble` in the `android/`
folder and installing the APK from the correct folder in
`android/app/build/outputs/apk`.