support for --strong option (#13859)
* Plumb a --strong option through to the front end server and the engine so that we can run flutter apps in preview-dart-2 and strong mode * - Address analyzer lint issues *- correctly set up strong mode option in the case of AOT builds
This commit is contained in:
parent
7504ac9a04
commit
426d6b0672
@ -256,6 +256,11 @@ class FlutterPlugin implements Plugin<Project> {
|
|||||||
previewDart2Value = project.property('preview-dart-2')
|
previewDart2Value = project.property('preview-dart-2')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Boolean strongModeValue = false
|
||||||
|
if (project.hasProperty('strong')) {
|
||||||
|
strongModeValue = project.property('strong')
|
||||||
|
}
|
||||||
|
|
||||||
String extraFrontEndOptionsValue = null
|
String extraFrontEndOptionsValue = null
|
||||||
if (project.hasProperty('extra-front-end-options')) {
|
if (project.hasProperty('extra-front-end-options')) {
|
||||||
extraFrontEndOptionsValue = project.property('extra-front-end-options')
|
extraFrontEndOptionsValue = project.property('extra-front-end-options')
|
||||||
@ -290,6 +295,7 @@ class FlutterPlugin implements Plugin<Project> {
|
|||||||
localEngineSrcPath this.localEngineSrcPath
|
localEngineSrcPath this.localEngineSrcPath
|
||||||
targetPath target
|
targetPath target
|
||||||
previewDart2 previewDart2Value
|
previewDart2 previewDart2Value
|
||||||
|
strongMode strongModeValue
|
||||||
preferSharedLibrary preferSharedLibraryValue
|
preferSharedLibrary preferSharedLibraryValue
|
||||||
sourceDir project.file(project.flutter.source)
|
sourceDir project.file(project.flutter.source)
|
||||||
intermediateDir project.file("${project.buildDir}/${AndroidProject.FD_INTERMEDIATES}/flutter/${variant.name}")
|
intermediateDir project.file("${project.buildDir}/${AndroidProject.FD_INTERMEDIATES}/flutter/${variant.name}")
|
||||||
@ -304,6 +310,7 @@ class FlutterPlugin implements Plugin<Project> {
|
|||||||
localEngineSrcPath this.localEngineSrcPath
|
localEngineSrcPath this.localEngineSrcPath
|
||||||
targetPath target
|
targetPath target
|
||||||
previewDart2 previewDart2Value
|
previewDart2 previewDart2Value
|
||||||
|
strongMode strongModeValue
|
||||||
preferSharedLibrary preferSharedLibraryValue
|
preferSharedLibrary preferSharedLibraryValue
|
||||||
sourceDir project.file(project.flutter.source)
|
sourceDir project.file(project.flutter.source)
|
||||||
intermediateDir project.file("${project.buildDir}/${AndroidProject.FD_INTERMEDIATES}/flutter/${variant.name}")
|
intermediateDir project.file("${project.buildDir}/${AndroidProject.FD_INTERMEDIATES}/flutter/${variant.name}")
|
||||||
@ -338,6 +345,8 @@ abstract class BaseFlutterTask extends DefaultTask {
|
|||||||
@Optional @Input
|
@Optional @Input
|
||||||
Boolean previewDart2
|
Boolean previewDart2
|
||||||
@Optional @Input
|
@Optional @Input
|
||||||
|
Boolean strongMode
|
||||||
|
@Optional @Input
|
||||||
Boolean preferSharedLibrary
|
Boolean preferSharedLibrary
|
||||||
File sourceDir
|
File sourceDir
|
||||||
File intermediateDir
|
File intermediateDir
|
||||||
@ -378,6 +387,9 @@ abstract class BaseFlutterTask extends DefaultTask {
|
|||||||
if (previewDart2) {
|
if (previewDart2) {
|
||||||
args "--preview-dart-2"
|
args "--preview-dart-2"
|
||||||
}
|
}
|
||||||
|
if (strongMode) {
|
||||||
|
args "--strong"
|
||||||
|
}
|
||||||
if (extraFrontEndOptions != null) {
|
if (extraFrontEndOptions != null) {
|
||||||
args "--extra-front-end-options", "${extraFrontEndOptions}"
|
args "--extra-front-end-options", "${extraFrontEndOptions}"
|
||||||
}
|
}
|
||||||
@ -404,6 +416,10 @@ abstract class BaseFlutterTask extends DefaultTask {
|
|||||||
if (previewDart2) {
|
if (previewDart2) {
|
||||||
args "--preview-dart-2"
|
args "--preview-dart-2"
|
||||||
}
|
}
|
||||||
|
if (strongMode) {
|
||||||
|
args "--strong"
|
||||||
|
}
|
||||||
|
|
||||||
args "--output-file", "${intermediateDir}/app.flx"
|
args "--output-file", "${intermediateDir}/app.flx"
|
||||||
if (buildMode != "debug") {
|
if (buildMode != "debug") {
|
||||||
args "--precompiled"
|
args "--precompiled"
|
||||||
|
@ -378,6 +378,7 @@ class AndroidDevice extends Device {
|
|||||||
return new LaunchResult.failed();
|
return new LaunchResult.failed();
|
||||||
|
|
||||||
final bool traceStartup = platformArgs['trace-startup'] ?? false;
|
final bool traceStartup = platformArgs['trace-startup'] ?? false;
|
||||||
|
final bool strongMode = platformArgs['strong'] ?? false;
|
||||||
final AndroidApk apk = package;
|
final AndroidApk apk = package;
|
||||||
printTrace('$this startApp');
|
printTrace('$this startApp');
|
||||||
|
|
||||||
@ -406,6 +407,9 @@ class AndroidDevice extends Device {
|
|||||||
|
|
||||||
if (traceStartup)
|
if (traceStartup)
|
||||||
cmd.addAll(<String>['--ez', 'trace-startup', 'true']);
|
cmd.addAll(<String>['--ez', 'trace-startup', 'true']);
|
||||||
|
if (strongMode) {
|
||||||
|
cmd.addAll(<String>['--ez', 'strong', 'true']);
|
||||||
|
}
|
||||||
if (route != null)
|
if (route != null)
|
||||||
cmd.addAll(<String>['--es', 'route', route]);
|
cmd.addAll(<String>['--es', 'route', route]);
|
||||||
if (debuggingOptions.enableSoftwareRendering)
|
if (debuggingOptions.enableSoftwareRendering)
|
||||||
|
@ -291,6 +291,8 @@ Future<Null> _buildGradleProjectV2(String gradle, BuildInfo buildInfo, String ta
|
|||||||
}
|
}
|
||||||
if (buildInfo.previewDart2) {
|
if (buildInfo.previewDart2) {
|
||||||
command.add('-Ppreview-dart-2=true');
|
command.add('-Ppreview-dart-2=true');
|
||||||
|
if (buildInfo.strongMode)
|
||||||
|
command.add('-Pstrong=true');
|
||||||
if (buildInfo.extraFrontEndOptions != null)
|
if (buildInfo.extraFrontEndOptions != null)
|
||||||
command.add('-Pextra-front-end-options=${buildInfo.extraFrontEndOptions}');
|
command.add('-Pextra-front-end-options=${buildInfo.extraFrontEndOptions}');
|
||||||
if (buildInfo.extraGenSnapshotOptions != null)
|
if (buildInfo.extraGenSnapshotOptions != null)
|
||||||
|
@ -21,6 +21,7 @@ enum Artifact {
|
|||||||
vmSnapshotData,
|
vmSnapshotData,
|
||||||
isolateSnapshotData,
|
isolateSnapshotData,
|
||||||
platformKernelDill,
|
platformKernelDill,
|
||||||
|
platformKernelStrongDill,
|
||||||
platformLibrariesJson,
|
platformLibrariesJson,
|
||||||
flutterPatchedSdkPath,
|
flutterPatchedSdkPath,
|
||||||
frontendServerSnapshotForEngineDartSdk,
|
frontendServerSnapshotForEngineDartSdk,
|
||||||
@ -47,6 +48,8 @@ String _artifactToFileName(Artifact artifact) {
|
|||||||
return 'isolate_snapshot.bin';
|
return 'isolate_snapshot.bin';
|
||||||
case Artifact.platformKernelDill:
|
case Artifact.platformKernelDill:
|
||||||
return 'platform.dill';
|
return 'platform.dill';
|
||||||
|
case Artifact.platformKernelStrongDill:
|
||||||
|
return 'platform_strong.dill';
|
||||||
case Artifact.platformLibrariesJson:
|
case Artifact.platformLibrariesJson:
|
||||||
return 'libraries.json';
|
return 'libraries.json';
|
||||||
case Artifact.flutterPatchedSdkPath:
|
case Artifact.flutterPatchedSdkPath:
|
||||||
@ -168,6 +171,7 @@ class CachedArtifacts extends Artifacts {
|
|||||||
final String platformDirName = getNameForTargetPlatform(platform);
|
final String platformDirName = getNameForTargetPlatform(platform);
|
||||||
return fs.path.join(engineArtifactsPath, platformDirName, _artifactToFileName(artifact));
|
return fs.path.join(engineArtifactsPath, platformDirName, _artifactToFileName(artifact));
|
||||||
case Artifact.platformKernelDill:
|
case Artifact.platformKernelDill:
|
||||||
|
case Artifact.platformKernelStrongDill:
|
||||||
return fs.path.join(_getFlutterPatchedSdkPath(), _artifactToFileName(artifact));
|
return fs.path.join(_getFlutterPatchedSdkPath(), _artifactToFileName(artifact));
|
||||||
case Artifact.platformLibrariesJson:
|
case Artifact.platformLibrariesJson:
|
||||||
return fs.path.join(_getFlutterPatchedSdkPath(), 'lib', _artifactToFileName(artifact));
|
return fs.path.join(_getFlutterPatchedSdkPath(), 'lib', _artifactToFileName(artifact));
|
||||||
@ -237,6 +241,7 @@ class LocalEngineArtifacts extends Artifacts {
|
|||||||
case Artifact.vmSnapshotData:
|
case Artifact.vmSnapshotData:
|
||||||
return fs.path.join(engineOutPath, 'gen', 'flutter', 'lib', 'snapshot', _artifactToFileName(artifact));
|
return fs.path.join(engineOutPath, 'gen', 'flutter', 'lib', 'snapshot', _artifactToFileName(artifact));
|
||||||
case Artifact.platformKernelDill:
|
case Artifact.platformKernelDill:
|
||||||
|
case Artifact.platformKernelStrongDill:
|
||||||
return fs.path.join(_getFlutterPatchedSdkPath(), _artifactToFileName(artifact));
|
return fs.path.join(_getFlutterPatchedSdkPath(), _artifactToFileName(artifact));
|
||||||
case Artifact.platformLibrariesJson:
|
case Artifact.platformLibrariesJson:
|
||||||
return fs.path.join(_getFlutterPatchedSdkPath(), 'lib', _artifactToFileName(artifact));
|
return fs.path.join(_getFlutterPatchedSdkPath(), 'lib', _artifactToFileName(artifact));
|
||||||
|
@ -12,6 +12,7 @@ import 'globals.dart';
|
|||||||
class BuildInfo {
|
class BuildInfo {
|
||||||
const BuildInfo(this.mode, this.flavor,
|
const BuildInfo(this.mode, this.flavor,
|
||||||
{this.previewDart2,
|
{this.previewDart2,
|
||||||
|
this.strongMode,
|
||||||
this.extraFrontEndOptions,
|
this.extraFrontEndOptions,
|
||||||
this.extraGenSnapshotOptions,
|
this.extraGenSnapshotOptions,
|
||||||
this.preferSharedLibrary});
|
this.preferSharedLibrary});
|
||||||
@ -28,6 +29,9 @@ class BuildInfo {
|
|||||||
// Whether build should be done using Dart2 Frontend parser.
|
// Whether build should be done using Dart2 Frontend parser.
|
||||||
final bool previewDart2;
|
final bool previewDart2;
|
||||||
|
|
||||||
|
// Whether build should use strong mode semantics.
|
||||||
|
final bool strongMode;
|
||||||
|
|
||||||
/// Extra command-line options for front-end.
|
/// Extra command-line options for front-end.
|
||||||
final String extraFrontEndOptions;
|
final String extraFrontEndOptions;
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ class BuildAotCommand extends BuildSubCommand {
|
|||||||
..addFlag('interpreter')
|
..addFlag('interpreter')
|
||||||
..addFlag('quiet', defaultsTo: false)
|
..addFlag('quiet', defaultsTo: false)
|
||||||
..addFlag('preview-dart-2', negatable: false, hide: !verboseHelp)
|
..addFlag('preview-dart-2', negatable: false, hide: !verboseHelp)
|
||||||
|
..addFlag('strong', negatable: false, hide: !verboseHelp)
|
||||||
..addOption(FlutterOptions.kExtraFrontEndOptions,
|
..addOption(FlutterOptions.kExtraFrontEndOptions,
|
||||||
allowMultiple: true,
|
allowMultiple: true,
|
||||||
splitCommas: true,
|
splitCommas: true,
|
||||||
@ -81,6 +82,7 @@ class BuildAotCommand extends BuildSubCommand {
|
|||||||
outputPath: argResults['output-dir'],
|
outputPath: argResults['output-dir'],
|
||||||
interpreter: argResults['interpreter'],
|
interpreter: argResults['interpreter'],
|
||||||
previewDart2: argResults['preview-dart-2'],
|
previewDart2: argResults['preview-dart-2'],
|
||||||
|
strongMode: argResults['strong'],
|
||||||
extraFrontEndOptions: argResults[FlutterOptions.kExtraFrontEndOptions],
|
extraFrontEndOptions: argResults[FlutterOptions.kExtraFrontEndOptions],
|
||||||
extraGenSnapshotOptions: argResults[FlutterOptions.kExtraGenSnapshotOptions],
|
extraGenSnapshotOptions: argResults[FlutterOptions.kExtraGenSnapshotOptions],
|
||||||
preferSharedLibrary: argResults['prefer-shared-library'],
|
preferSharedLibrary: argResults['prefer-shared-library'],
|
||||||
@ -112,6 +114,7 @@ Future<String> buildAotSnapshot(
|
|||||||
String outputPath,
|
String outputPath,
|
||||||
bool interpreter: false,
|
bool interpreter: false,
|
||||||
bool previewDart2: false,
|
bool previewDart2: false,
|
||||||
|
bool strongMode: false,
|
||||||
List<String> extraFrontEndOptions,
|
List<String> extraFrontEndOptions,
|
||||||
List<String> extraGenSnapshotOptions,
|
List<String> extraGenSnapshotOptions,
|
||||||
bool preferSharedLibrary: false,
|
bool preferSharedLibrary: false,
|
||||||
@ -125,6 +128,7 @@ Future<String> buildAotSnapshot(
|
|||||||
outputPath: outputPath,
|
outputPath: outputPath,
|
||||||
interpreter: interpreter,
|
interpreter: interpreter,
|
||||||
previewDart2: previewDart2,
|
previewDart2: previewDart2,
|
||||||
|
strongMode: strongMode,
|
||||||
extraFrontEndOptions: extraFrontEndOptions,
|
extraFrontEndOptions: extraFrontEndOptions,
|
||||||
extraGenSnapshotOptions: extraGenSnapshotOptions,
|
extraGenSnapshotOptions: extraGenSnapshotOptions,
|
||||||
preferSharedLibrary: preferSharedLibrary,
|
preferSharedLibrary: preferSharedLibrary,
|
||||||
@ -144,6 +148,7 @@ Future<String> _buildAotSnapshot(
|
|||||||
String outputPath,
|
String outputPath,
|
||||||
bool interpreter: false,
|
bool interpreter: false,
|
||||||
bool previewDart2: false,
|
bool previewDart2: false,
|
||||||
|
bool strongMode: false,
|
||||||
List<String> extraFrontEndOptions,
|
List<String> extraFrontEndOptions,
|
||||||
List<String> extraGenSnapshotOptions,
|
List<String> extraGenSnapshotOptions,
|
||||||
bool preferSharedLibrary: false,
|
bool preferSharedLibrary: false,
|
||||||
@ -335,6 +340,7 @@ Future<String> _buildAotSnapshot(
|
|||||||
extraFrontEndOptions: extraFrontEndOptions,
|
extraFrontEndOptions: extraFrontEndOptions,
|
||||||
linkPlatformKernelIn : true,
|
linkPlatformKernelIn : true,
|
||||||
aot : true,
|
aot : true,
|
||||||
|
strongMode: strongMode,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ class BuildApkCommand extends BuildSubCommand {
|
|||||||
|
|
||||||
argParser
|
argParser
|
||||||
..addFlag('preview-dart-2', negatable: false, hide: !verboseHelp)
|
..addFlag('preview-dart-2', negatable: false, hide: !verboseHelp)
|
||||||
|
..addFlag('strong', negatable: false, hide: !verboseHelp)
|
||||||
..addFlag('prefer-shared-library', negatable: false,
|
..addFlag('prefer-shared-library', negatable: false,
|
||||||
help: 'Whether to prefer compiling to a *.so file (android only).');
|
help: 'Whether to prefer compiling to a *.so file (android only).');
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ class BuildFlxCommand extends BuildSubCommand {
|
|||||||
argParser.addOption('snapshot', defaultsTo: defaultSnapshotPath);
|
argParser.addOption('snapshot', defaultsTo: defaultSnapshotPath);
|
||||||
argParser.addOption('depfile', defaultsTo: defaultDepfilePath);
|
argParser.addOption('depfile', defaultsTo: defaultDepfilePath);
|
||||||
argParser.addFlag('preview-dart-2', negatable: false, hide: !verboseHelp);
|
argParser.addFlag('preview-dart-2', negatable: false, hide: !verboseHelp);
|
||||||
|
argParser.addFlag('strong', negatable: false, hide: !verboseHelp);
|
||||||
argParser.addOption('working-dir', defaultsTo: getAssetBuildDirectory());
|
argParser.addOption('working-dir', defaultsTo: getAssetBuildDirectory());
|
||||||
argParser.addFlag('report-licensed-packages', help: 'Whether to report the names of all the packages that are included in the application\'s LICENSE file.', defaultsTo: false);
|
argParser.addFlag('report-licensed-packages', help: 'Whether to report the names of all the packages that are included in the application\'s LICENSE file.', defaultsTo: false);
|
||||||
usesPubOption();
|
usesPubOption();
|
||||||
@ -50,6 +51,7 @@ class BuildFlxCommand extends BuildSubCommand {
|
|||||||
privateKeyPath: argResults['private-key'],
|
privateKeyPath: argResults['private-key'],
|
||||||
workingDirPath: argResults['working-dir'],
|
workingDirPath: argResults['working-dir'],
|
||||||
previewDart2: argResults['preview-dart-2'],
|
previewDart2: argResults['preview-dart-2'],
|
||||||
|
strongMode: argResults['strong'],
|
||||||
precompiledSnapshot: argResults['precompiled'],
|
precompiledSnapshot: argResults['precompiled'],
|
||||||
reportLicensedPackages: argResults['report-licensed-packages']
|
reportLicensedPackages: argResults['report-licensed-packages']
|
||||||
);
|
);
|
||||||
|
@ -31,6 +31,8 @@ class BuildIOSCommand extends BuildSubCommand {
|
|||||||
help: 'Codesign the application bundle (only available on device builds).');
|
help: 'Codesign the application bundle (only available on device builds).');
|
||||||
argParser.addFlag('preview-dart-2', negatable: false,
|
argParser.addFlag('preview-dart-2', negatable: false,
|
||||||
hide: !verboseHelp);
|
hide: !verboseHelp);
|
||||||
|
argParser.addFlag('strong', negatable: false,
|
||||||
|
hide: !verboseHelp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -229,6 +229,7 @@ class CreateCommand extends FlutterCommand {
|
|||||||
target: flx.defaultMainPath,
|
target: flx.defaultMainPath,
|
||||||
hasPlugins: generatePlugin,
|
hasPlugins: generatePlugin,
|
||||||
previewDart2: false,
|
previewDart2: false,
|
||||||
|
strongMode: false,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (argResults['pub']) {
|
if (argResults['pub']) {
|
||||||
|
@ -105,6 +105,10 @@ class RunCommand extends RunCommandBase {
|
|||||||
argParser.addFlag('preview-dart-2',
|
argParser.addFlag('preview-dart-2',
|
||||||
hide: !verboseHelp,
|
hide: !verboseHelp,
|
||||||
help: 'Preview Dart 2.0 functionality.');
|
help: 'Preview Dart 2.0 functionality.');
|
||||||
|
argParser.addFlag('strong',
|
||||||
|
hide: !verboseHelp,
|
||||||
|
help: 'Turn on strong mode semantics.\n'
|
||||||
|
'Valid only when --preview-dart-2 is also specified');
|
||||||
argParser.addOption('packages',
|
argParser.addOption('packages',
|
||||||
hide: !verboseHelp,
|
hide: !verboseHelp,
|
||||||
valueHelp: 'path',
|
valueHelp: 'path',
|
||||||
@ -290,7 +294,9 @@ class RunCommand extends RunCommandBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final List<FlutterDevice> flutterDevices = devices.map((Device device) {
|
final List<FlutterDevice> flutterDevices = devices.map((Device device) {
|
||||||
return new FlutterDevice(device, previewDart2: argResults['preview-dart-2']);
|
return new FlutterDevice(device,
|
||||||
|
previewDart2: argResults['preview-dart-2'],
|
||||||
|
strongMode : argResults['strong']);
|
||||||
}).toList();
|
}).toList();
|
||||||
|
|
||||||
ResidentRunner runner;
|
ResidentRunner runner;
|
||||||
@ -302,6 +308,7 @@ class RunCommand extends RunCommandBase {
|
|||||||
benchmarkMode: argResults['benchmark'],
|
benchmarkMode: argResults['benchmark'],
|
||||||
applicationBinary: argResults['use-application-binary'],
|
applicationBinary: argResults['use-application-binary'],
|
||||||
previewDart2: argResults['preview-dart-2'],
|
previewDart2: argResults['preview-dart-2'],
|
||||||
|
strongMode: argResults['strong'],
|
||||||
projectRootPath: argResults['project-root'],
|
projectRootPath: argResults['project-root'],
|
||||||
packagesFilePath: argResults['packages'],
|
packagesFilePath: argResults['packages'],
|
||||||
projectAssets: argResults['project-assets'],
|
projectAssets: argResults['project-assets'],
|
||||||
@ -316,6 +323,7 @@ class RunCommand extends RunCommandBase {
|
|||||||
traceStartup: traceStartup,
|
traceStartup: traceStartup,
|
||||||
applicationBinary: argResults['use-application-binary'],
|
applicationBinary: argResults['use-application-binary'],
|
||||||
previewDart2: argResults['preview-dart-2'],
|
previewDart2: argResults['preview-dart-2'],
|
||||||
|
strongMode: argResults['strong'],
|
||||||
stayResident: stayResident,
|
stayResident: stayResident,
|
||||||
ipv6: ipv6,
|
ipv6: ipv6,
|
||||||
);
|
);
|
||||||
|
@ -61,6 +61,7 @@ Future<String> compile(
|
|||||||
String mainPath,
|
String mainPath,
|
||||||
bool linkPlatformKernelIn : false,
|
bool linkPlatformKernelIn : false,
|
||||||
bool aot : false,
|
bool aot : false,
|
||||||
|
bool strongMode : false,
|
||||||
List<String> extraFrontEndOptions,
|
List<String> extraFrontEndOptions,
|
||||||
String incrementalCompilerByteStorePath}) async {
|
String incrementalCompilerByteStorePath}) async {
|
||||||
final String frontendServer = artifacts.getArtifactPath(
|
final String frontendServer = artifacts.getArtifactPath(
|
||||||
@ -81,6 +82,9 @@ Future<String> compile(
|
|||||||
if (aot) {
|
if (aot) {
|
||||||
command.add('--aot');
|
command.add('--aot');
|
||||||
}
|
}
|
||||||
|
if (strongMode) {
|
||||||
|
command.add('--strong');
|
||||||
|
}
|
||||||
if (incrementalCompilerByteStorePath != null) {
|
if (incrementalCompilerByteStorePath != null) {
|
||||||
command.addAll(<String>[
|
command.addAll(<String>[
|
||||||
'--incremental',
|
'--incremental',
|
||||||
|
@ -39,6 +39,7 @@ Future<Null> build({
|
|||||||
String workingDirPath,
|
String workingDirPath,
|
||||||
String packagesPath,
|
String packagesPath,
|
||||||
bool previewDart2 : false,
|
bool previewDart2 : false,
|
||||||
|
bool strongMode : false,
|
||||||
bool precompiledSnapshot: false,
|
bool precompiledSnapshot: false,
|
||||||
bool reportLicensedPackages: false
|
bool reportLicensedPackages: false
|
||||||
}) async {
|
}) async {
|
||||||
@ -72,7 +73,8 @@ Future<Null> build({
|
|||||||
final String kernelBinaryFilename = await compile(
|
final String kernelBinaryFilename = await compile(
|
||||||
sdkRoot: artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath),
|
sdkRoot: artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath),
|
||||||
incrementalCompilerByteStorePath: fs.path.absolute(getIncrementalCompilerByteStoreDirectory()),
|
incrementalCompilerByteStorePath: fs.path.absolute(getIncrementalCompilerByteStoreDirectory()),
|
||||||
mainPath: fs.file(mainPath).absolute.path
|
mainPath: fs.file(mainPath).absolute.path,
|
||||||
|
strongMode: strongMode
|
||||||
);
|
);
|
||||||
kernelContent = new DevFSFileContent(fs.file(kernelBinaryFilename));
|
kernelContent = new DevFSFileContent(fs.file(kernelBinaryFilename));
|
||||||
}
|
}
|
||||||
@ -85,6 +87,7 @@ Future<Null> build({
|
|||||||
privateKeyPath: privateKeyPath,
|
privateKeyPath: privateKeyPath,
|
||||||
workingDirPath: workingDirPath,
|
workingDirPath: workingDirPath,
|
||||||
packagesPath: packagesPath,
|
packagesPath: packagesPath,
|
||||||
|
strongMode: strongMode,
|
||||||
reportLicensedPackages: reportLicensedPackages
|
reportLicensedPackages: reportLicensedPackages
|
||||||
).then((_) => null);
|
).then((_) => null);
|
||||||
}
|
}
|
||||||
@ -98,6 +101,7 @@ Future<List<String>> assemble({
|
|||||||
String privateKeyPath: defaultPrivateKeyPath,
|
String privateKeyPath: defaultPrivateKeyPath,
|
||||||
String workingDirPath,
|
String workingDirPath,
|
||||||
String packagesPath,
|
String packagesPath,
|
||||||
|
bool strongMode : false,
|
||||||
bool includeDefaultFonts: true,
|
bool includeDefaultFonts: true,
|
||||||
bool reportLicensedPackages: false
|
bool reportLicensedPackages: false
|
||||||
}) async {
|
}) async {
|
||||||
@ -128,7 +132,9 @@ Future<List<String>> assemble({
|
|||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
if (kernelContent != null) {
|
if (kernelContent != null) {
|
||||||
final String platformKernelDill = artifacts.getArtifactPath(Artifact.platformKernelDill);
|
final String platformKernelDill = strongMode ?
|
||||||
|
artifacts.getArtifactPath(Artifact.platformKernelStrongDill) :
|
||||||
|
artifacts.getArtifactPath(Artifact.platformKernelDill);
|
||||||
zipBuilder.entries[_kKernelKey] = kernelContent;
|
zipBuilder.entries[_kKernelKey] = kernelContent;
|
||||||
zipBuilder.entries[_kPlatformKernelKey] = new DevFSFileContent(fs.file(platformKernelDill));
|
zipBuilder.entries[_kPlatformKernelKey] = new DevFSFileContent(fs.file(platformKernelDill));
|
||||||
}
|
}
|
||||||
|
@ -264,6 +264,7 @@ Future<XcodeBuildResult> buildXcodeProject({
|
|||||||
target: target,
|
target: target,
|
||||||
hasPlugins: hasFlutterPlugins,
|
hasPlugins: hasFlutterPlugins,
|
||||||
previewDart2: buildInfo.previewDart2,
|
previewDart2: buildInfo.previewDart2,
|
||||||
|
strongMode: buildInfo.strongMode,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (hasFlutterPlugins) {
|
if (hasFlutterPlugins) {
|
||||||
|
@ -25,6 +25,7 @@ void updateXcodeGeneratedProperties({
|
|||||||
@required String target,
|
@required String target,
|
||||||
@required bool hasPlugins,
|
@required bool hasPlugins,
|
||||||
@required bool previewDart2,
|
@required bool previewDart2,
|
||||||
|
@required bool strongMode,
|
||||||
}) {
|
}) {
|
||||||
final StringBuffer localsBuffer = new StringBuffer();
|
final StringBuffer localsBuffer = new StringBuffer();
|
||||||
|
|
||||||
@ -57,6 +58,9 @@ void updateXcodeGeneratedProperties({
|
|||||||
if (previewDart2) {
|
if (previewDart2) {
|
||||||
localsBuffer.writeln('PREVIEW_DART_2=true');
|
localsBuffer.writeln('PREVIEW_DART_2=true');
|
||||||
}
|
}
|
||||||
|
if (strongMode) {
|
||||||
|
localsBuffer.writeln('STRONG=true');
|
||||||
|
}
|
||||||
|
|
||||||
// Add dependency to CocoaPods' generated project only if plugins are used.
|
// Add dependency to CocoaPods' generated project only if plugins are used.
|
||||||
if (hasPlugins)
|
if (hasPlugins)
|
||||||
|
@ -38,7 +38,8 @@ class FlutterDevice {
|
|||||||
|
|
||||||
StreamSubscription<String> _loggingSubscription;
|
StreamSubscription<String> _loggingSubscription;
|
||||||
|
|
||||||
FlutterDevice(this.device, { bool previewDart2 : false }) {
|
FlutterDevice(this.device,
|
||||||
|
{ bool previewDart2 : false, bool strongMode : false }) {
|
||||||
if (previewDart2)
|
if (previewDart2)
|
||||||
generator = new ResidentCompiler(
|
generator = new ResidentCompiler(
|
||||||
artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath));
|
artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath));
|
||||||
@ -259,6 +260,8 @@ class FlutterDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Map<String, dynamic> platformArgs = <String, dynamic>{};
|
final Map<String, dynamic> platformArgs = <String, dynamic>{};
|
||||||
|
if (hotRunner.strongMode != null)
|
||||||
|
platformArgs['strong'] = hotRunner.strongMode;
|
||||||
|
|
||||||
startEchoingDeviceLog();
|
startEchoingDeviceLog();
|
||||||
|
|
||||||
@ -320,6 +323,8 @@ class FlutterDevice {
|
|||||||
final Map<String, dynamic> platformArgs = <String, dynamic>{};
|
final Map<String, dynamic> platformArgs = <String, dynamic>{};
|
||||||
if (coldRunner.traceStartup != null)
|
if (coldRunner.traceStartup != null)
|
||||||
platformArgs['trace-startup'] = coldRunner.traceStartup;
|
platformArgs['trace-startup'] = coldRunner.traceStartup;
|
||||||
|
if (coldRunner.strongMode != null)
|
||||||
|
platformArgs['strong'] = coldRunner.strongMode;
|
||||||
|
|
||||||
startEchoingDeviceLog();
|
startEchoingDeviceLog();
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ class ColdRunner extends ResidentRunner {
|
|||||||
this.traceStartup: false,
|
this.traceStartup: false,
|
||||||
this.applicationBinary,
|
this.applicationBinary,
|
||||||
this.previewDart2 : false,
|
this.previewDart2 : false,
|
||||||
|
this.strongMode : false,
|
||||||
bool stayResident: true,
|
bool stayResident: true,
|
||||||
bool ipv6: false,
|
bool ipv6: false,
|
||||||
}) : super(devices,
|
}) : super(devices,
|
||||||
@ -33,6 +34,7 @@ class ColdRunner extends ResidentRunner {
|
|||||||
final bool traceStartup;
|
final bool traceStartup;
|
||||||
final String applicationBinary;
|
final String applicationBinary;
|
||||||
final bool previewDart2;
|
final bool previewDart2;
|
||||||
|
final bool strongMode;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<int> run({
|
Future<int> run({
|
||||||
|
@ -40,6 +40,7 @@ class HotRunner extends ResidentRunner {
|
|||||||
this.benchmarkMode: false,
|
this.benchmarkMode: false,
|
||||||
this.applicationBinary,
|
this.applicationBinary,
|
||||||
this.previewDart2: false,
|
this.previewDart2: false,
|
||||||
|
this.strongMode: false,
|
||||||
this.hostIsIde: false,
|
this.hostIsIde: false,
|
||||||
String projectRootPath,
|
String projectRootPath,
|
||||||
String packagesFilePath,
|
String packagesFilePath,
|
||||||
@ -65,6 +66,7 @@ class HotRunner extends ResidentRunner {
|
|||||||
// The initial launch is from a snapshot.
|
// The initial launch is from a snapshot.
|
||||||
bool _runningFromSnapshot = true;
|
bool _runningFromSnapshot = true;
|
||||||
bool previewDart2 = false;
|
bool previewDart2 = false;
|
||||||
|
bool strongMode = false;
|
||||||
|
|
||||||
void _addBenchmarkData(String name, int value) {
|
void _addBenchmarkData(String name, int value) {
|
||||||
benchmarkData[name] ??= <int>[];
|
benchmarkData[name] ??= <int>[];
|
||||||
|
@ -149,13 +149,23 @@ abstract class FlutterCommand extends Command<Null> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BuildInfo getBuildInfo() {
|
BuildInfo getBuildInfo() {
|
||||||
|
final bool previewDart2 = argParser.options.containsKey('preview-dart-2')
|
||||||
|
? argResults['preview-dart-2']
|
||||||
|
: false;
|
||||||
|
final bool strongMode = argParser.options.containsKey('strong')
|
||||||
|
? argResults['strong']
|
||||||
|
: false;
|
||||||
|
if (strongMode == true && previewDart2 == false) {
|
||||||
|
throw new UsageException(
|
||||||
|
'--strong is valid only when --preview-dart-2 is specified.', null);
|
||||||
|
}
|
||||||
|
|
||||||
return new BuildInfo(getBuildMode(),
|
return new BuildInfo(getBuildMode(),
|
||||||
argParser.options.containsKey('flavor')
|
argParser.options.containsKey('flavor')
|
||||||
? argResults['flavor']
|
? argResults['flavor']
|
||||||
: null,
|
: null,
|
||||||
previewDart2: argParser.options.containsKey('preview-dart-2')
|
previewDart2: previewDart2,
|
||||||
? argResults['preview-dart-2']
|
strongMode: strongMode,
|
||||||
: false,
|
|
||||||
extraFrontEndOptions: argParser.options.containsKey(FlutterOptions.kExtraFrontEndOptions)
|
extraFrontEndOptions: argParser.options.containsKey(FlutterOptions.kExtraFrontEndOptions)
|
||||||
? argResults[FlutterOptions.kExtraFrontEndOptions]
|
? argResults[FlutterOptions.kExtraFrontEndOptions]
|
||||||
: null,
|
: null,
|
||||||
@ -374,6 +384,16 @@ abstract class FlutterCommand extends Command<Null> {
|
|||||||
if (!fs.isFileSync(targetPath))
|
if (!fs.isFileSync(targetPath))
|
||||||
throw new ToolExit('Target file "$targetPath" not found.');
|
throw new ToolExit('Target file "$targetPath" not found.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final bool previewDart2 = argParser.options.containsKey('preview-dart-2')
|
||||||
|
? argResults['preview-dart-2']
|
||||||
|
: false;
|
||||||
|
final bool strongMode = argParser.options.containsKey('strong')
|
||||||
|
? argResults['strong']
|
||||||
|
: false;
|
||||||
|
if (strongMode == true && previewDart2 == false) {
|
||||||
|
throw new ToolExit('--strong is valid only with --preview-dart-2 option.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplicationPackageStore applicationPackages;
|
ApplicationPackageStore applicationPackages;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user