diff --git a/dev/devicelab/bin/tasks/build_android_host_app_with_module_aar.dart b/dev/devicelab/bin/tasks/build_android_host_app_with_module_aar.dart index e8da1285063..ddd685646be 100644 --- a/dev/devicelab/bin/tasks/build_android_host_app_with_module_aar.dart +++ b/dev/devicelab/bin/tasks/build_android_host_app_with_module_aar.dart @@ -72,13 +72,6 @@ class ModuleTest { section('Create package with native assets'); - await flutter( - 'config', - options: ['--enable-native-assets'], - output: stdout, - stderr: stderr, - ); - const String ffiPackageName = 'ffi_package'; await createFfiPackage(ffiPackageName, tempDir); diff --git a/dev/devicelab/bin/tasks/build_android_host_app_with_module_source.dart b/dev/devicelab/bin/tasks/build_android_host_app_with_module_source.dart index c9ab35b97bc..e71f8ad3f0f 100644 --- a/dev/devicelab/bin/tasks/build_android_host_app_with_module_source.dart +++ b/dev/devicelab/bin/tasks/build_android_host_app_with_module_source.dart @@ -66,13 +66,6 @@ class ModuleTest { section('Create package with native assets'); - await flutter( - 'config', - options: ['--enable-native-assets'], - output: stdout, - stderr: stderr, - ); - const String ffiPackageName = 'ffi_package'; await createFfiPackage(ffiPackageName, tempDir); diff --git a/dev/devicelab/bin/tasks/module_test_ios.dart b/dev/devicelab/bin/tasks/module_test_ios.dart index d26643ffb1d..e788a1141d7 100644 --- a/dev/devicelab/bin/tasks/module_test_ios.dart +++ b/dev/devicelab/bin/tasks/module_test_ios.dart @@ -68,8 +68,6 @@ Future main() async { section('Create package with native assets'); - await flutter('config', options: ['--enable-native-assets']); - const String ffiPackageName = 'ffi_package'; await createFfiPackage(ffiPackageName, tempDir); diff --git a/dev/devicelab/lib/tasks/native_assets_test.dart b/dev/devicelab/lib/tasks/native_assets_test.dart index 99face062ef..236af7d1a2d 100644 --- a/dev/devicelab/lib/tasks/native_assets_test.dart +++ b/dev/devicelab/lib/tasks/native_assets_test.dart @@ -29,8 +29,6 @@ TaskFunction createNativeAssetsTest({ deviceIdOverride = device.deviceId; } - await enableNativeAssets(); - for (final String buildMode in _buildModes) { if (buildMode != 'debug' && isIosSimulator) { continue; @@ -149,18 +147,6 @@ Future runFlutter({ final String _flutterBin = path.join(flutterDirectory.path, 'bin', 'flutter'); -Future enableNativeAssets() async { - print('Enabling configs for native assets...'); - final int configResult = await exec(_flutterBin, [ - 'config', - '-v', - '--enable-native-assets', - ], canFail: true); - if (configResult != 0) { - print('Failed to enable configuration, tasks may not run.'); - } -} - Future createTestProject(String packageName, Directory tempDirectory) async { await exec(_flutterBin, [ 'create', diff --git a/packages/flutter_tools/lib/src/features.dart b/packages/flutter_tools/lib/src/features.dart index fed0b16ec70..fa95dbba2be 100644 --- a/packages/flutter_tools/lib/src/features.dart +++ b/packages/flutter_tools/lib/src/features.dart @@ -48,7 +48,7 @@ abstract class FeatureFlags { bool get isCliAnimationEnabled => true; /// Whether native assets compilation and bundling is enabled. - bool get isNativeAssetsEnabled => false; + bool get isNativeAssetsEnabled => true; /// Whether Swift Package Manager dependency management is enabled. bool get isSwiftPackageManagerEnabled => false; @@ -154,7 +154,8 @@ const Feature nativeAssets = Feature( name: 'native assets compilation and bundling', configSetting: 'enable-native-assets', environmentOverride: 'FLUTTER_NATIVE_ASSETS', - master: FeatureChannelSetting(available: true), + master: FeatureChannelSetting(available: true, enabledByDefault: true), + beta: FeatureChannelSetting(available: true, enabledByDefault: true), ); /// Enable Swift Package Manager as a darwin dependency manager. diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart index c0819e11e18..83f36829498 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart @@ -657,7 +657,13 @@ Future _runDartBuild({ dependencies.addAll(linkResult.dependencies); } } - + if (codeAssets.isNotEmpty) { + globals.logger.printTrace( + 'Note: You are using the dart build hooks feature which is currently ' + 'in preview. Please see ' + 'https://dart.dev/interop/c-interop#native-assets for more details.', + ); + } globals.logger.printTrace('Building native assets for $targetOS $architectureString done.'); return DartBuildResult(codeAssets, dependencies.toList()); } diff --git a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart index 29efc876e04..dfddc525145 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart @@ -178,7 +178,6 @@ void main() { }, overrides: { DoctorValidatorsProvider: () => FakeDoctorValidatorsProvider(), - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), }, ); }); diff --git a/packages/flutter_tools/test/general.shard/features_test.dart b/packages/flutter_tools/test/general.shard/features_test.dart index b3f39cc1791..b79b0cb4a4d 100644 --- a/packages/flutter_tools/test/general.shard/features_test.dart +++ b/packages/flutter_tools/test/general.shard/features_test.dart @@ -312,9 +312,9 @@ void main() { expect( nativeAssets, allOf([ - _onChannelIs('master', available: true, enabledByDefault: false), + _onChannelIs('master', available: true, enabledByDefault: true), _onChannelIs('stable', available: false, enabledByDefault: false), - _onChannelIs('beta', available: false, enabledByDefault: false), + _onChannelIs('beta', available: true, enabledByDefault: true), ]), ); }); diff --git a/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart b/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart index 5c50f797d7b..a594a57668a 100644 --- a/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart +++ b/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart @@ -239,29 +239,32 @@ migration: expect(logger.traceText, contains('The key `create_revision` was not found')); }); - testUsingContext('enabledValues does not contain packageFfi if native-assets not enabled', () { - expect( - ParsedFlutterTemplateType.enabledValues(featureFlags), - isNot(contains(FlutterTemplateType.packageFfi)), - ); - expect( - ParsedFlutterTemplateType.enabledValues(featureFlags), - contains(FlutterTemplateType.plugin), - ); - }); - testUsingContext( - 'enabledValues contains packageFfi if natives-assets enabled', + 'enabledValues does not contain packageFfi if native-assets not enabled', () { expect( ParsedFlutterTemplateType.enabledValues(featureFlags), - contains(FlutterTemplateType.packageFfi), + isNot(contains(FlutterTemplateType.packageFfi)), ); expect( ParsedFlutterTemplateType.enabledValues(featureFlags), contains(FlutterTemplateType.plugin), ); }, - overrides: {FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true)}, + overrides: { + // ignore: avoid_redundant_argument_values + FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: false), + }, ); + + testUsingContext('enabledValues contains packageFfi if natives-assets enabled', () { + expect( + ParsedFlutterTemplateType.enabledValues(featureFlags), + contains(FlutterTemplateType.packageFfi), + ); + expect( + ParsedFlutterTemplateType.enabledValues(featureFlags), + contains(FlutterTemplateType.plugin), + ); + }); } diff --git a/packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart index d044ad15ba4..dc4d0eee200 100644 --- a/packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart @@ -54,10 +54,7 @@ void main() { 'build with assets $buildMode', // [intended] Backslashes in commands, but we will never run these commands on Windows. skip: const LocalPlatform().isWindows, - overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), - ProcessManager: () => FakeProcessManager.empty(), - }, + overrides: {ProcessManager: () => FakeProcessManager.empty()}, () async { final File packageConfig = environment.projectDir.childFile( '.dart_tool/package_config.json', @@ -121,10 +118,7 @@ void main() { // assets have to be build. testUsingContext( 'does not throw if NDK not present but no native assets present', - overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), - ProcessManager: () => FakeProcessManager.empty(), - }, + overrides: {ProcessManager: () => FakeProcessManager.empty()}, () async { final File packageConfig = environment.projectDir.childFile('.dart_tool/package_config.json'); await packageConfig.create(recursive: true); diff --git a/packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart index 0428ac2ba4c..d0dd9f90c4d 100644 --- a/packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart @@ -189,7 +189,6 @@ void main() { ], ), ]), - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), }, () async { writePackageConfigFiles(directory: iosEnvironment.projectDir, mainLibName: 'my_app'); @@ -252,7 +251,6 @@ void main() { overrides: { FileSystem: () => fileSystem, ProcessManager: () => processManager, - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), }, () async { writePackageConfigFiles(directory: androidEnvironment.projectDir, mainLibName: 'my_app'); diff --git a/packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart index b3a51c41d1e..28bcd6ed726 100644 --- a/packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart @@ -13,14 +13,12 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/build_system/targets/native_assets.dart'; -import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/isolated/native_assets/native_assets.dart'; import 'package:hooks/hooks.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; -import '../../../src/fakes.dart'; import '../fake_native_assets_build_runner.dart'; void main() { @@ -52,7 +50,6 @@ void main() { testUsingContext( 'build with assets $buildMode', overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), ProcessManager: () => FakeProcessManager.list([ const FakeCommand( diff --git a/packages/flutter_tools/test/general.shard/isolated/linux/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/linux/native_assets_test.dart index 31f04b606c9..c4e383afc5a 100644 --- a/packages/flutter_tools/test/general.shard/isolated/linux/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/linux/native_assets_test.dart @@ -13,14 +13,12 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/dart/package_map.dart'; -import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/isolated/native_assets/native_assets.dart'; import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; -import '../../../src/fakes.dart'; import '../../../src/package_config.dart'; import '../fake_native_assets_build_runner.dart'; @@ -53,10 +51,7 @@ void main() { testUsingContext( 'does not throw if clang not present but no native assets present', - overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), - ProcessManager: () => FakeProcessManager.empty(), - }, + overrides: {ProcessManager: () => FakeProcessManager.empty()}, () async { final File packageConfig = environment.projectDir.childFile('.dart_tool/package_config.json'); await packageConfig.create(recursive: true); @@ -81,7 +76,6 @@ void main() { testUsingContext( 'NativeAssetsBuildRunnerImpl.cCompilerConfig', overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), ProcessManager: () => FakeProcessManager.list([ const FakeCommand( diff --git a/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart index 71274caf04b..4f9633a6ddd 100644 --- a/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart @@ -13,7 +13,6 @@ import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/build_system/targets/native_assets.dart'; import 'package:flutter_tools/src/dart/package_map.dart'; -import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/isolated/native_assets/native_assets.dart'; import 'package:hooks/hooks.dart'; @@ -21,7 +20,6 @@ import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; -import '../../../src/fakes.dart'; import '../../../src/package_config.dart'; import '../fake_native_assets_build_runner.dart'; @@ -84,7 +82,6 @@ void main() { testUsingContext( 'build with assets $buildMode$testName', overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), ProcessManager: () => FakeProcessManager.list([ if (flutterTester) ...[ @@ -371,7 +368,6 @@ void main() { testUsingContext( 'NativeAssetsBuildRunnerImpl.cCompilerConfig', overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), ProcessManager: () => FakeProcessManager.list([ const FakeCommand( diff --git a/packages/flutter_tools/test/general.shard/isolated/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/native_assets_test.dart index 92715859512..e1a97f060f6 100644 --- a/packages/flutter_tools/test/general.shard/isolated/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/native_assets_test.dart @@ -47,10 +47,7 @@ void main() { testUsingContext( 'Native assets: non-bundled libraries require no copying', - overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), - ProcessManager: () => FakeProcessManager.empty(), - }, + overrides: {ProcessManager: () => FakeProcessManager.empty()}, () async { final File packageConfig = environment.projectDir.childFile('.dart_tool/package_config.json'); final Uri nonFlutterTesterAssetUri = environment.buildDir.childFile('native_assets.json').uri; @@ -96,7 +93,11 @@ void main() { testUsingContext( 'build with assets but not enabled', - overrides: {ProcessManager: () => FakeProcessManager.empty()}, + overrides: { + // ignore: avoid_redundant_argument_values + FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: false), + ProcessManager: () => FakeProcessManager.empty(), + }, () async { final File packageConfig = environment.projectDir.childFile('.dart_tool/package_config.json'); await packageConfig.parent.create(); @@ -122,10 +123,7 @@ void main() { testUsingContext( 'build no assets', - overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), - ProcessManager: () => FakeProcessManager.empty(), - }, + overrides: {ProcessManager: () => FakeProcessManager.empty()}, () async { final File packageConfig = environment.projectDir.childFile('.dart_tool/package_config.json'); final Uri nonFlutterTesterAssetUri = @@ -169,10 +167,7 @@ void main() { testUsingContext( 'Native assets build error', - overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), - ProcessManager: () => FakeProcessManager.empty(), - }, + overrides: {ProcessManager: () => FakeProcessManager.empty()}, () async { final File packageConfig = environment.projectDir.childFile('.dart_tool/package_config.json'); await packageConfig.parent.create(); @@ -195,10 +190,7 @@ void main() { testUsingContext( 'Native assets: no duplicate assets with linking', - overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), - ProcessManager: () => FakeProcessManager.empty(), - }, + overrides: {ProcessManager: () => FakeProcessManager.empty()}, () async { final File packageConfig = environment.projectDir.childFile('.dart_tool/package_config.json'); await packageConfig.parent.create(); diff --git a/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart index a0292fb315e..923ad397a32 100644 --- a/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart @@ -14,14 +14,12 @@ import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/build_system/targets/native_assets.dart'; import 'package:flutter_tools/src/dart/package_map.dart'; -import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/isolated/native_assets/native_assets.dart'; import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; -import '../../../src/fakes.dart'; import '../../../src/package_config.dart'; import '../fake_native_assets_build_runner.dart'; @@ -72,10 +70,7 @@ void main() { testUsingContext( 'build with assets $buildMode$testName', - overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), - ProcessManager: () => FakeProcessManager.empty(), - }, + overrides: {ProcessManager: () => FakeProcessManager.empty()}, () async { writePackageConfigFiles(directory: environment.projectDir, mainLibName: 'my_app'); final Uri nonFlutterTesterAssetUri = @@ -165,7 +160,6 @@ void main() { testUsingContext( 'NativeAssetsBuildRunnerImpl.cCompilerConfig', overrides: { - FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true), ProcessManager: () => FakeProcessManager.list([ FakeCommand( diff --git a/packages/flutter_tools/test/integration.shard/isolated/native_assets_agp_version_test.dart b/packages/flutter_tools/test/integration.shard/isolated/native_assets_agp_version_test.dart index 94d2d6d6dce..c1b55db66a1 100644 --- a/packages/flutter_tools/test/integration.shard/isolated/native_assets_agp_version_test.dart +++ b/packages/flutter_tools/test/integration.shard/isolated/native_assets_agp_version_test.dart @@ -30,10 +30,6 @@ void main() { return; } - setUpAll(() { - processManager.runSync([flutterBin, 'config', '--enable-native-assets']); - }); - for (final String agpVersion in agpVersions) { for (final String buildMode in buildModes) { testWithoutContext( diff --git a/packages/flutter_tools/test/integration.shard/isolated/native_assets_test.dart b/packages/flutter_tools/test/integration.shard/isolated/native_assets_test.dart index 8d78631f450..88fd035c765 100644 --- a/packages/flutter_tools/test/integration.shard/isolated/native_assets_test.dart +++ b/packages/flutter_tools/test/integration.shard/isolated/native_assets_test.dart @@ -53,10 +53,6 @@ void main() { return; } - setUpAll(() { - processManager.runSync([flutterBin, 'config', '--enable-native-assets']); - }); - for (final String device in devices) { for (final String buildMode in buildModes) { if (device == 'flutter-tester' && buildMode != 'debug') { diff --git a/packages/flutter_tools/test/integration.shard/isolated/native_assets_without_cbuild_assemble_test.dart b/packages/flutter_tools/test/integration.shard/isolated/native_assets_without_cbuild_assemble_test.dart index 81f6478208d..683477ee09d 100644 --- a/packages/flutter_tools/test/integration.shard/isolated/native_assets_without_cbuild_assemble_test.dart +++ b/packages/flutter_tools/test/integration.shard/isolated/native_assets_without_cbuild_assemble_test.dart @@ -36,10 +36,6 @@ void main() { const ProcessManager processManager = LocalProcessManager(); final String constraint = _getPackageFfiTemplatePubspecVersion(); - setUpAll(() { - processManager.runSync([flutterBin, 'config', '--enable-native-assets']); - }); - // Test building a host, iOS, and APK (Android) target where possible. for (final String buildCommand in [ // Current (Host) OS.