diff --git a/dev/integration_tests/link_hook/hook/build.dart b/dev/integration_tests/link_hook/hook/build.dart index 9c50b1f2a6..5f5d1cef2e 100644 --- a/dev/integration_tests/link_hook/hook/build.dart +++ b/dev/integration_tests/link_hook/hook/build.dart @@ -9,7 +9,7 @@ import 'package:native_toolchain_c/native_toolchain_c.dart'; void main(List args) async { await build(args, (BuildConfig config, BuildOutputBuilder output) async { - if (!config.supportedAssetTypes.contains(CodeAsset.type)) { + if (!config.buildAssetTypes.contains(CodeAsset.type)) { return; } diff --git a/dev/integration_tests/link_hook/hook/link.dart b/dev/integration_tests/link_hook/hook/link.dart index 7793e71410..d507626c3f 100644 --- a/dev/integration_tests/link_hook/hook/link.dart +++ b/dev/integration_tests/link_hook/hook/link.dart @@ -6,7 +6,7 @@ import 'package:native_assets_cli/code_assets.dart'; void main(List args) async { await link(args, (LinkConfig config, LinkOutputBuilder output) async { - if (!config.supportedAssetTypes.contains(CodeAsset.type)) { + if (!config.buildAssetTypes.contains(CodeAsset.type)) { return; } final CodeAsset asset = config.codeAssets.single; diff --git a/dev/integration_tests/link_hook/pubspec.yaml b/dev/integration_tests/link_hook/pubspec.yaml index 678726d655..f53157364c 100644 --- a/dev/integration_tests/link_hook/pubspec.yaml +++ b/dev/integration_tests/link_hook/pubspec.yaml @@ -1,5 +1,5 @@ name: link_hook -description: "A new Dart FFI package project." +description: 'A new Dart FFI package project.' version: 0.0.1 environment: @@ -7,53 +7,21 @@ environment: dependencies: logging: 1.3.0 - native_assets_cli: 0.9.0 - native_toolchain_c: 0.6.0 + native_assets_cli: 0.10.0 + native_toolchain_c: 0.7.0 - _fe_analyzer_shared: 76.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - analyzer: 6.11.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - args: 2.6.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" async: 2.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" collection: 1.19.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - http_parser: 4.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - io: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - js: 0.7.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - matcher: 0.12.17 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" meta: 1.15.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - mime: 1.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - node_preamble: 2.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - package_config: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" path: 1.9.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - pool: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pub_semver: 2.1.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - shelf: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - shelf_packages_handler: 3.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - shelf_static: 1.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - shelf_web_socket: 2.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - source_map_stack_trace: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - source_maps: 0.10.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" source_span: 1.10.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - stack_trace: 1.12.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - stream_channel: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" string_scanner: 1.4.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" term_glyph: 1.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - test_api: 0.7.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - test_core: 0.6.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" typed_data: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - vm_service: 14.3.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - watcher: 1.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - web: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - web_socket: 0.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - web_socket_channel: 3.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" dev_dependencies: @@ -62,10 +30,42 @@ dev_dependencies: flutter_lints: 5.0.0 test: 1.25.14 + _fe_analyzer_shared: 76.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + analyzer: 6.11.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + args: 2.6.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" cli_util: 0.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" dart_style: 2.3.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - lints: 5.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + http_parser: 4.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + io: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + js: 0.7.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + lints: 5.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + matcher: 0.12.17 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + mime: 1.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + node_preamble: 2.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + package_config: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + pool: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" quiver: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + shelf: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + shelf_packages_handler: 3.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + shelf_static: 1.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + shelf_web_socket: 2.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + source_map_stack_trace: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + source_maps: 0.10.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + stack_trace: 1.12.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + stream_channel: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + test_api: 0.7.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + test_core: 0.6.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + vm_service: 14.3.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + watcher: 1.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + web: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + web_socket: 0.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + web_socket_channel: 3.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + 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: 3044 +# PUBSPEC CHECKSUM: 016c 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 9ce2230d5e..77465d943e 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 @@ -9,7 +9,7 @@ import '../../../android/android_sdk.dart'; import '../../../android/gradle_utils.dart'; import '../../../base/common.dart'; import '../../../base/file_system.dart'; -import '../../../build_info.dart' hide BuildMode; +import '../../../build_info.dart'; int targetAndroidNdkApi(Map environmentDefines) { return int.parse(environmentDefines[kMinSdkVersion] ?? minSdkVersion); @@ -105,14 +105,17 @@ Future cCompilerConfigAndroid() async { if (androidSdk == null) { throwToolExit('Android SDK could not be found.'); } - final CCompilerConfig result = CCompilerConfig( - compiler: _toOptionalFileUri(androidSdk.getNdkClangPath()), - archiver: _toOptionalFileUri(androidSdk.getNdkArPath()), - linker: _toOptionalFileUri(androidSdk.getNdkLdPath()), - ); - if (result.compiler == null || result.archiver == null || result.linker == null) { + final Uri? compiler = _toOptionalFileUri(androidSdk.getNdkClangPath()); + final Uri? archiver = _toOptionalFileUri(androidSdk.getNdkArPath()); + final Uri? linker = _toOptionalFileUri(androidSdk.getNdkLdPath()); + if (compiler == null || archiver == null || linker == null) { throwToolExit('Android NDK Clang could not be found.'); } + final CCompilerConfig result = CCompilerConfig( + compiler: compiler, + archiver: archiver, + linker: linker, + ); return result; } 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 9e0e4bd332..c041f04996 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 @@ -6,8 +6,7 @@ import 'package:native_assets_builder/native_assets_builder.dart'; import 'package:native_assets_cli/code_assets_builder.dart'; import '../../../base/file_system.dart'; -import '../../../build_info.dart' hide BuildMode; -import '../../../build_info.dart' as build_info; +import '../../../build_info.dart'; import '../macos/native_assets_host.dart'; // TODO(dcharkes): Fetch minimum iOS version from somewhere. https://github.com/flutter/flutter/issues/145104 @@ -100,7 +99,7 @@ Future copyNativeCodeAssetsIOS( Uri buildUri, Map> assetTargetLocations, String? codesignIdentity, - build_info.BuildMode buildMode, + BuildMode buildMode, FileSystem fileSystem, ) async { assert(assetTargetLocations.isNotEmpty); diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/linux/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/linux/native_assets.dart index 82e4d4f89e..3504eff41b 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/linux/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/linux/native_assets.dart @@ -37,9 +37,11 @@ Future cCompilerConfigLinux() async { } binaryPaths[binary] = binaryFile.uri; } - return CCompilerConfig( - archiver: binaryPaths[kArBinary], - compiler: binaryPaths[kClangBinary], - linker: binaryPaths[kLdBinary], - ); + final Uri? archiver = binaryPaths[kArBinary]; + final Uri? compiler = binaryPaths[kClangBinary]; + final Uri? linker = binaryPaths[kLdBinary]; + if (archiver == null || compiler == null || linker == null) { + throwToolExit('Clang could not be found.'); + } + return CCompilerConfig(archiver: archiver, compiler: compiler, linker: linker); } 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 ca872ff7e7..e8257a24ab 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 @@ -6,8 +6,7 @@ import 'package:native_assets_builder/native_assets_builder.dart'; import 'package:native_assets_cli/code_assets_builder.dart'; import '../../../base/file_system.dart'; -import '../../../build_info.dart' hide BuildMode; -import '../../../build_info.dart' as build_info; +import '../../../build_info.dart'; import 'native_assets_host.dart'; // TODO(dcharkes): Fetch minimum MacOS version from somewhere. https://github.com/flutter/flutter/issues/145104 @@ -116,7 +115,7 @@ Future copyNativeCodeAssetsMacOS( Uri buildUri, Map> assetTargetLocations, String? codesignIdentity, - build_info.BuildMode buildMode, + BuildMode buildMode, FileSystem fileSystem, ) async { assert(assetTargetLocations.isNotEmpty); @@ -204,7 +203,7 @@ Future copyNativeCodeAssetsMacOSFlutterTester( Uri buildUri, Map> assetTargetLocations, String? codesignIdentity, - build_info.BuildMode buildMode, + BuildMode buildMode, FileSystem fileSystem, ) async { assert(assetTargetLocations.isNotEmpty); diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets_host.dart b/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets_host.dart index 4ee588fbd4..f24070ad54 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets_host.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets_host.dart @@ -9,7 +9,7 @@ import 'package:native_assets_cli/code_assets_builder.dart'; import '../../../base/common.dart'; import '../../../base/file_system.dart'; import '../../../base/io.dart'; -import '../../../build_info.dart' as build_info; +import '../../../build_info.dart'; import '../../../convert.dart'; import '../../../globals.dart' as globals; @@ -136,7 +136,7 @@ Future> getInstallNamesDylib(File dylibFile) async { Future codesignDylib( String? codesignIdentity, - build_info.BuildMode buildMode, + BuildMode buildMode, FileSystemEntity target, ) async { if (codesignIdentity == null || codesignIdentity.isEmpty) { @@ -147,7 +147,7 @@ Future codesignDylib( '--force', '--sign', codesignIdentity, - if (buildMode != build_info.BuildMode.release) ...[ + if (buildMode != BuildMode.release) ...[ // Mimic Xcode's timestamp codesigning behavior on non-release binaries. '--timestamp=none', ], 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 6a7a9d0c58..e2d9a2224e 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 @@ -14,7 +14,7 @@ import '../../base/common.dart'; import '../../base/file_system.dart'; import '../../base/logger.dart'; import '../../base/platform.dart'; -import '../../build_info.dart' as build_info; +import '../../build_info.dart'; import '../../build_system/exceptions.dart'; import '../../cache.dart'; import '../../convert.dart'; @@ -69,7 +69,7 @@ final class DartBuildResult { Future runFlutterSpecificDartBuild({ required Map environmentDefines, required FlutterNativeAssetsBuildRunner buildRunner, - required build_info.TargetPlatform targetPlatform, + required TargetPlatform targetPlatform, required Uri projectUri, required FileSystem fileSystem, }) async { @@ -77,7 +77,7 @@ Future runFlutterSpecificDartBuild({ final Uri buildUri = nativeAssetsBuildUri(projectUri, targetOS); final Directory buildDir = fileSystem.directory(buildUri); - final bool flutterTester = targetPlatform == build_info.TargetPlatform.tester; + final bool flutterTester = targetPlatform == TargetPlatform.tester; if (!await buildDir.exists()) { // Ensure the folder exists so the native build system can copy it even @@ -89,7 +89,7 @@ Future runFlutterSpecificDartBuild({ return const DartBuildResult.empty(); } - final build_info.BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester); + final BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester); final List architectures = flutterTester ? [Architecture.current] @@ -102,7 +102,7 @@ Future runFlutterSpecificDartBuild({ buildRunner: buildRunner, architectures: architectures, projectUri: projectUri, - buildMode: _nativeAssetsBuildMode(buildMode), + linkingEnabled: _nativeAssetsLinkingEnabled(buildMode), fileSystem: fileSystem, targetOS: targetOS, ); @@ -112,17 +112,17 @@ Future runFlutterSpecificDartBuild({ Future installCodeAssets({ required DartBuildResult dartBuildResult, required Map environmentDefines, - required build_info.TargetPlatform targetPlatform, + required TargetPlatform targetPlatform, required Uri projectUri, required FileSystem fileSystem, required Uri nativeAssetsFileUri, }) async { final OS targetOS = getNativeOSFromTargetPlatform(targetPlatform); final Uri buildUri = nativeAssetsBuildUri(projectUri, targetOS); - final bool flutterTester = targetPlatform == build_info.TargetPlatform.tester; - final build_info.BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester); + final bool flutterTester = targetPlatform == TargetPlatform.tester; + final BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester); - final String? codesignIdentity = environmentDefines[build_info.kCodesignIdentity]; + final String? codesignIdentity = environmentDefines[kCodesignIdentity]; final Map assetTargetLocations = assetTargetLocationsForOS( targetOS, dartBuildResult.codeAssets, @@ -161,37 +161,33 @@ abstract interface class FlutterNativeAssetsBuildRunner { /// Runs all [packagesWithNativeAssets] `build.dart`. Future build({ - required List supportedAssetTypes, + required List buildAssetTypes, required BuildConfigValidator configValidator, required BuildConfigCreator configCreator, required BuildValidator buildValidator, required ApplicationAssetValidator applicationAssetValidator, required bool includeParentEnvironment, - required BuildMode buildMode, - required OS targetOS, required Uri workingDirectory, required bool linkingEnabled, }); /// Runs all [packagesWithNativeAssets] `link.dart`. Future link({ - required List supportedAssetTypes, + required List buildAssetTypes, required LinkConfigValidator configValidator, required LinkConfigCreator configCreator, required LinkValidator linkValidator, required ApplicationAssetValidator applicationAssetValidator, required bool includeParentEnvironment, - required BuildMode buildMode, - required OS targetOS, required Uri workingDirectory, required BuildResult buildResult, }); /// The C compiler config to use for compilation. - Future get cCompilerConfig; + Future get cCompilerConfig; /// The NDK compiler to use to use for compilation for Android. - Future get ndkCCompilerConfig; + Future get ndkCCompilerConfig; } /// Uses `package:native_assets_builder` for its implementation. @@ -230,6 +226,10 @@ class FlutterNativeAssetsBuildRunnerImpl implements FlutterNativeAssetsBuildRunn late final NativeAssetsBuildRunner _buildRunner = NativeAssetsBuildRunner( logger: _logger, dartExecutable: _dartExecutable, + fileSystem: fileSystem, + // TODO(dcharkes): Filter the environment with + // NativeAssetsBuildRunner.hookEnvironmentVariablesFilter. + hookEnvironment: const LocalPlatform().environment, ); @override @@ -240,6 +240,7 @@ class FlutterNativeAssetsBuildRunnerImpl implements FlutterNativeAssetsBuildRunn @override Future> packagesWithNativeAssets() async { final PackageLayout packageLayout = PackageLayout.fromPackageConfig( + fileSystem, packageConfig, Uri.file(packageConfigPath), ); @@ -249,33 +250,28 @@ class FlutterNativeAssetsBuildRunnerImpl implements FlutterNativeAssetsBuildRunn return packageLayout.packagesWithAssets(Hook.build); } - @override @override Future build({ - required List supportedAssetTypes, + required List buildAssetTypes, required BuildConfigValidator configValidator, required BuildConfigCreator configCreator, required BuildValidator buildValidator, required ApplicationAssetValidator applicationAssetValidator, required bool includeParentEnvironment, - required BuildMode buildMode, - required OS targetOS, required Uri workingDirectory, required bool linkingEnabled, }) { final PackageLayout packageLayout = PackageLayout.fromPackageConfig( + fileSystem, packageConfig, Uri.file(packageConfigPath), ); return _buildRunner.build( - supportedAssetTypes: supportedAssetTypes, + buildAssetTypes: buildAssetTypes, configCreator: configCreator, configValidator: configValidator, buildValidator: buildValidator, applicationAssetValidator: applicationAssetValidator, - buildMode: buildMode, - includeParentEnvironment: includeParentEnvironment, - targetOS: targetOS, workingDirectory: workingDirectory, packageLayout: packageLayout, linkingEnabled: linkingEnabled, @@ -284,30 +280,26 @@ class FlutterNativeAssetsBuildRunnerImpl implements FlutterNativeAssetsBuildRunn @override Future link({ - required List supportedAssetTypes, + required List buildAssetTypes, required LinkConfigValidator configValidator, required LinkConfigCreator configCreator, required LinkValidator linkValidator, required ApplicationAssetValidator applicationAssetValidator, required bool includeParentEnvironment, - required BuildMode buildMode, - required OS targetOS, required Uri workingDirectory, required BuildResult buildResult, }) { final PackageLayout packageLayout = PackageLayout.fromPackageConfig( + fileSystem, packageConfig, Uri.file(packageConfigPath), ); return _buildRunner.link( - supportedAssetTypes: supportedAssetTypes, + buildAssetTypes: buildAssetTypes, configCreator: configCreator, configValidator: configValidator, linkValidator: linkValidator, applicationAssetValidator: applicationAssetValidator, - buildMode: buildMode, - includeParentEnvironment: includeParentEnvironment, - targetOS: targetOS, workingDirectory: workingDirectory, packageLayout: packageLayout, buildResult: buildResult, @@ -315,7 +307,7 @@ class FlutterNativeAssetsBuildRunnerImpl implements FlutterNativeAssetsBuildRunn } @override - late final Future cCompilerConfig = () { + late final Future cCompilerConfig = () { if (globals.platform.isMacOS || globals.platform.isIOS) { return cCompilerConfigMacOS(); } @@ -377,15 +369,18 @@ String _toNativeAssetsJsonFile(List kernelAssets) { return jsonEncode(jsonContents); } -/// Select the native asset build mode for a given Flutter build mode. -BuildMode _nativeAssetsBuildMode(build_info.BuildMode buildMode) { +/// Whether link hooks should be run. +/// +/// Link hooks should only be run for AOT Dart builds, which is the non-debug +/// modes in Flutter. +bool _nativeAssetsLinkingEnabled(BuildMode buildMode) { switch (buildMode) { - case build_info.BuildMode.debug: - return BuildMode.debug; - case build_info.BuildMode.jitRelease: - case build_info.BuildMode.profile: - case build_info.BuildMode.release: - return BuildMode.release; + case BuildMode.debug: + return false; + case BuildMode.jitRelease: + case BuildMode.profile: + case BuildMode.release: + return true; } } @@ -456,7 +451,7 @@ Future ensureNoNativeAssetsOrOsIsSupported( /// This should be the same for different archs, debug/release, etc. /// It should work for all macOS. Uri nativeAssetsBuildUri(Uri projectUri, OS os) { - final String buildDir = build_info.getBuildDirectory(); + final String buildDir = getBuildDirectory(); return projectUri.resolve('$buildDir/native_assets/$os/'); } @@ -529,7 +524,7 @@ Map assetTargetLocationsForOS( Future _copyNativeCodeAssetsForOS( OS targetOS, Uri buildUri, - build_info.BuildMode buildMode, + BuildMode buildMode, FileSystem fileSystem, Map assetTargetLocations, String? codesignIdentity, @@ -604,59 +599,61 @@ Future _runDartBuild({ required FlutterNativeAssetsBuildRunner buildRunner, required List architectures, required Uri projectUri, - required BuildMode buildMode, required FileSystem fileSystem, required OS? targetOS, + required bool linkingEnabled, }) async { - final bool linkingEnabled = buildMode == BuildMode.release; - final String architectureString = architectures.length == 1 ? architectures.single.toString() : architectures.toList().toString(); - globals.logger.printTrace('Building native assets for $targetOS $architectureString $buildMode.'); + globals.logger.printTrace('Building native assets for $targetOS $architectureString.'); final List assets = []; final Set dependencies = {}; - final build_info.EnvironmentType? environmentType; + final EnvironmentType? environmentType; if (targetOS == OS.iOS) { - final String? sdkRoot = environmentDefines[build_info.kSdkRoot]; + final String? sdkRoot = environmentDefines[kSdkRoot]; if (sdkRoot == null) { - throw MissingDefineException(build_info.kSdkRoot, 'native_assets'); + throw MissingDefineException(kSdkRoot, 'native_assets'); } environmentType = xcode.environmentTypeFromSdkroot(sdkRoot, fileSystem); } else { environmentType = null; } - final CCompilerConfig cCompilerConfig = + final CCompilerConfig? cCompilerConfig = targetOS == OS.android ? await buildRunner.ndkCCompilerConfig : await buildRunner.cCompilerConfig; - final String? codesignIdentity = environmentDefines[build_info.kCodesignIdentity]; + final String? codesignIdentity = environmentDefines[kCodesignIdentity]; assert(codesignIdentity == null || targetOS == OS.iOS || targetOS == OS.macOS); - final int? androidNdkApi = - targetOS == OS.android ? targetAndroidNdkApi(environmentDefines) : null; - final int? iOSVersion = targetOS == OS.iOS ? targetIOSVersion : null; - final int? macOSVersion = targetOS == OS.macOS ? targetMacOSVersion : null; - final IOSSdk? iOSSdk = targetOS == OS.iOS ? getIOSSdk(environmentType!) : null; - + final AndroidConfig? androidConfig = + targetOS == OS.android + ? AndroidConfig(targetNdkApi: targetAndroidNdkApi(environmentDefines)) + : null; + final IOSConfig? iosConfig = + targetOS == OS.iOS + ? IOSConfig(targetVersion: targetIOSVersion, targetSdk: getIOSSdk(environmentType!)) + : null; + final MacOSConfig? macOSConfig = + targetOS == OS.macOS ? MacOSConfig(targetVersion: targetMacOSVersion) : null; for (final Architecture architecture in architectures) { final BuildResult? buildResult = await buildRunner.build( - supportedAssetTypes: [CodeAsset.type], + buildAssetTypes: [CodeAsset.type], configCreator: () => BuildConfigBuilder()..setupCodeConfig( targetArchitecture: architecture, linkModePreference: LinkModePreference.dynamic, cCompilerConfig: cCompilerConfig, - targetAndroidNdkApi: androidNdkApi, - targetIOSVersion: iOSVersion, - targetMacOSVersion: macOSVersion, - targetIOSSdk: iOSSdk, + targetOS: targetOS!, + androidConfig: androidConfig, + iOSConfig: iosConfig, + macOSConfig: macOSConfig, ), configValidator: (BuildConfig config) async => [...await validateCodeAssetBuildConfig(config)], @@ -668,8 +665,6 @@ Future _runDartBuild({ (List assets) async => [ ...await validateCodeAssetInApplication(assets), ], - targetOS: targetOS!, - buildMode: buildMode, workingDirectory: projectUri, includeParentEnvironment: true, linkingEnabled: linkingEnabled, @@ -682,17 +677,17 @@ Future _runDartBuild({ assets.addAll(buildResult.encodedAssets); } else { final LinkResult? linkResult = await buildRunner.link( - supportedAssetTypes: [CodeAsset.type], + buildAssetTypes: [CodeAsset.type], configCreator: () => LinkConfigBuilder()..setupCodeConfig( targetArchitecture: architecture, linkModePreference: LinkModePreference.dynamic, cCompilerConfig: cCompilerConfig, - targetAndroidNdkApi: androidNdkApi, - targetIOSVersion: iOSVersion, - targetMacOSVersion: macOSVersion, - targetIOSSdk: iOSSdk, + targetOS: targetOS!, + androidConfig: androidConfig, + iOSConfig: iosConfig, + macOSConfig: macOSConfig, ), configValidator: (LinkConfig config) async => [...await validateCodeAssetLinkConfig(config)], @@ -707,8 +702,6 @@ Future _runDartBuild({ workingDirectory: projectUri, includeParentEnvironment: true, buildResult: buildResult, - targetOS: targetOS, - buildMode: buildMode, ); if (linkResult == null) { _throwNativeAssetsLinkFailed(); @@ -723,14 +716,12 @@ Future _runDartBuild({ .where((EncodedAsset asset) => asset.type == CodeAsset.type) .map(CodeAsset.fromEncoded) .toList(); - globals.logger.printTrace( - 'Building native assets for $targetOS $architectureString $buildMode done.', - ); + globals.logger.printTrace('Building native assets for $targetOS $architectureString done.'); return DartBuildResult(codeAssets, dependencies.toList()); } List _architecturesForOS( - build_info.TargetPlatform targetPlatform, + TargetPlatform targetPlatform, OS targetOS, Map environmentDefines, ) { @@ -740,25 +731,20 @@ List _architecturesForOS( case OS.windows: return [_getNativeArchitecture(targetPlatform)]; case OS.macOS: - final List darwinArchs = + final List darwinArchs = _emptyToNull( - environmentDefines[build_info.kDarwinArchs], - )?.split(' ').map(build_info.getDarwinArchForName).toList() ?? - [build_info.DarwinArch.x86_64, build_info.DarwinArch.arm64]; + environmentDefines[kDarwinArchs], + )?.split(' ').map(getDarwinArchForName).toList() ?? + [DarwinArch.x86_64, DarwinArch.arm64]; return darwinArchs.map(getNativeMacOSArchitecture).toList(); case OS.android: - final String? androidArchsEnvironment = environmentDefines[build_info.kAndroidArchs]; - final List androidArchs = _androidArchs( - targetPlatform, - androidArchsEnvironment, - ); + final String? androidArchsEnvironment = environmentDefines[kAndroidArchs]; + final List androidArchs = _androidArchs(targetPlatform, androidArchsEnvironment); return androidArchs.map(getNativeAndroidArchitecture).toList(); case OS.iOS: - final List iosArchs = - _emptyToNull( - environmentDefines[build_info.kIosArchs], - )?.split(' ').map(build_info.getIOSArchForName).toList() ?? - [build_info.DarwinArch.arm64]; + final List iosArchs = + _emptyToNull(environmentDefines[kIosArchs])?.split(' ').map(getIOSArchForName).toList() ?? + [DarwinArch.arm64]; return iosArchs.map(getNativeIOSArchitecture).toList(); default: // TODO(dacoharkes): Implement other OSes. https://github.com/flutter/flutter/issues/129757 @@ -767,25 +753,25 @@ List _architecturesForOS( } } -Architecture _getNativeArchitecture(build_info.TargetPlatform targetPlatform) { +Architecture _getNativeArchitecture(TargetPlatform targetPlatform) { switch (targetPlatform) { - case build_info.TargetPlatform.linux_x64: - case build_info.TargetPlatform.windows_x64: + case TargetPlatform.linux_x64: + case TargetPlatform.windows_x64: return Architecture.x64; - case build_info.TargetPlatform.linux_arm64: - case build_info.TargetPlatform.windows_arm64: + case TargetPlatform.linux_arm64: + case TargetPlatform.windows_arm64: return Architecture.arm64; - case build_info.TargetPlatform.android: - case build_info.TargetPlatform.ios: - case build_info.TargetPlatform.darwin: - case build_info.TargetPlatform.fuchsia_arm64: - case build_info.TargetPlatform.fuchsia_x64: - case build_info.TargetPlatform.tester: - case build_info.TargetPlatform.web_javascript: - case build_info.TargetPlatform.android_arm: - case build_info.TargetPlatform.android_arm64: - case build_info.TargetPlatform.android_x64: - case build_info.TargetPlatform.android_x86: + case TargetPlatform.android: + case TargetPlatform.ios: + case TargetPlatform.darwin: + case TargetPlatform.fuchsia_arm64: + case TargetPlatform.fuchsia_x64: + case TargetPlatform.tester: + case TargetPlatform.web_javascript: + case TargetPlatform.android_arm: + case TargetPlatform.android_arm64: + case TargetPlatform.android_x64: + case TargetPlatform.android_x86: throw Exception('Unknown targetPlatform: $targetPlatform.'); } } @@ -793,7 +779,7 @@ Architecture _getNativeArchitecture(build_info.TargetPlatform targetPlatform) { Future _copyNativeCodeAssetsToBundleOnWindowsLinux( Uri buildUri, Map assetTargetLocations, - build_info.BuildMode buildMode, + BuildMode buildMode, FileSystem fileSystem, ) async { assert(assetTargetLocations.isNotEmpty); @@ -819,28 +805,28 @@ Never _throwNativeAssetsLinkFailed() { throwToolExit('Linking native assets failed. See the logs for more details.'); } -OS getNativeOSFromTargetPlatform(build_info.TargetPlatform platform) { +OS getNativeOSFromTargetPlatform(TargetPlatform platform) { switch (platform) { - case build_info.TargetPlatform.ios: + case TargetPlatform.ios: return OS.iOS; - case build_info.TargetPlatform.darwin: + case TargetPlatform.darwin: return OS.macOS; - case build_info.TargetPlatform.linux_x64: - case build_info.TargetPlatform.linux_arm64: + case TargetPlatform.linux_x64: + case TargetPlatform.linux_arm64: return OS.linux; - case build_info.TargetPlatform.windows_x64: - case build_info.TargetPlatform.windows_arm64: + case TargetPlatform.windows_x64: + case TargetPlatform.windows_arm64: return OS.windows; - case build_info.TargetPlatform.fuchsia_arm64: - case build_info.TargetPlatform.fuchsia_x64: + case TargetPlatform.fuchsia_arm64: + case TargetPlatform.fuchsia_x64: return OS.fuchsia; - case build_info.TargetPlatform.android: - case build_info.TargetPlatform.android_arm: - case build_info.TargetPlatform.android_arm64: - case build_info.TargetPlatform.android_x64: - case build_info.TargetPlatform.android_x86: + case TargetPlatform.android: + case TargetPlatform.android_arm: + case TargetPlatform.android_arm64: + case TargetPlatform.android_x64: + case TargetPlatform.android_x86: return OS.android; - case build_info.TargetPlatform.tester: + case TargetPlatform.tester: if (const LocalPlatform().isMacOS) { return OS.macOS; } else if (const LocalPlatform().isLinux) { @@ -850,39 +836,36 @@ OS getNativeOSFromTargetPlatform(build_info.TargetPlatform platform) { } else { throw StateError('Unknown operating system'); } - case build_info.TargetPlatform.web_javascript: + case TargetPlatform.web_javascript: throw StateError('No dart builds for web yet.'); } } -List _androidArchs( - build_info.TargetPlatform targetPlatform, - String? androidArchsEnvironment, -) { +List _androidArchs(TargetPlatform targetPlatform, String? androidArchsEnvironment) { switch (targetPlatform) { - case build_info.TargetPlatform.android_arm: - return [build_info.AndroidArch.armeabi_v7a]; - case build_info.TargetPlatform.android_arm64: - return [build_info.AndroidArch.arm64_v8a]; - case build_info.TargetPlatform.android_x64: - return [build_info.AndroidArch.x86_64]; - case build_info.TargetPlatform.android_x86: - return [build_info.AndroidArch.x86]; - case build_info.TargetPlatform.android: + case TargetPlatform.android_arm: + return [AndroidArch.armeabi_v7a]; + case TargetPlatform.android_arm64: + return [AndroidArch.arm64_v8a]; + case TargetPlatform.android_x64: + return [AndroidArch.x86_64]; + case TargetPlatform.android_x86: + return [AndroidArch.x86]; + case TargetPlatform.android: if (androidArchsEnvironment == null) { - throw MissingDefineException(build_info.kAndroidArchs, 'native_assets'); + throw MissingDefineException(kAndroidArchs, 'native_assets'); } - return androidArchsEnvironment.split(' ').map(build_info.getAndroidArchForName).toList(); - case build_info.TargetPlatform.darwin: - case build_info.TargetPlatform.fuchsia_arm64: - case build_info.TargetPlatform.fuchsia_x64: - case build_info.TargetPlatform.ios: - case build_info.TargetPlatform.linux_arm64: - case build_info.TargetPlatform.linux_x64: - case build_info.TargetPlatform.tester: - case build_info.TargetPlatform.web_javascript: - case build_info.TargetPlatform.windows_x64: - case build_info.TargetPlatform.windows_arm64: + return androidArchsEnvironment.split(' ').map(getAndroidArchForName).toList(); + case TargetPlatform.darwin: + case TargetPlatform.fuchsia_arm64: + case TargetPlatform.fuchsia_x64: + case TargetPlatform.ios: + case TargetPlatform.linux_arm64: + case TargetPlatform.linux_x64: + case TargetPlatform.tester: + case TargetPlatform.web_javascript: + case TargetPlatform.windows_x64: + case TargetPlatform.windows_arm64: throwToolExit('Unsupported Android target platform: $targetPlatform.'); } } @@ -920,13 +903,13 @@ const Map> _osTargets = >{ OS.windows: {Architecture.arm64, Architecture.ia32, Architecture.x64}, }; -build_info.BuildMode _getBuildMode(Map environmentDefines, bool isFlutterTester) { +BuildMode _getBuildMode(Map environmentDefines, bool isFlutterTester) { if (isFlutterTester) { - return build_info.BuildMode.debug; + return BuildMode.debug; } - final String? environmentBuildMode = environmentDefines[build_info.kBuildMode]; + final String? environmentBuildMode = environmentDefines[kBuildMode]; if (environmentBuildMode == null) { - throw MissingDefineException(build_info.kBuildMode, 'native_assets'); + throw MissingDefineException(kBuildMode, 'native_assets'); } - return build_info.BuildMode.fromCliName(environmentBuildMode); + return BuildMode.fromCliName(environmentBuildMode); } diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/test/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/test/native_assets.dart index 7d12c2ce17..a09a057bcc 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/test/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/test/native_assets.dart @@ -4,7 +4,7 @@ // Logic for native assets shared between all host OSes. -import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_assets_cli/code_assets.dart' show OS; import '../../../base/platform.dart'; import '../../../build_info.dart'; diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/windows/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/windows/native_assets.dart index 2da8894873..63164e8b58 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/windows/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/windows/native_assets.dart @@ -7,7 +7,7 @@ import 'package:native_assets_cli/code_assets_builder.dart'; import '../../../globals.dart' as globals; import '../../../windows/visual_studio.dart'; -Future cCompilerConfigWindows() async { +Future cCompilerConfigWindows() async { final VisualStudio visualStudio = VisualStudio( fileSystem: globals.fs, platform: globals.platform, @@ -16,11 +16,21 @@ Future cCompilerConfigWindows() async { osUtils: globals.os, ); + final Uri? compiler = _toOptionalFileUri(visualStudio.clPath); + final Uri? archiver = _toOptionalFileUri(visualStudio.libPath); + final Uri? linker = _toOptionalFileUri(visualStudio.linkPath); + final Uri? envScript = _toOptionalFileUri(visualStudio.vcvarsPath); + + if (compiler == null || archiver == null || linker == null || envScript == null) { + // Visual Studio might not be installed, don't exit tool. + return null; + } + return CCompilerConfig( - compiler: _toOptionalFileUri(visualStudio.clPath), - linker: _toOptionalFileUri(visualStudio.linkPath), - archiver: _toOptionalFileUri(visualStudio.libPath), - envScript: _toOptionalFileUri(visualStudio.vcvarsPath), + compiler: compiler, + archiver: archiver, + linker: linker, + envScript: envScript, envScriptArgs: [], ); } diff --git a/packages/flutter_tools/lib/src/update_packages_pins.dart b/packages/flutter_tools/lib/src/update_packages_pins.dart index 38a7b1e548..a5c355e017 100644 --- a/packages/flutter_tools/lib/src/update_packages_pins.dart +++ b/packages/flutter_tools/lib/src/update_packages_pins.dart @@ -27,9 +27,9 @@ const Map kManuallyPinnedDependencies = { 'intl': '0.19.0', // 0.20.0 introduces new transitive dependencies that are not (yet) cleared in Flutter's allow list. 'native_assets_builder': - '0.9.0', // Under active development with breaking changes until 1.0.0. Manually rolled by @dcharkes. + '0.10.2', // Under active development with breaking changes until 1.0.0. Manually rolled by @dcharkes. 'native_assets_cli': - '0.9.0', // Under active development with breaking changes until 1.0.0. Manually rolled by @dcharkes. + '0.10.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.8', // 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 d7b71568df..ee4717cfe3 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.9.0 - native_assets_cli: 0.9.0 + native_assets_builder: 0.10.2 + native_assets_cli: 0.10.0 # We depend on very specific internal implementation details of the # 'test' package, which change between versions, so when upgrading @@ -85,10 +85,8 @@ dependencies: glob: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 4.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" io: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - js: 0.7.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" json_rpc_2: 3.0.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" matcher: 0.12.17 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - node_preamble: 2.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" petitparser: 6.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" platform: 3.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" shelf_packages_handler: 3.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -101,7 +99,6 @@ dependencies: string_scanner: 1.4.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" sync_http: 0.3.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" term_glyph: 1.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - test: 1.25.14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" typed_data: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" vm_service_interface: 2.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" watcher: 1.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -115,10 +112,13 @@ dev_dependencies: pubspec_parse: 1.4.0 checked_yaml: 2.0.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + js: 0.7.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" json_annotation: 4.9.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + node_preamble: 2.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + test: 1.25.14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" dartdoc: # Exclude this package from the hosted API docs. nodoc: true -# PUBSPEC CHECKSUM: c6ec +# PUBSPEC CHECKSUM: a23f diff --git a/packages/flutter_tools/templates/package_ffi/pubspec.yaml.tmpl b/packages/flutter_tools/templates/package_ffi/pubspec.yaml.tmpl index a14c84d5f9..fb99bc8965 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.9.0 - native_toolchain_c: ^0.6.0 + native_assets_cli: ^0.10.0 + native_toolchain_c: ^0.7.0 dev_dependencies: ffi: ^2.1.3 diff --git a/packages/flutter_tools/templates/package_ffi/test/projectName_test.dart.tmpl b/packages/flutter_tools/templates/package_ffi/test/projectName_test.dart.tmpl index f19bce25aa..030fc9d247 100644 --- a/packages/flutter_tools/templates/package_ffi/test/projectName_test.dart.tmpl +++ b/packages/flutter_tools/templates/package_ffi/test/projectName_test.dart.tmpl @@ -4,8 +4,7 @@ import 'package:{{projectName}}/{{projectName}}.dart'; void main() { test('invoke native function', () { - // Tests are run in debug mode. - expect(sum(24, 18), 1042); + expect(sum(24, 18), 42); }); test('invoke async native callback', () async { 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 3cffbdf005..b5a04e81c4 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 @@ -17,7 +17,7 @@ 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:native_assets_cli/code_assets_builder.dart' hide BuildMode; +import 'package:native_assets_cli/code_assets_builder.dart'; import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; @@ -108,8 +108,8 @@ void main() { expect( (globals.logger as BufferLogger).traceText, stringContainsInOrder([ - 'Building native assets for android arm64 $buildMode.', - 'Building native assets for android arm64 $buildMode done.', + 'Building native assets for android arm64.', + 'Building native assets for android arm64 done.', ]), ); 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 6fc9da0c2a..b27898b2ac 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 @@ -13,8 +13,7 @@ import 'package:flutter_tools/src/build_system/exceptions.dart'; import 'package:flutter_tools/src/build_system/targets/native_assets.dart'; import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/isolated/native_assets/native_assets.dart'; -import 'package:native_assets_cli/code_assets_builder.dart' hide BuildMode; -import 'package:native_assets_cli/native_assets_cli.dart' as native_assets_cli show BuildMode; +import 'package:native_assets_cli/code_assets_builder.dart'; import 'package:package_config/package_config.dart' show Package; import '../../../../src/common.dart'; @@ -279,7 +278,6 @@ void main() { linkResult: FakeFlutterNativeAssetsBuilderResult.fromAssets(codeAssets: codeAssets), ); await DartBuildForNative(buildRunner: buildRunner).build(androidEnvironment); - expect(buildRunner.lastBuildMode, native_assets_cli.BuildMode.release); }, ); } 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 de6ed7809a..bf95e0558d 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 @@ -19,10 +19,9 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn this.onLink, this.buildResult = const FakeFlutterNativeAssetsBuilderResult(), this.linkResult = const FakeFlutterNativeAssetsBuilderResult(), - CCompilerConfig? cCompilerConfigResult, - CCompilerConfig? ndkCCompilerConfigResult, - }) : cCompilerConfigResult = cCompilerConfigResult ?? CCompilerConfig(), - ndkCCompilerConfigResult = ndkCCompilerConfigResult ?? CCompilerConfig(); + this.cCompilerConfigResult, + this.ndkCCompilerConfigResult, + }); final BuildResult? Function(BuildConfig)? onBuild; final LinkResult? Function(LinkConfig)? onLink; @@ -30,25 +29,22 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn final LinkResult? linkResult; final bool hasPackageConfigResult; final List packagesWithNativeAssetsResult; - final CCompilerConfig cCompilerConfigResult; - final CCompilerConfig ndkCCompilerConfigResult; + final CCompilerConfig? cCompilerConfigResult; + final CCompilerConfig? ndkCCompilerConfigResult; int buildInvocations = 0; int linkInvocations = 0; int hasPackageConfigInvocations = 0; int packagesWithNativeAssetsInvocations = 0; - BuildMode? lastBuildMode; @override Future build({ - required List supportedAssetTypes, + required List buildAssetTypes, required BuildConfigValidator configValidator, required BuildConfigCreator configCreator, required BuildValidator buildValidator, required ApplicationAssetValidator applicationAssetValidator, required bool includeParentEnvironment, - required BuildMode buildMode, - required OS targetOS, required Uri workingDirectory, required bool linkingEnabled, }) async { @@ -59,9 +55,7 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn ..setupHookConfig( packageRoot: package.root, packageName: package.name, - targetOS: targetOS, - supportedAssetTypes: supportedAssetTypes, - buildMode: buildMode, + buildAssetTypes: buildAssetTypes, ) ..setupBuildConfig(dryRun: false, linkingEnabled: linkingEnabled) ..setupBuildRunConfig( @@ -72,7 +66,6 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn if (onBuild != null) { result = onBuild!(buildConfig); } - lastBuildMode = buildConfig.buildMode; buildInvocations++; } return result; @@ -80,14 +73,12 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn @override Future link({ - required List supportedAssetTypes, + required List buildAssetTypes, required LinkConfigCreator configCreator, required LinkConfigValidator configValidator, required LinkValidator linkValidator, required ApplicationAssetValidator applicationAssetValidator, required bool includeParentEnvironment, - required BuildMode buildMode, - required OS targetOS, required Uri workingDirectory, required BuildResult buildResult, }) async { @@ -98,9 +89,7 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn ..setupHookConfig( packageRoot: package.root, packageName: package.name, - targetOS: targetOS, - supportedAssetTypes: supportedAssetTypes, - buildMode: buildMode, + buildAssetTypes: buildAssetTypes, ) ..setupLinkRunConfig( outputDirectory: Uri.parse('build-out-dir'), @@ -111,7 +100,6 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn if (onLink != null) { result = onLink!(buildConfig); } - lastBuildMode = buildMode; linkInvocations++; } return result; @@ -130,10 +118,10 @@ class FakeFlutterNativeAssetsBuildRunner implements FlutterNativeAssetsBuildRunn } @override - Future get cCompilerConfig async => cCompilerConfigResult; + Future get cCompilerConfig async => cCompilerConfigResult; @override - Future get ndkCCompilerConfig async => cCompilerConfigResult; + Future get ndkCCompilerConfig async => cCompilerConfigResult; } final class FakeFlutterNativeAssetsBuilderResult implements BuildResult, LinkResult { 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 261fbbc91c..dad124e114 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 @@ -15,7 +15,7 @@ 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:native_assets_cli/code_assets_builder.dart' hide BuildMode; +import 'package:native_assets_cli/code_assets_builder.dart'; import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; @@ -185,14 +185,14 @@ void main() { packagesWithNativeAssetsResult: [Package('bar', projectUri)], onBuild: (BuildConfig config) => FakeFlutterNativeAssetsBuilderResult.fromAssets( - codeAssets: codeAssets(config.targetOS, config.codeConfig), + codeAssets: codeAssets(config.codeConfig.targetOS, config.codeConfig), ), onLink: (LinkConfig config) => buildMode == BuildMode.debug ? null : FakeFlutterNativeAssetsBuilderResult.fromAssets( - codeAssets: codeAssets(config.targetOS, config.codeConfig), + codeAssets: codeAssets(config.codeConfig.targetOS, config.codeConfig), ), ); final Map environmentDefines = { @@ -218,8 +218,8 @@ void main() { expect( (globals.logger as BufferLogger).traceText, stringContainsInOrder([ - 'Building native assets for ios [arm64, x64] $buildMode.', - 'Building native assets for ios [arm64, x64] $buildMode done.', + 'Building native assets for ios [arm64, x64].', + 'Building native assets for ios [arm64, x64] done.', ]), ); expect(environment.buildDir.childFile(InstallCodeAssets.nativeAssetsFilename), exists); 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 3631a02d9a..d08b8331f1 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 @@ -15,7 +15,7 @@ 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:native_assets_cli/code_assets_builder.dart' hide BuildMode; +import 'package:native_assets_cli/code_assets_builder.dart'; import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; @@ -118,7 +118,7 @@ void main() { fileSystem, logger, ); - final CCompilerConfig result = await runner.cCompilerConfig; + final CCompilerConfig result = (await runner.cCompilerConfig)!; expect(result.compiler, Uri.file('/some/path/to/clang')); }, ); 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 9567e78d07..c978a5bc3b 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 @@ -15,7 +15,7 @@ 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:native_assets_cli/code_assets_builder.dart' hide BuildMode; +import 'package:native_assets_cli/code_assets_builder.dart'; import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; @@ -281,14 +281,14 @@ void main() { packagesWithNativeAssetsResult: [Package('bar', projectUri)], onBuild: (BuildConfig config) => FakeFlutterNativeAssetsBuilderResult.fromAssets( - codeAssets: codeAssets(config.targetOS, config.codeConfig), + codeAssets: codeAssets(config.codeConfig.targetOS, config.codeConfig), ), onLink: (LinkConfig config) => buildMode == BuildMode.debug ? null : FakeFlutterNativeAssetsBuilderResult.fromAssets( - codeAssets: codeAssets(config.targetOS, config.codeConfig), + codeAssets: codeAssets(config.codeConfig.targetOS, config.codeConfig), ), ); final Map environmentDefines = { @@ -324,8 +324,8 @@ void main() { expect( (globals.logger as BufferLogger).traceText, stringContainsInOrder([ - 'Building native assets for macos $expectedArchsBeingBuilt $buildMode.', - 'Building native assets for macos $expectedArchsBeingBuilt $buildMode done.', + 'Building native assets for macos $expectedArchsBeingBuilt.', + 'Building native assets for macos $expectedArchsBeingBuilt done.', ]), ); final String nativeAssetsFileContent = @@ -403,7 +403,7 @@ InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault fileSystem, logger, ); - final CCompilerConfig result = await runner.cCompilerConfig; + final CCompilerConfig result = (await runner.cCompilerConfig)!; expect( result.compiler, Uri.file( 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 d65ad71c66..1760cc440e 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 @@ -14,7 +14,7 @@ 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:native_assets_cli/code_assets_builder.dart' hide BuildMode; +import 'package:native_assets_cli/code_assets_builder.dart'; import 'package:package_config/package_config_types.dart'; import '../../src/common.dart'; 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 281fb43163..61612dae0c 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 @@ -15,8 +15,8 @@ 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:native_assets_cli/code_assets_builder.dart' hide BuildMode; -import 'package:native_assets_cli/native_assets_cli_internal.dart' as native_assets_cli; +import 'package:native_assets_cli/code_assets.dart' as native_assets_cli; +import 'package:native_assets_cli/code_assets_builder.dart'; import 'package:package_config/package_config_types.dart'; import '../../../src/common.dart'; @@ -136,8 +136,8 @@ void main() { expect( (globals.logger as BufferLogger).traceText, stringContainsInOrder([ - 'Building native assets for $expectedOS $expectedArch $buildMode.', - 'Building native assets for $expectedOS $expectedArch $buildMode done.', + 'Building native assets for $expectedOS $expectedArch.', + 'Building native assets for $expectedOS $expectedArch done.', ]), ); expect( @@ -270,10 +270,10 @@ void main() { fileSystem, logger, ); - final CCompilerConfig result = await runner.cCompilerConfig; - expect(result.compiler?.toFilePath(), msvcBinDir.childFile('cl.exe').uri.toFilePath()); - expect(result.archiver?.toFilePath(), msvcBinDir.childFile('lib.exe').uri.toFilePath()); - expect(result.linker?.toFilePath(), msvcBinDir.childFile('link.exe').uri.toFilePath()); + final CCompilerConfig result = (await runner.cCompilerConfig)!; + expect(result.compiler.toFilePath(), msvcBinDir.childFile('cl.exe').uri.toFilePath()); + expect(result.archiver.toFilePath(), msvcBinDir.childFile('lib.exe').uri.toFilePath()); + expect(result.linker.toFilePath(), msvcBinDir.childFile('link.exe').uri.toFilePath()); expect(result.envScript, isNotNull); expect(result.envScriptArgs, isNotNull); }, diff --git a/packages/flutter_tools/test/integration.shard/isolated/native_assets_test_utils.dart b/packages/flutter_tools/test/integration.shard/isolated/native_assets_test_utils.dart index 0da56e74d4..5c09eda738 100644 --- a/packages/flutter_tools/test/integration.shard/isolated/native_assets_test_utils.dart +++ b/packages/flutter_tools/test/integration.shard/isolated/native_assets_test_utils.dart @@ -189,7 +189,7 @@ void main(List args) async { await build(args, (config, output) async { final packageName = config.packageName; - if (!config.supportedAssetTypes.contains(CodeAsset.type)) { + if (!config.buildAssetTypes.contains(CodeAsset.type)) { return; } final builders = [ @@ -221,7 +221,7 @@ void main(List args) async { } extension on BuildConfig { - List dynamicLinkingFlags(String libraryName) => switch (targetOS) { + List dynamicLinkingFlags(String libraryName) => switch (codeConfig.targetOS) { OS.macOS || OS.iOS => [ '-L${outputDirectory.toFilePath()}', '-l$libraryName', @@ -234,7 +234,7 @@ extension on BuildConfig { OS.windows => [ outputDirectory.resolve('$libraryName.lib').toFilePath() ], - _ => throw UnimplementedError('Unsupported OS: $targetOS'), + _ => throw UnimplementedError('Unsupported OS: ${codeConfig.targetOS}'), }; } ''';