build_gradle.dart
1 /// This is copied from Cargokit (which is the official way to use it currently) 2 /// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin 3 4 import 'dart:io'; 5 6 import 'package:logging/logging.dart'; 7 import 'package:path/path.dart' as path; 8 9 import 'artifacts_provider.dart'; 10 import 'builder.dart'; 11 import 'environment.dart'; 12 import 'options.dart'; 13 import 'target.dart'; 14 15 final log = Logger('build_gradle'); 16 17 class BuildGradle { 18 BuildGradle({required this.userOptions}); 19 20 final CargokitUserOptions userOptions; 21 22 Future<void> build() async { 23 final targets = Environment.targetPlatforms.map((arch) { 24 final target = Target.forFlutterName(arch); 25 if (target == null) { 26 throw Exception( 27 "Unknown darwin target or platform: $arch, ${Environment.darwinPlatformName}"); 28 } 29 return target; 30 }).toList(); 31 32 final environment = BuildEnvironment.fromEnvironment(isAndroid: true); 33 final provider = 34 ArtifactProvider(environment: environment, userOptions: userOptions); 35 final artifacts = await provider.getArtifacts(targets); 36 37 for (final target in targets) { 38 final libs = artifacts[target]!; 39 final outputDir = path.join(Environment.outputDir, target.android!); 40 Directory(outputDir).createSync(recursive: true); 41 42 for (final lib in libs) { 43 if (lib.type == AritifactType.dylib) { 44 File(lib.path).copySync(path.join(outputDir, lib.finalFileName)); 45 } 46 } 47 } 48 } 49 }