Test the Android embedding v2 (#42708) * Test the Android embedding v2 * Update integration tests * Split into shards
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart index 1a82922..4d26cb9 100644 --- a/packages/flutter_tools/lib/src/commands/create.dart +++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -623,7 +623,7 @@ 'description': projectDescription, 'dartSdk': '$flutterRoot/bin/cache/dart-sdk', 'androidX': androidX, - 'useNewAndroidEmbedding': featureFlags.isNewAndroidEmbeddingEnabled, + 'useAndroidEmbeddingV2': featureFlags.isAndroidEmbeddingV2Enabled, 'androidMinApiLevel': android.minApiLevel, 'androidSdkVersion': android_sdk.minimumAndroidSdkVersion, 'androidFlutterJar': '$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar',
diff --git a/packages/flutter_tools/lib/src/features.dart b/packages/flutter_tools/lib/src/features.dart index 332506d..d3237d7 100644 --- a/packages/flutter_tools/lib/src/features.dart +++ b/packages/flutter_tools/lib/src/features.dart
@@ -36,8 +36,8 @@ /// Whether flutter desktop for Windows is enabled. bool get isWindowsEnabled => isEnabled(flutterWindowsDesktopFeature); - /// Whether the new Android embedding is enabled. - bool get isNewAndroidEmbeddingEnabled => isEnabled(flutterNewAndroidEmbeddingFeature); + /// Whether the Android embedding V2 is enabled. + bool get isAndroidEmbeddingV2Enabled => isEnabled(flutterAndroidEmbeddingV2Feature); /// Whether a particular feature is enabled for the current channel. /// @@ -71,7 +71,7 @@ flutterMacOSDesktopFeature, flutterWindowsDesktopFeature, flutterBuildPluginAsAarFeature, - flutterNewAndroidEmbeddingFeature, + flutterAndroidEmbeddingV2Feature, ]; /// The [Feature] for flutter web. @@ -133,9 +133,10 @@ ); /// The [Feature] for generating projects using the new Android embedding. -const Feature flutterNewAndroidEmbeddingFeature = Feature( - name: 'flutter create generates projects using the new Android embedding', - configSetting: 'enable-new-android-embedding', +const Feature flutterAndroidEmbeddingV2Feature = Feature( + name: 'flutter create generates projects using the Android embedding V2', + environmentOverride: 'ENABLE_ANDROID_EMBEDDING_V2', + configSetting: 'enable-android-embedding-v2', master: FeatureChannelSetting( available: true, enabledByDefault: false,
diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index a582d8d..9568e58 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart
@@ -617,7 +617,7 @@ _overwriteFromTemplate(fs.path.join( 'module', 'android', - featureFlags.isNewAndroidEmbeddingEnabled ? 'library_new_embedding' : 'library', + featureFlags.isAndroidEmbeddingV2Enabled ? 'library_new_embedding' : 'library', ), ephemeralDirectory); _overwriteFromTemplate(fs.path.join('module', 'android', 'gradle'), ephemeralDirectory); gradle.injectGradleWrapperIfNeeded(ephemeralDirectory); @@ -631,7 +631,7 @@ 'projectName': parent.manifest.appName, 'androidIdentifier': parent.manifest.androidPackage, 'androidX': usesAndroidX, - 'useNewAndroidEmbedding': featureFlags.isNewAndroidEmbeddingEnabled, + 'useAndroidEmbeddingV2': featureFlags.isAndroidEmbeddingV2Enabled, }, printStatusWhenWriting: false, overwriteExisting: true,
diff --git a/packages/flutter_tools/templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl index 6506de1..9371a79 100644 --- a/packages/flutter_tools/templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl +++ b/packages/flutter_tools/templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl
@@ -1,6 +1,6 @@ package {{androidIdentifier}}; -{{#useNewAndroidEmbedding}} +{{#useAndroidEmbeddingV2}} {{#androidX}} import androidx.annotation.NonNull; {{/androidX}} @@ -17,8 +17,8 @@ GeneratedPluginRegistrant.registerWith(flutterEngine); } } -{{/useNewAndroidEmbedding}} -{{^useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}} +{{^useAndroidEmbeddingV2}} import android.os.Bundle; import io.flutter.app.FlutterActivity; import io.flutter.plugins.GeneratedPluginRegistrant; @@ -30,4 +30,4 @@ GeneratedPluginRegistrant.registerWith(this); } } -{{/useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}}
diff --git a/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl index fe04735..de068cf 100644 --- a/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl +++ b/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl
@@ -1,6 +1,6 @@ package {{androidIdentifier}} -{{#useNewAndroidEmbedding}} +{{#useAndroidEmbeddingV2}} {{#androidX}} import androidx.annotation.NonNull; {{/androidX}} @@ -16,8 +16,8 @@ GeneratedPluginRegistrant.registerWith(flutterEngine); } } -{{/useNewAndroidEmbedding}} -{{^useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}} +{{^useAndroidEmbeddingV2}} import android.os.Bundle import io.flutter.app.FlutterActivity import io.flutter.plugins.GeneratedPluginRegistrant @@ -28,4 +28,4 @@ GeneratedPluginRegistrant.registerWith(this) } } -{{/useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}}
diff --git a/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl index 00cce24..c64711b 100644 --- a/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl +++ b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
@@ -16,7 +16,7 @@ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> - {{^useNewAndroidEmbedding}} + {{^useAndroidEmbeddingV2}} <!-- This keeps the window background of the activity showing until Flutter renders its first frame. It can be removed if there is no splash screen (such as the default splash screen @@ -24,18 +24,18 @@ <meta-data android:name="io.flutter.app.android.SplashScreenUntilFirstFrame" android:value="true" /> - {{/useNewAndroidEmbedding}} + {{/useAndroidEmbeddingV2}} <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> - {{#useNewAndroidEmbedding}} + {{#useAndroidEmbeddingV2}} <!-- Don't delete the meta-data below. This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> <meta-data android:name="flutterEmbedding" android:value="2" /> - {{/useNewAndroidEmbedding}} + {{/useAndroidEmbeddingV2}} </application> </manifest>
diff --git a/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl index 3ef4d25..ae956a4 100644 --- a/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl +++ b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl
@@ -36,12 +36,12 @@ <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> - {{#useNewAndroidEmbedding}} + {{#useAndroidEmbeddingV2}} <!-- Don't delete the meta-data below. This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> <meta-data android:name="flutterEmbedding" android:value="2" /> - {{/useNewAndroidEmbedding}} + {{/useAndroidEmbeddingV2}} </application> </manifest>
diff --git a/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl index bc7daff..32963b3 100644 --- a/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl +++ b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl
@@ -1,7 +1,7 @@ package {{androidIdentifier}}.host; import android.os.Bundle; -{{#useNewAndroidEmbedding}} +{{#useAndroidEmbeddingV2}} {{#androidX}} import androidx.annotation.NonNull; {{/androidX}} @@ -18,8 +18,8 @@ GeneratedPluginRegistrant.registerWith(flutterEngine); } } -{{/useNewAndroidEmbedding}} -{{^useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}} +{{^useAndroidEmbeddingV2}} import io.flutter.app.FlutterActivity; import io.flutter.plugins.GeneratedPluginRegistrant; @@ -30,4 +30,4 @@ GeneratedPluginRegistrant.registerWith(this); } } -{{/useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}}
diff --git a/packages/flutter_tools/templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl b/packages/flutter_tools/templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl index f6c9d52..b6a7297 100644 --- a/packages/flutter_tools/templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl +++ b/packages/flutter_tools/templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl
@@ -1,6 +1,6 @@ package {{androidIdentifier}}; -{{#useNewAndroidEmbedding}} +{{#useAndroidEmbeddingV2}} {{#androidX}} import androidx.annotation.NonNull; {{/androidX}} @@ -29,9 +29,13 @@ result.notImplemented(); } } + + @Override + public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { + } } -{{/useNewAndroidEmbedding}} -{{^useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}} +{{^useAndroidEmbeddingV2}} import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel.MethodCallHandler; @@ -55,4 +59,4 @@ } } } -{{/useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}}
diff --git a/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl b/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl index af45d9c..1147f1c 100644 --- a/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl +++ b/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl
@@ -1,6 +1,6 @@ package {{androidIdentifier}} -{{#useNewAndroidEmbedding}} +{{#useAndroidEmbeddingV2}} {{#androidX}} import androidx.annotation.NonNull; {{/androidX}} @@ -15,7 +15,7 @@ /** {{pluginClass}} */ public class {{pluginClass}}: FlutterPlugin, MethodCallHandler { - override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPluginBinding) { + override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { val channel = MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "{{projectName}}") channel.setMethodCallHandler({{pluginClass}}()); } @@ -27,9 +27,12 @@ result.notImplemented() } } + + override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) { + } } -{{/useNewAndroidEmbedding}} -{{^useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}} +{{^useAndroidEmbeddingV2}} import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel.MethodCallHandler @@ -53,4 +56,4 @@ } } } -{{/useNewAndroidEmbedding}} +{{/useAndroidEmbeddingV2}}
diff --git a/packages/flutter_tools/test/src/testbed.dart b/packages/flutter_tools/test/src/testbed.dart index 7f9ab08..c7298ab 100644 --- a/packages/flutter_tools/test/src/testbed.dart +++ b/packages/flutter_tools/test/src/testbed.dart
@@ -699,7 +699,7 @@ this.isMacOSEnabled = false, this.isWebEnabled = false, this.isWindowsEnabled = false, - this.isNewAndroidEmbeddingEnabled = false, + this.isAndroidEmbeddingV2Enabled = false, }); @override @@ -715,7 +715,7 @@ final bool isWindowsEnabled; @override - final bool isNewAndroidEmbeddingEnabled; + final bool isAndroidEmbeddingV2Enabled; @override bool isEnabled(Feature feature) { @@ -728,8 +728,8 @@ return isMacOSEnabled; case flutterWindowsDesktopFeature: return isWindowsEnabled; - case flutterNewAndroidEmbeddingFeature: - return isNewAndroidEmbeddingEnabled; + case flutterAndroidEmbeddingV2Feature: + return isAndroidEmbeddingV2Enabled; } return false; }