mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
[flutter_tool] Use product runner in Fuchsia release build (#33282)
This commit is contained in:
parent
52ae99682e
commit
8139a368ea
@ -5,10 +5,12 @@
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
import '../asset.dart';
|
||||
import '../base/common.dart';
|
||||
import '../base/file_system.dart';
|
||||
import '../base/io.dart';
|
||||
import '../build_info.dart';
|
||||
import '../bundle.dart';
|
||||
import '../convert.dart';
|
||||
import '../devfs.dart';
|
||||
import '../project.dart';
|
||||
|
||||
@ -67,6 +69,31 @@ Future<void> _buildAssets(
|
||||
await outFile.close();
|
||||
}
|
||||
|
||||
void _rewriteCmx(BuildMode mode, File src, File dst) {
|
||||
final Map<String, dynamic> cmx = json.decode(src.readAsStringSync());
|
||||
// If the app author has already specified the runner in the cmx file, then
|
||||
// do not override it with something else.
|
||||
if (cmx.containsKey('runner')) {
|
||||
dst.writeAsStringSync(json.encode(cmx));
|
||||
return;
|
||||
}
|
||||
String runner;
|
||||
switch (mode) {
|
||||
case BuildMode.debug:
|
||||
case BuildMode.profile:
|
||||
runner = 'flutter_jit_runner';
|
||||
break;
|
||||
case BuildMode.release:
|
||||
runner = 'flutter_jit_product_runner';
|
||||
break;
|
||||
default:
|
||||
throwToolExit('Fuchsia does not support build mode "$mode"');
|
||||
break;
|
||||
}
|
||||
cmx['runner'] = 'fuchsia-pkg://fuchsia.com/$runner#meta/$runner.cmx';
|
||||
dst.writeAsStringSync(json.encode(cmx));
|
||||
}
|
||||
|
||||
// TODO(zra): Allow supplying a signing key.
|
||||
Future<void> _buildPackage(
|
||||
FuchsiaProject fuchsiaProject,
|
||||
@ -85,13 +112,17 @@ Future<void> _buildPackage(
|
||||
pkg.createSync(recursive: true);
|
||||
}
|
||||
|
||||
final File srcCmx =
|
||||
fs.file(fs.path.join(fuchsiaProject.meta.path, '$appName.cmx'));
|
||||
final File dstCmx = fs.file(fs.path.join(outDir, '$appName.cmx'));
|
||||
_rewriteCmx(buildInfo.mode, srcCmx, dstCmx);
|
||||
|
||||
// Concatenate dilpmanifest and pkgassets into package_manifest.
|
||||
final File manifestFile = fs.file(packageManifest);
|
||||
manifestFile.writeAsStringSync(fs.file(dilpmanifest).readAsStringSync());
|
||||
manifestFile.writeAsStringSync(fs.file(pkgassets).readAsStringSync(),
|
||||
mode: FileMode.append);
|
||||
manifestFile.writeAsStringSync(
|
||||
'meta/$appName.cmx=${fuchsiaProject.meta.path}/$appName.cmx\n',
|
||||
manifestFile.writeAsStringSync('meta/$appName.cmx=${dstCmx.path}\n',
|
||||
mode: FileMode.append);
|
||||
manifestFile.writeAsStringSync('meta/package=$pkgDir/meta/package\n',
|
||||
mode: FileMode.append);
|
||||
|
@ -84,7 +84,8 @@ void main() {
|
||||
const String appName = 'app_name';
|
||||
fs
|
||||
.file(fs.path.join('fuchsia', 'meta', '$appName.cmx'))
|
||||
.createSync(recursive: true);
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('{}');
|
||||
fs.file('.packages').createSync();
|
||||
final File pubspecFile = fs.file('pubspec.yaml')..createSync();
|
||||
pubspecFile.writeAsStringSync('name: $appName');
|
||||
@ -105,7 +106,8 @@ void main() {
|
||||
const String appName = 'app_name';
|
||||
fs
|
||||
.file(fs.path.join('fuchsia', 'meta', '$appName.cmx'))
|
||||
.createSync(recursive: true);
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('{}');
|
||||
fs.file('.packages').createSync();
|
||||
fs.file(fs.path.join('lib', 'main.dart')).createSync(recursive: true);
|
||||
final File pubspecFile = fs.file('pubspec.yaml')..createSync();
|
||||
@ -127,7 +129,8 @@ void main() {
|
||||
const String appName = 'app_name';
|
||||
fs
|
||||
.file(fs.path.join('fuchsia', 'meta', '$appName.cmx'))
|
||||
.createSync(recursive: true);
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('{}');
|
||||
fs.file('.packages').createSync();
|
||||
fs.file(fs.path.join('lib', 'main.dart')).createSync(recursive: true);
|
||||
final File pubspecFile = fs.file('pubspec.yaml')..createSync();
|
||||
|
@ -434,7 +434,8 @@ void main() {
|
||||
app = FuchsiaApp.fromPrebuiltApp(far);
|
||||
} else {
|
||||
fs.file(fs.path.join('fuchsia', 'meta', '$appName.cmx'))
|
||||
.createSync(recursive: true);
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('{}');
|
||||
fs.file('.packages').createSync();
|
||||
fs.file(fs.path.join('lib', 'main.dart')).createSync(recursive: true);
|
||||
app = BuildableFuchsiaApp(project: FlutterProject.current().fuchsia);
|
||||
|
Loading…
Reference in New Issue
Block a user