[native assets] Roll dependencies (#160672)
This PR rolls in a number of breaking changes from dart-lang/native: * `BuildMode` is no longer part of the protocol, so Flutter no longer passes it in. * This means all code dealing with the name conflict between `native_assets_cli.BuildMode` and `flutter_tools.BuildMode` has been cleaned up. * Also, the logs no longer mention the build mode. * The tests still exercise both modes, because linking only happens in release mode. * `OS` is no longer part of the main protocol, but of the "code" "protocol extension". * The code now aligns more with `OS?` being nullable in a bunch of places, since it is nullable if there's no code assets. * The OS-specific config is nested in an object per OS. * `CCompilerConfig`s fields are non-nullable now. * So instead of passing an object with nullable fields around, a null instead of the object is returned in various places. * `FileSystem` is now passed in to the native assets builder. This PR contains no feature changes. This PR will need to be followed up by restricting what environment variables are passed in (similar to https://github.com/dart-lang/native/pull/1764), I will do this in a follow up PR. Tests: * All existing features should be covered by existing tests.
This commit is contained in:
parent
d9b7e56646
commit
27ba2f2790
@ -9,7 +9,7 @@ import 'package:native_toolchain_c/native_toolchain_c.dart';
|
||||
|
||||
void main(List<String> args) async {
|
||||
await build(args, (BuildConfig config, BuildOutputBuilder output) async {
|
||||
if (!config.supportedAssetTypes.contains(CodeAsset.type)) {
|
||||
if (!config.buildAssetTypes.contains(CodeAsset.type)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@ import 'package:native_assets_cli/code_assets.dart';
|
||||
|
||||
void main(List<String> 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;
|
||||
|
@ -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
|
||||
|
@ -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<String, String> environmentDefines) {
|
||||
return int.parse(environmentDefines[kMinSdkVersion] ?? minSdkVersion);
|
||||
@ -105,14 +105,17 @@ Future<CCompilerConfig> 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;
|
||||
}
|
||||
|
||||
|
@ -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<void> copyNativeCodeAssetsIOS(
|
||||
Uri buildUri,
|
||||
Map<KernelAssetPath, List<CodeAsset>> assetTargetLocations,
|
||||
String? codesignIdentity,
|
||||
build_info.BuildMode buildMode,
|
||||
BuildMode buildMode,
|
||||
FileSystem fileSystem,
|
||||
) async {
|
||||
assert(assetTargetLocations.isNotEmpty);
|
||||
|
@ -37,9 +37,11 @@ Future<CCompilerConfig> 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);
|
||||
}
|
||||
|
@ -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<void> copyNativeCodeAssetsMacOS(
|
||||
Uri buildUri,
|
||||
Map<KernelAssetPath, List<CodeAsset>> assetTargetLocations,
|
||||
String? codesignIdentity,
|
||||
build_info.BuildMode buildMode,
|
||||
BuildMode buildMode,
|
||||
FileSystem fileSystem,
|
||||
) async {
|
||||
assert(assetTargetLocations.isNotEmpty);
|
||||
@ -204,7 +203,7 @@ Future<void> copyNativeCodeAssetsMacOSFlutterTester(
|
||||
Uri buildUri,
|
||||
Map<KernelAssetPath, List<CodeAsset>> assetTargetLocations,
|
||||
String? codesignIdentity,
|
||||
build_info.BuildMode buildMode,
|
||||
BuildMode buildMode,
|
||||
FileSystem fileSystem,
|
||||
) async {
|
||||
assert(assetTargetLocations.isNotEmpty);
|
||||
|
@ -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<Set<String>> getInstallNamesDylib(File dylibFile) async {
|
||||
|
||||
Future<void> codesignDylib(
|
||||
String? codesignIdentity,
|
||||
build_info.BuildMode buildMode,
|
||||
BuildMode buildMode,
|
||||
FileSystemEntity target,
|
||||
) async {
|
||||
if (codesignIdentity == null || codesignIdentity.isEmpty) {
|
||||
@ -147,7 +147,7 @@ Future<void> codesignDylib(
|
||||
'--force',
|
||||
'--sign',
|
||||
codesignIdentity,
|
||||
if (buildMode != build_info.BuildMode.release) ...<String>[
|
||||
if (buildMode != BuildMode.release) ...<String>[
|
||||
// Mimic Xcode's timestamp codesigning behavior on non-release binaries.
|
||||
'--timestamp=none',
|
||||
],
|
||||
|
@ -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<DartBuildResult> runFlutterSpecificDartBuild({
|
||||
required Map<String, String> environmentDefines,
|
||||
required FlutterNativeAssetsBuildRunner buildRunner,
|
||||
required build_info.TargetPlatform targetPlatform,
|
||||
required TargetPlatform targetPlatform,
|
||||
required Uri projectUri,
|
||||
required FileSystem fileSystem,
|
||||
}) async {
|
||||
@ -77,7 +77,7 @@ Future<DartBuildResult> 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<DartBuildResult> runFlutterSpecificDartBuild({
|
||||
return const DartBuildResult.empty();
|
||||
}
|
||||
|
||||
final build_info.BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester);
|
||||
final BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester);
|
||||
final List<Architecture> architectures =
|
||||
flutterTester
|
||||
? <Architecture>[Architecture.current]
|
||||
@ -102,7 +102,7 @@ Future<DartBuildResult> runFlutterSpecificDartBuild({
|
||||
buildRunner: buildRunner,
|
||||
architectures: architectures,
|
||||
projectUri: projectUri,
|
||||
buildMode: _nativeAssetsBuildMode(buildMode),
|
||||
linkingEnabled: _nativeAssetsLinkingEnabled(buildMode),
|
||||
fileSystem: fileSystem,
|
||||
targetOS: targetOS,
|
||||
);
|
||||
@ -112,17 +112,17 @@ Future<DartBuildResult> runFlutterSpecificDartBuild({
|
||||
Future<void> installCodeAssets({
|
||||
required DartBuildResult dartBuildResult,
|
||||
required Map<String, String> 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<CodeAsset, KernelAsset> assetTargetLocations = assetTargetLocationsForOS(
|
||||
targetOS,
|
||||
dartBuildResult.codeAssets,
|
||||
@ -161,37 +161,33 @@ abstract interface class FlutterNativeAssetsBuildRunner {
|
||||
|
||||
/// Runs all [packagesWithNativeAssets] `build.dart`.
|
||||
Future<BuildResult?> build({
|
||||
required List<String> supportedAssetTypes,
|
||||
required List<String> 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<LinkResult?> link({
|
||||
required List<String> supportedAssetTypes,
|
||||
required List<String> 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<CCompilerConfig> get cCompilerConfig;
|
||||
Future<CCompilerConfig?> get cCompilerConfig;
|
||||
|
||||
/// The NDK compiler to use to use for compilation for Android.
|
||||
Future<CCompilerConfig> get ndkCCompilerConfig;
|
||||
Future<CCompilerConfig?> 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<List<Package>> 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<BuildResult?> build({
|
||||
required List<String> supportedAssetTypes,
|
||||
required List<String> 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<LinkResult?> link({
|
||||
required List<String> supportedAssetTypes,
|
||||
required List<String> 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> cCompilerConfig = () {
|
||||
late final Future<CCompilerConfig?> cCompilerConfig = () {
|
||||
if (globals.platform.isMacOS || globals.platform.isIOS) {
|
||||
return cCompilerConfigMacOS();
|
||||
}
|
||||
@ -377,15 +369,18 @@ String _toNativeAssetsJsonFile(List<KernelAsset> 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<void> 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<CodeAsset, KernelAsset> assetTargetLocationsForOS(
|
||||
Future<void> _copyNativeCodeAssetsForOS(
|
||||
OS targetOS,
|
||||
Uri buildUri,
|
||||
build_info.BuildMode buildMode,
|
||||
BuildMode buildMode,
|
||||
FileSystem fileSystem,
|
||||
Map<CodeAsset, KernelAsset> assetTargetLocations,
|
||||
String? codesignIdentity,
|
||||
@ -604,59 +599,61 @@ Future<DartBuildResult> _runDartBuild({
|
||||
required FlutterNativeAssetsBuildRunner buildRunner,
|
||||
required List<Architecture> 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<EncodedAsset> assets = <EncodedAsset>[];
|
||||
final Set<Uri> dependencies = <Uri>{};
|
||||
|
||||
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: <String>[CodeAsset.type],
|
||||
buildAssetTypes: <String>[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 => <String>[...await validateCodeAssetBuildConfig(config)],
|
||||
@ -668,8 +665,6 @@ Future<DartBuildResult> _runDartBuild({
|
||||
(List<EncodedAsset> assets) async => <String>[
|
||||
...await validateCodeAssetInApplication(assets),
|
||||
],
|
||||
targetOS: targetOS!,
|
||||
buildMode: buildMode,
|
||||
workingDirectory: projectUri,
|
||||
includeParentEnvironment: true,
|
||||
linkingEnabled: linkingEnabled,
|
||||
@ -682,17 +677,17 @@ Future<DartBuildResult> _runDartBuild({
|
||||
assets.addAll(buildResult.encodedAssets);
|
||||
} else {
|
||||
final LinkResult? linkResult = await buildRunner.link(
|
||||
supportedAssetTypes: <String>[CodeAsset.type],
|
||||
buildAssetTypes: <String>[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 => <String>[...await validateCodeAssetLinkConfig(config)],
|
||||
@ -707,8 +702,6 @@ Future<DartBuildResult> _runDartBuild({
|
||||
workingDirectory: projectUri,
|
||||
includeParentEnvironment: true,
|
||||
buildResult: buildResult,
|
||||
targetOS: targetOS,
|
||||
buildMode: buildMode,
|
||||
);
|
||||
if (linkResult == null) {
|
||||
_throwNativeAssetsLinkFailed();
|
||||
@ -723,14 +716,12 @@ Future<DartBuildResult> _runDartBuild({
|
||||
.where((EncodedAsset asset) => asset.type == CodeAsset.type)
|
||||
.map<CodeAsset>(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<Architecture> _architecturesForOS(
|
||||
build_info.TargetPlatform targetPlatform,
|
||||
TargetPlatform targetPlatform,
|
||||
OS targetOS,
|
||||
Map<String, String> environmentDefines,
|
||||
) {
|
||||
@ -740,25 +731,20 @@ List<Architecture> _architecturesForOS(
|
||||
case OS.windows:
|
||||
return <Architecture>[_getNativeArchitecture(targetPlatform)];
|
||||
case OS.macOS:
|
||||
final List<build_info.DarwinArch> darwinArchs =
|
||||
final List<DarwinArch> darwinArchs =
|
||||
_emptyToNull(
|
||||
environmentDefines[build_info.kDarwinArchs],
|
||||
)?.split(' ').map(build_info.getDarwinArchForName).toList() ??
|
||||
<build_info.DarwinArch>[build_info.DarwinArch.x86_64, build_info.DarwinArch.arm64];
|
||||
environmentDefines[kDarwinArchs],
|
||||
)?.split(' ').map(getDarwinArchForName).toList() ??
|
||||
<DarwinArch>[DarwinArch.x86_64, DarwinArch.arm64];
|
||||
return darwinArchs.map(getNativeMacOSArchitecture).toList();
|
||||
case OS.android:
|
||||
final String? androidArchsEnvironment = environmentDefines[build_info.kAndroidArchs];
|
||||
final List<build_info.AndroidArch> androidArchs = _androidArchs(
|
||||
targetPlatform,
|
||||
androidArchsEnvironment,
|
||||
);
|
||||
final String? androidArchsEnvironment = environmentDefines[kAndroidArchs];
|
||||
final List<AndroidArch> androidArchs = _androidArchs(targetPlatform, androidArchsEnvironment);
|
||||
return androidArchs.map(getNativeAndroidArchitecture).toList();
|
||||
case OS.iOS:
|
||||
final List<build_info.DarwinArch> iosArchs =
|
||||
_emptyToNull(
|
||||
environmentDefines[build_info.kIosArchs],
|
||||
)?.split(' ').map(build_info.getIOSArchForName).toList() ??
|
||||
<build_info.DarwinArch>[build_info.DarwinArch.arm64];
|
||||
final List<DarwinArch> iosArchs =
|
||||
_emptyToNull(environmentDefines[kIosArchs])?.split(' ').map(getIOSArchForName).toList() ??
|
||||
<DarwinArch>[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<Architecture> _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<void> _copyNativeCodeAssetsToBundleOnWindowsLinux(
|
||||
Uri buildUri,
|
||||
Map<CodeAsset, KernelAsset> 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<build_info.AndroidArch> _androidArchs(
|
||||
build_info.TargetPlatform targetPlatform,
|
||||
String? androidArchsEnvironment,
|
||||
) {
|
||||
List<AndroidArch> _androidArchs(TargetPlatform targetPlatform, String? androidArchsEnvironment) {
|
||||
switch (targetPlatform) {
|
||||
case build_info.TargetPlatform.android_arm:
|
||||
return <build_info.AndroidArch>[build_info.AndroidArch.armeabi_v7a];
|
||||
case build_info.TargetPlatform.android_arm64:
|
||||
return <build_info.AndroidArch>[build_info.AndroidArch.arm64_v8a];
|
||||
case build_info.TargetPlatform.android_x64:
|
||||
return <build_info.AndroidArch>[build_info.AndroidArch.x86_64];
|
||||
case build_info.TargetPlatform.android_x86:
|
||||
return <build_info.AndroidArch>[build_info.AndroidArch.x86];
|
||||
case build_info.TargetPlatform.android:
|
||||
case TargetPlatform.android_arm:
|
||||
return <AndroidArch>[AndroidArch.armeabi_v7a];
|
||||
case TargetPlatform.android_arm64:
|
||||
return <AndroidArch>[AndroidArch.arm64_v8a];
|
||||
case TargetPlatform.android_x64:
|
||||
return <AndroidArch>[AndroidArch.x86_64];
|
||||
case TargetPlatform.android_x86:
|
||||
return <AndroidArch>[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<OS, Set<Architecture>> _osTargets = <OS, Set<Architecture>>{
|
||||
OS.windows: <Architecture>{Architecture.arm64, Architecture.ia32, Architecture.x64},
|
||||
};
|
||||
|
||||
build_info.BuildMode _getBuildMode(Map<String, String> environmentDefines, bool isFlutterTester) {
|
||||
BuildMode _getBuildMode(Map<String, String> 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);
|
||||
}
|
||||
|
@ -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';
|
||||
|
@ -7,7 +7,7 @@ import 'package:native_assets_cli/code_assets_builder.dart';
|
||||
import '../../../globals.dart' as globals;
|
||||
import '../../../windows/visual_studio.dart';
|
||||
|
||||
Future<CCompilerConfig> cCompilerConfigWindows() async {
|
||||
Future<CCompilerConfig?> cCompilerConfigWindows() async {
|
||||
final VisualStudio visualStudio = VisualStudio(
|
||||
fileSystem: globals.fs,
|
||||
platform: globals.platform,
|
||||
@ -16,11 +16,21 @@ Future<CCompilerConfig> 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: <String>[],
|
||||
);
|
||||
}
|
||||
|
@ -27,9 +27,9 @@ const Map<String, String> kManuallyPinnedDependencies = <String, String>{
|
||||
'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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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(<String>[
|
||||
'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.',
|
||||
]),
|
||||
);
|
||||
|
||||
|
@ -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);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
@ -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<Package> 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<BuildResult?> build({
|
||||
required List<String> supportedAssetTypes,
|
||||
required List<String> 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<LinkResult?> link({
|
||||
required List<String> supportedAssetTypes,
|
||||
required List<String> 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<CCompilerConfig> get cCompilerConfig async => cCompilerConfigResult;
|
||||
Future<CCompilerConfig?> get cCompilerConfig async => cCompilerConfigResult;
|
||||
|
||||
@override
|
||||
Future<CCompilerConfig> get ndkCCompilerConfig async => cCompilerConfigResult;
|
||||
Future<CCompilerConfig?> get ndkCCompilerConfig async => cCompilerConfigResult;
|
||||
}
|
||||
|
||||
final class FakeFlutterNativeAssetsBuilderResult implements BuildResult, LinkResult {
|
||||
|
@ -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>[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<String, String> environmentDefines = <String, String>{
|
||||
@ -218,8 +218,8 @@ void main() {
|
||||
expect(
|
||||
(globals.logger as BufferLogger).traceText,
|
||||
stringContainsInOrder(<String>[
|
||||
'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);
|
||||
|
@ -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'));
|
||||
},
|
||||
);
|
||||
|
@ -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>[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<String, String> environmentDefines = <String, String>{
|
||||
@ -324,8 +324,8 @@ void main() {
|
||||
expect(
|
||||
(globals.logger as BufferLogger).traceText,
|
||||
stringContainsInOrder(<String>[
|
||||
'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(
|
||||
|
@ -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';
|
||||
|
@ -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(<String>[
|
||||
'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);
|
||||
},
|
||||
|
@ -189,7 +189,7 @@ void main(List<String> 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<String> args) async {
|
||||
}
|
||||
|
||||
extension on BuildConfig {
|
||||
List<String> dynamicLinkingFlags(String libraryName) => switch (targetOS) {
|
||||
List<String> 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}'),
|
||||
};
|
||||
}
|
||||
''';
|
||||
|
Loading…
x
Reference in New Issue
Block a user