diff --git a/dev/integration_tests/link_hook/pubspec.yaml b/dev/integration_tests/link_hook/pubspec.yaml index 7942fb1fcd..7c1698f7a3 100644 --- a/dev/integration_tests/link_hook/pubspec.yaml +++ b/dev/integration_tests/link_hook/pubspec.yaml @@ -7,8 +7,8 @@ environment: dependencies: logging: 1.3.0 - native_assets_cli: 0.11.0 - native_toolchain_c: 0.8.0 + native_assets_cli: 0.12.0 + native_toolchain_c: 0.9.0 async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -68,4 +68,4 @@ dev_dependencies: webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" yaml_edit: 2.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" -# PUBSPEC CHECKSUM: 4038 +# PUBSPEC CHECKSUM: c03a diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart index 77465d943e..b960e69179 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart @@ -88,7 +88,7 @@ KernelAsset _targetLocationAndroid(CodeAsset asset) { } return KernelAsset( id: asset.id, - target: Target.fromArchitectureAndOS(asset.architecture!, asset.os), + target: Target.fromArchitectureAndOS(asset.architecture, asset.os), path: kernelAssetPath, ); } diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart index c041f04996..703b93e903 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart @@ -53,7 +53,7 @@ Map assetTargetLocationsIOS(List nativeAssets idToPath[asset.id] = path; result[asset] = KernelAsset( id: asset.id, - target: Target.fromArchitectureAndOS(asset.architecture!, asset.os), + target: Target.fromArchitectureAndOS(asset.architecture, asset.os), path: path, ); } @@ -78,7 +78,7 @@ KernelAsset _targetLocationIOS(CodeAsset asset, Set alreadyTakenNames) { } return KernelAsset( id: asset.id, - target: Target.fromArchitectureAndOS(asset.architecture!, asset.os), + target: Target.fromArchitectureAndOS(asset.architecture, asset.os), path: kernelAssetPath, ); } diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart index e8257a24ab..89c511b10b 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart @@ -52,7 +52,7 @@ Map assetTargetLocationsMacOS( idToPath[asset.id] = path; result[asset] = KernelAsset( id: asset.id, - target: Target.fromArchitectureAndOS(asset.architecture!, asset.os), + target: Target.fromArchitectureAndOS(asset.architecture, asset.os), path: path, ); } @@ -91,7 +91,7 @@ KernelAsset _targetLocationMacOS( } return KernelAsset( id: asset.id, - target: Target.fromArchitectureAndOS(asset.architecture!, asset.os), + target: Target.fromArchitectureAndOS(asset.architecture, asset.os), path: kernelAssetPath, ); } 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 6a8d5f7540..1f30b9d931 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 @@ -154,23 +154,13 @@ abstract interface class FlutterNativeAssetsBuildRunner { /// Runs all [packagesWithNativeAssets] `build.dart`. Future build({ - required List buildAssetTypes, - required BuildInputValidator inputValidator, - required BuildInputCreator inputCreator, - required BuildValidator buildValidator, - required ApplicationAssetValidator applicationAssetValidator, - required Uri workingDirectory, + required List extensions, required bool linkingEnabled, }); /// Runs all [packagesWithNativeAssets] `link.dart`. Future link({ - required List buildAssetTypes, - required LinkInputValidator inputValidator, - required LinkInputCreator inputCreator, - required LinkValidator linkValidator, - required ApplicationAssetValidator applicationAssetValidator, - required Uri workingDirectory, + required List extensions, required BuildResult buildResult, }); @@ -246,42 +236,18 @@ class FlutterNativeAssetsBuildRunnerImpl implements FlutterNativeAssetsBuildRunn @override Future build({ - required List buildAssetTypes, - required BuildInputValidator inputValidator, - required BuildInputCreator inputCreator, - required BuildValidator buildValidator, - required ApplicationAssetValidator applicationAssetValidator, - required Uri workingDirectory, + required List extensions, required bool linkingEnabled, }) { - return _buildRunner.build( - buildAssetTypes: buildAssetTypes, - inputCreator: inputCreator, - inputValidator: inputValidator, - buildValidator: buildValidator, - applicationAssetValidator: applicationAssetValidator, - linkingEnabled: linkingEnabled, - ); + return _buildRunner.build(linkingEnabled: linkingEnabled, extensions: extensions); } @override Future link({ - required List buildAssetTypes, - required LinkInputValidator inputValidator, - required LinkInputCreator inputCreator, - required LinkValidator linkValidator, - required ApplicationAssetValidator applicationAssetValidator, - required Uri workingDirectory, + required List extensions, required BuildResult buildResult, }) { - return _buildRunner.link( - buildAssetTypes: buildAssetTypes, - inputCreator: inputCreator, - inputValidator: inputValidator, - linkValidator: linkValidator, - applicationAssetValidator: applicationAssetValidator, - buildResult: buildResult, - ); + return _buildRunner.link(extensions: extensions, buildResult: buildResult); } @override @@ -451,7 +417,7 @@ KernelAsset _targetLocationSingleArchitecture(CodeAsset asset, Uri? absolutePath } return KernelAsset( id: asset.id, - target: Target.fromArchitectureAndOS(asset.architecture!, asset.os), + target: Target.fromArchitectureAndOS(asset.architecture, asset.os), path: kernelAssetPath, ); } @@ -601,30 +567,17 @@ Future _runDartBuild({ targetOS == OS.macOS ? MacOSCodeConfig(targetVersion: targetMacOSVersion) : null; for (final Architecture architecture in architectures) { final BuildResult? buildResult = await buildRunner.build( - buildAssetTypes: [CodeAsset.type], - inputCreator: - () => - BuildInputBuilder() - ..config.setupCode( - targetArchitecture: architecture, - linkModePreference: LinkModePreference.dynamic, - cCompiler: cCompilerConfig, - targetOS: targetOS!, - android: androidConfig, - iOS: iosConfig, - macOS: macOSConfig, - ), - inputValidator: - (BuildInput config) async => [...await validateCodeAssetBuildInput(config)], - buildValidator: - (BuildInput config, BuildOutput output) async => [ - ...await validateCodeAssetBuildOutput(config, output), - ], - applicationAssetValidator: - (List assets) async => [ - ...await validateCodeAssetInApplication(assets), - ], - workingDirectory: projectUri, + extensions: [ + CodeAssetExtension( + targetArchitecture: architecture, + linkModePreference: LinkModePreference.dynamic, + cCompiler: cCompilerConfig, + targetOS: targetOS!, + android: androidConfig, + iOS: iosConfig, + macOS: macOSConfig, + ), + ], linkingEnabled: linkingEnabled, ); if (buildResult == null) { @@ -635,30 +588,17 @@ Future _runDartBuild({ assets.addAll(buildResult.encodedAssets); } else { final LinkResult? linkResult = await buildRunner.link( - buildAssetTypes: [CodeAsset.type], - inputCreator: - () => - LinkInputBuilder() - ..config.setupCode( - targetArchitecture: architecture, - linkModePreference: LinkModePreference.dynamic, - cCompiler: cCompilerConfig, - targetOS: targetOS!, - android: androidConfig, - iOS: iosConfig, - macOS: macOSConfig, - ), - inputValidator: - (LinkInput config) async => [...await validateCodeAssetLinkInput(config)], - linkValidator: - (LinkInput config, LinkOutput output) async => [ - ...await validateCodeAssetLinkOutput(config, output), - ], - applicationAssetValidator: - (List assets) async => [ - ...await validateCodeAssetInApplication(assets), - ], - workingDirectory: projectUri, + extensions: [ + CodeAssetExtension( + targetArchitecture: architecture, + linkModePreference: LinkModePreference.dynamic, + cCompiler: cCompilerConfig, + targetOS: targetOS, + android: androidConfig, + iOS: iosConfig, + macOS: macOSConfig, + ), + ], buildResult: buildResult, ); if (linkResult == null) { diff --git a/packages/flutter_tools/lib/src/update_packages_pins.dart b/packages/flutter_tools/lib/src/update_packages_pins.dart index d16515fa65..6157159bae 100644 --- a/packages/flutter_tools/lib/src/update_packages_pins.dart +++ b/packages/flutter_tools/lib/src/update_packages_pins.dart @@ -25,9 +25,9 @@ const Map kManuallyPinnedDependencies = { 'flutter_template_images': '5.0.0', // Must always exactly match flutter_tools template. 'google_mobile_ads': '5.1.0', // https://github.com/flutter/flutter/issues/156912 'native_assets_builder': - '0.11.1', // Under active development with breaking changes until 1.0.0. Manually rolled by @dcharkes. + '0.12.0', // Under active development with breaking changes until 1.0.0. Manually rolled by @dcharkes. 'native_assets_cli': - '0.11.0', // Under active development with breaking changes until 1.0.0. Manually rolled by @dcharkes. + '0.12.0', // Under active development with breaking changes until 1.0.0. Manually rolled by @dcharkes. 'material_color_utilities': '0.11.1', // Keep pinned to latest until 1.0.0. 'leak_tracker': '10.0.9', // https://github.com/flutter/devtools/issues/3951 'leak_tracker_testing': '3.0.1', // https://github.com/flutter/devtools/issues/3951 diff --git a/packages/flutter_tools/pubspec.yaml b/packages/flutter_tools/pubspec.yaml index fe0ae13483..ffdf9ff75e 100644 --- a/packages/flutter_tools/pubspec.yaml +++ b/packages/flutter_tools/pubspec.yaml @@ -55,8 +55,8 @@ dependencies: unified_analytics: 7.0.1 graphs: 2.3.2 - native_assets_builder: 0.11.1 - native_assets_cli: 0.11.0 + native_assets_builder: 0.12.0 + native_assets_cli: 0.12.0 # We depend on very specific internal implementation details of the # 'test' package, which change between versions, so when upgrading @@ -122,4 +122,4 @@ dartdoc: # Exclude this package from the hosted API docs. nodoc: true -# PUBSPEC CHECKSUM: 776d +# PUBSPEC CHECKSUM: f46e diff --git a/packages/flutter_tools/templates/package_ffi/pubspec.yaml.tmpl b/packages/flutter_tools/templates/package_ffi/pubspec.yaml.tmpl index 9249f0070e..a3e9abd7c4 100644 --- a/packages/flutter_tools/templates/package_ffi/pubspec.yaml.tmpl +++ b/packages/flutter_tools/templates/package_ffi/pubspec.yaml.tmpl @@ -8,8 +8,8 @@ environment: dependencies: logging: ^1.2.0 - native_assets_cli: ^0.11.0 - native_toolchain_c: ^0.8.0 + native_assets_cli: ^0.12.0 + native_toolchain_c: ^0.9.0 dev_dependencies: ffi: ^2.1.3 diff --git a/packages/flutter_tools/test/general.shard/isolated/fake_native_assets_build_runner.dart b/packages/flutter_tools/test/general.shard/isolated/fake_native_assets_build_runner.dart index 5bc0f27ec8..132ef191ba 100644 --- a/packages/flutter_tools/test/general.shard/isolated/fake_native_assets_build_runner.dart +++ b/packages/flutter_tools/test/general.shard/isolated/fake_native_assets_build_runner.dart @@ -36,18 +36,13 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn @override Future build({ - required List buildAssetTypes, - required BuildInputValidator inputValidator, - required BuildInputCreator inputCreator, - required BuildValidator buildValidator, - required ApplicationAssetValidator applicationAssetValidator, - required Uri workingDirectory, + required List extensions, required bool linkingEnabled, }) async { BuildResult? result = buildResult; for (final String package in packagesWithNativeAssetsResult) { - final BuildInputBuilder configBuilder = - inputCreator() + final BuildInputBuilder input = + BuildInputBuilder() ..setupShared( packageRoot: Uri.parse('$package/'), packageName: package, @@ -56,9 +51,11 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn outputFile: Uri.file('output.json'), ) ..setupBuildInput() - ..config.setupShared(buildAssetTypes: buildAssetTypes) - ..config.setupBuild(dryRun: false, linkingEnabled: linkingEnabled); - final BuildInput buildConfig = BuildInput(configBuilder.json); + ..config.setupBuild(linkingEnabled: linkingEnabled); + for (final ProtocolExtension extension in extensions) { + extension.setupBuildInput(input); + } + final BuildInput buildConfig = BuildInput(input.json); if (onBuild != null) { result = onBuild!(buildConfig); } @@ -69,18 +66,13 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn @override Future link({ - required List buildAssetTypes, - required LinkInputCreator inputCreator, - required LinkInputValidator inputValidator, - required LinkValidator linkValidator, - required ApplicationAssetValidator applicationAssetValidator, - required Uri workingDirectory, + required List extensions, required BuildResult buildResult, }) async { LinkResult? result = linkResult; for (final String package in packagesWithNativeAssetsResult) { - final LinkInputBuilder configBuilder = - inputCreator() + final LinkInputBuilder input = + LinkInputBuilder() ..setupShared( packageRoot: Uri.parse('$package/'), packageName: package, @@ -88,9 +80,11 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn outputDirectoryShared: Uri.parse('build-out-dir-shared'), outputFile: Uri.file('output.json'), ) - ..setupLink(assets: buildResult.encodedAssets, recordedUsesFile: null) - ..config.setupShared(buildAssetTypes: buildAssetTypes); - final LinkInput buildConfig = LinkInput(configBuilder.json); + ..setupLink(assets: buildResult.encodedAssets, recordedUsesFile: null); + for (final ProtocolExtension extension in extensions) { + extension.setupLinkInput(input); + } + final LinkInput buildConfig = LinkInput(input.json); if (onLink != null) { result = onLink!(buildConfig); }