Unverified Commit 8139a368 authored by Zachary Anderson's avatar Zachary Anderson Committed by GitHub

[flutter_tool] Use product runner in Fuchsia release build (#33282)

parent 52ae9968
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment