diff --git a/dev/devicelab/bin/tasks/application_test.dart b/dev/devicelab/bin/tasks/module_test.dart similarity index 94% rename from dev/devicelab/bin/tasks/application_test.dart rename to dev/devicelab/bin/tasks/module_test.dart index 1136544883e..54356fd7b70 100644 --- a/dev/devicelab/bin/tasks/application_test.dart +++ b/dev/devicelab/bin/tasks/module_test.dart @@ -9,7 +9,7 @@ import 'package:flutter_devicelab/framework/framework.dart'; import 'package:flutter_devicelab/framework/utils.dart'; import 'package:path/path.dart' as path; -/// Tests that the Flutter application project template works and supports +/// Tests that the Flutter module project template works and supports /// adding Flutter to an existing Android app. Future main() async { await task(() async { @@ -21,15 +21,15 @@ Future main() async { return TaskResult.failure('Could not find Java'); print('\nUsing JAVA_HOME=$javaHome'); - section('Create Flutter application project'); + section('Create Flutter module project'); - final Directory tempDir = Directory.systemTemp.createTempSync('flutter_application_test.'); + final Directory tempDir = Directory.systemTemp.createTempSync('flutter_module_test.'); final Directory projectDir = Directory(path.join(tempDir.path, 'hello')); try { await inDirectory(tempDir, () async { await flutter( 'create', - options: ['--org', 'io.flutter.devicelab', '--template=application', 'hello'], + options: ['--org', 'io.flutter.devicelab', '--template=module', 'hello'], ); }); @@ -49,7 +49,7 @@ Future main() async { ); }); - section('Build Flutter application library archive'); + section('Build Flutter module library archive'); await inDirectory(Directory(path.join(projectDir.path, '.android')), () async { await exec( diff --git a/dev/devicelab/bin/tasks/application_test_ios.dart b/dev/devicelab/bin/tasks/module_test_ios.dart similarity index 94% rename from dev/devicelab/bin/tasks/application_test_ios.dart rename to dev/devicelab/bin/tasks/module_test_ios.dart index e3dfa9a31d1..af3cb69648c 100644 --- a/dev/devicelab/bin/tasks/application_test_ios.dart +++ b/dev/devicelab/bin/tasks/module_test_ios.dart @@ -10,20 +10,20 @@ import 'package:flutter_devicelab/framework/ios.dart'; import 'package:flutter_devicelab/framework/utils.dart'; import 'package:path/path.dart' as path; -/// Tests that the Flutter application project template works and supports +/// Tests that the Flutter module project template works and supports /// adding Flutter to an existing iOS app. Future main() async { await task(() async { - section('Create Flutter application project'); + section('Create Flutter module project'); - final Directory tempDir = Directory.systemTemp.createTempSync('flutter_application_test.'); + final Directory tempDir = Directory.systemTemp.createTempSync('flutter_module_test.'); final Directory projectDir = Directory(path.join(tempDir.path, 'hello')); try { await inDirectory(tempDir, () async { await flutter( 'create', - options: ['--org', 'io.flutter.devicelab', '--template=application', 'hello'], + options: ['--org', 'io.flutter.devicelab', '--template=module', 'hello'], ); }); await prepareProvisioningCertificates(projectDir.path); diff --git a/dev/devicelab/manifest.yaml b/dev/devicelab/manifest.yaml index ee8c90d0ca8..699af3257a3 100644 --- a/dev/devicelab/manifest.yaml +++ b/dev/devicelab/manifest.yaml @@ -263,9 +263,9 @@ tasks: stage: devicelab required_agent_capabilities: ["linux/android"] - application_test: + module_test: description: > - Checks that the application project template works and supports add2app on Android. + Checks that the module project template works and supports add2app on Android. stage: devicelab required_agent_capabilities: ["linux/android"] @@ -297,9 +297,9 @@ tasks: stage: devicelab_ios required_agent_capabilities: ["mac/ios"] - application_test_ios: + module_test_ios: description: > - Checks that the application project template works and supports add2app on iOS. + Checks that the module project template works and supports add2app on iOS. stage: devicelab required_agent_capabilities: ["mac/ios"] diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index 6d62a5eca8f..d8c8c1ab6c9 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart @@ -56,7 +56,7 @@ Future main(List args) async { ChannelCommand(verboseHelp: verboseHelp), CleanCommand(), ConfigCommand(verboseHelp: verboseHelp), - CreateCommand(verboseHelp: verboseHelp), + CreateCommand(), DaemonCommand(hidden: !verboseHelp), DevicesCommand(), DoctorCommand(verbose: verbose), diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart index 0fec5f0efd6..a99b75cb66a 100644 --- a/packages/flutter_tools/lib/src/commands/create.dart +++ b/packages/flutter_tools/lib/src/commands/create.dart @@ -25,15 +25,13 @@ import '../template.dart'; import '../version.dart'; enum _ProjectType { - /// This is the legacy "app" module type that was created before the default - /// was "application". It is kept around to allow users to recreate files that - /// have been removed in old projects. + /// This is the default project with the user-managed host code. + /// It is different than the "module" template in that it exposes and doesn't + /// manage the platform code. app, - /// The is the default type of project created. It is an application with + /// The is a project that has managed platform host code. It is an application with /// ephemeral .ios and .android directories that can be updated automatically. - application, - /// This is the old name for the [application] style project. - module, // TODO(gspencer): deprecated -- should be removed once IntelliJ no longer uses it. + module, /// This is a Flutter Dart package project. It doesn't have any native /// components, only Dart. package, @@ -43,11 +41,6 @@ enum _ProjectType { _ProjectType _stringToProjectType(String value) { _ProjectType result; - // TODO(gspencer): remove module when it is no longer used by IntelliJ plugin. - // Module is just an alias for application. - if (value == 'module') { - value = 'application'; - } for (_ProjectType type in _ProjectType.values) { if (value == getEnumName(type)) { result = type; @@ -58,7 +51,7 @@ _ProjectType _stringToProjectType(String value) { } class CreateCommand extends FlutterCommand { - CreateCommand({bool verboseHelp = false }) { + CreateCommand() { argParser.addFlag('pub', defaultsTo: true, help: 'Whether to run "flutter packages get" after the project has been created.' @@ -82,23 +75,13 @@ class CreateCommand extends FlutterCommand { help: 'Specify the type of project to create.', valueHelp: 'type', allowedHelp: { - getEnumName(_ProjectType.application): '(default) Generate a Flutter application.', + getEnumName(_ProjectType.app): '(default) Generate a Flutter application.', getEnumName(_ProjectType.package): 'Generate a shareable Flutter project containing modular ' 'Dart code.', getEnumName(_ProjectType.plugin): 'Generate a shareable Flutter project containing an API ' 'in Dart code with a platform-specific implementation for Android, for iOS code, or ' 'for both.', - }..addAll(verboseHelp - ? { - getEnumName(_ProjectType.app): 'Generate the legacy form of an application project. Use ' - '"application" instead, unless you are working with an existing legacy app project. ' - 'This is not just an alias for the "application" template, it produces different ' - 'output.', - getEnumName(_ProjectType.module): 'Legacy, deprecated form of an application project. Use ' - '"application" instead. This is just an alias for the "application" template, it ' - 'produces the same output. It will be removed in a future release.', - } - : {}), + }, defaultsTo: null, ); argParser.addOption( @@ -227,7 +210,7 @@ class CreateCommand extends FlutterCommand { } } } - template ??= detectedProjectType ?? _ProjectType.application; + template ??= detectedProjectType ?? _ProjectType.app; if (detectedProjectType != null && template != detectedProjectType && metadataExists) { // We can only be definitive that this is the wrong type if the .metadata file // exists and contains a type that doesn't match. @@ -235,7 +218,7 @@ class CreateCommand extends FlutterCommand { "existing template type of '${getEnumName(detectedProjectType)}'."); } - final bool generateApplication = template == _ProjectType.application; + final bool generateModule = template == _ProjectType.module; final bool generatePlugin = template == _ProjectType.plugin; final bool generatePackage = template == _ProjectType.package; @@ -283,11 +266,10 @@ class CreateCommand extends FlutterCommand { int generatedFileCount = 0; switch (template) { case _ProjectType.app: - generatedFileCount += await _generateLegacyApp(relativeDir, templateContext); + generatedFileCount += await _generateApp(relativeDir, templateContext); break; case _ProjectType.module: - case _ProjectType.application: - generatedFileCount += await _generateApplication(relativeDir, templateContext); + generatedFileCount += await _generateModule(relativeDir, templateContext); break; case _ProjectType.package: generatedFileCount += await _generatePackage(relativeDir, templateContext); @@ -305,13 +287,13 @@ class CreateCommand extends FlutterCommand { '${templateContext['projectName']}.dart', )); printStatus('Your package code is in $relativeMainPath'); - } else if (generateApplication) { + } else if (generateModule) { final String relativeMainPath = fs.path.normalize(fs.path.join( relativeDirPath, 'lib', 'main.dart', )); - printStatus('Your application code is in $relativeMainPath.'); + printStatus('Your module code is in $relativeMainPath.'); } else { // Run doctor; tell the user the next steps. final FlutterProject project = await FlutterProject.fromPath(projectDirPath); @@ -359,13 +341,13 @@ To edit platform code in an IDE see https://flutter.io/developing-packages/#edit return null; } - Future _generateApplication(Directory directory, Map templateContext) async { + Future _generateModule(Directory directory, Map templateContext) async { int generatedCount = 0; final String description = argResults.wasParsed('description') ? argResults['description'] - : 'A new flutter application project.'; + : 'A new flutter module project.'; templateContext['description'] = description; - generatedCount += _renderTemplate(fs.path.join('application', 'common'), directory, templateContext); + generatedCount += _renderTemplate(fs.path.join('module', 'common'), directory, templateContext); if (argResults['pub']) { await pubGet( context: PubContext.create, @@ -382,7 +364,7 @@ To edit platform code in an IDE see https://flutter.io/developing-packages/#edit int generatedCount = 0; final String description = argResults.wasParsed('description') ? argResults['description'] - : 'A new flutter package project.'; + : 'A new Flutter package project.'; templateContext['description'] = description; generatedCount += _renderTemplate('package', directory, templateContext); if (argResults['pub']) { @@ -423,11 +405,11 @@ To edit platform code in an IDE see https://flutter.io/developing-packages/#edit templateContext['pluginProjectName'] = projectName; templateContext['androidPluginIdentifier'] = androidPluginIdentifier; - generatedCount += await _generateLegacyApp(project.example.directory, templateContext); + generatedCount += await _generateApp(project.example.directory, templateContext); return generatedCount; } - Future _generateLegacyApp(Directory directory, Map templateContext) async { + Future _generateApp(Directory directory, Map templateContext) async { int generatedCount = 0; generatedCount += _renderTemplate('app', directory, templateContext); final FlutterProject project = await FlutterProject.fromDirectory(directory); diff --git a/packages/flutter_tools/lib/src/commands/make_host_app_editable.dart b/packages/flutter_tools/lib/src/commands/make_host_app_editable.dart index 2eee49b64f8..d40dcd62fe2 100644 --- a/packages/flutter_tools/lib/src/commands/make_host_app_editable.dart +++ b/packages/flutter_tools/lib/src/commands/make_host_app_editable.dart @@ -37,8 +37,8 @@ class MakeHostAppEditableCommand extends FlutterCommand { Future validateCommand() async { await super.validateCommand(); _project = await FlutterProject.current(); - if (!_project.isApplication) - throw ToolExit("Only projects created using 'flutter create -t application' can have their host apps made editable."); + if (!_project.isModule) + throw ToolExit("Only projects created using 'flutter create -t module' can have their host apps made editable."); } @override diff --git a/packages/flutter_tools/lib/src/flutter_manifest.dart b/packages/flutter_tools/lib/src/flutter_manifest.dart index 7e4068e064f..bb731d88306 100644 --- a/packages/flutter_tools/lib/src/flutter_manifest.dart +++ b/packages/flutter_tools/lib/src/flutter_manifest.dart @@ -110,14 +110,14 @@ class FlutterManifest { return _flutterDescriptor['uses-material-design'] ?? false; } - /// True if this manifest declares a Flutter application project. + /// True if this manifest declares a Flutter module project. /// - /// A Flutter project is considered an application when it has a `application:` - /// descriptor. A Flutter application project supports integration into an - /// existing host app. + /// A Flutter project is considered a module when it has a `module:` + /// descriptor. A Flutter module project supports integration into an + /// existing host app, and has managed platform host code. /// - /// Such a project can be created using `flutter create -t application`. - bool get isApplication => _flutterDescriptor.containsKey('application'); + /// Such a project can be created using `flutter create -t module`. + bool get isModule => _flutterDescriptor.containsKey('module'); /// True if this manifest declares a Flutter plugin project. /// @@ -130,21 +130,21 @@ class FlutterManifest { bool get isPlugin => _flutterDescriptor.containsKey('plugin'); /// Returns the Android package declared by this manifest in its - /// application or plugin descriptor. Returns null, if there is no + /// module or plugin descriptor. Returns null, if there is no /// such declaration. String get androidPackage { - if (isApplication) - return _flutterDescriptor['application']['androidPackage']; + if (isModule) + return _flutterDescriptor['module']['androidPackage']; if (isPlugin) return _flutterDescriptor['plugin']['androidPackage']; return null; } /// Returns the iOS bundle identifier declared by this manifest in its - /// application descriptor. Returns null, if there is no such declaration. + /// module descriptor. Returns null if there is no such declaration. String get iosBundleIdentifier { - if (isApplication) - return _flutterDescriptor['application']['iosBundleIdentifier']; + if (isModule) + return _flutterDescriptor['module']['iosBundleIdentifier']; return null; } diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index ea367fb11e8..346392a7e3a 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart @@ -335,7 +335,7 @@ Future buildXcodeProject({ buildInfo: buildInfo, ); refreshPluginsList(project); - if (hasPlugins(project) || (project.isApplication && project.ios.podfile.existsSync())) { + if (hasPlugins(project) || (project.isModule && project.ios.podfile.existsSync())) { // If the Xcode project, Podfile, or Generated.xcconfig have changed since // last run, pods should be updated. final Fingerprinter fingerprinter = Fingerprinter( diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart index 4b99549fcfc..2bb2a20c5ee 100644 --- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart +++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart @@ -57,8 +57,8 @@ Future updateGeneratedXcodeProperties({ localsBuffer.writeln('SYMROOT=\${SOURCE_ROOT}/../${getIosBuildDirectory()}'); - if (!project.isApplication) { - // For application projects we do not want to write the FLUTTER_FRAMEWORK_DIR + if (!project.isModule) { + // For module projects we do not want to write the FLUTTER_FRAMEWORK_DIR // explicitly. Rather we rely on the xcode backend script and the Podfile // logic to derive it from FLUTTER_ROOT and FLUTTER_BUILD_MODE. localsBuffer.writeln('FLUTTER_FRAMEWORK_DIR=${flutterFrameworkDir(buildInfo.mode)}'); diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart index ba274ebd162..cd4827b43a5 100644 --- a/packages/flutter_tools/lib/src/plugins.dart +++ b/packages/flutter_tools/lib/src/plugins.dart @@ -248,7 +248,7 @@ Future _writeIOSPluginRegistrant(FlutterProject project, List plug }; final String registryDirectory = project.ios.pluginRegistrantHost.path; - if (project.isApplication) { + if (project.isModule) { final String registryClassesDirectory = fs.path.join(registryDirectory, 'Classes'); _renderTemplateToFile( _iosPluginRegistrantPodspecTemplate, @@ -297,7 +297,7 @@ Future injectPlugins(FlutterProject project) async { final List plugins = findPlugins(project); await _writeAndroidPluginRegistrant(project, plugins); await _writeIOSPluginRegistrant(project, plugins); - if (!project.isApplication && project.ios.hostAppRoot.existsSync()) { + if (!project.isModule && project.ios.hostAppRoot.existsSync()) { final CocoaPods cocoaPods = CocoaPods(); if (plugins.isNotEmpty) cocoaPods.setupPodfile(project.ios); diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index aade35b4fb9..9e9904dc191 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart @@ -110,10 +110,10 @@ class FlutterProject { FlutterManifest.empty(), ); - /// True, if this project is a Flutter application. - bool get isApplication => manifest.isApplication; + /// True if this project is a Flutter module project. + bool get isModule => manifest.isModule; - /// True, if this project has an example application. + /// True if this project has an example application. bool get hasExampleApp => _exampleDirectory(directory).existsSync(); /// The directory that will contain the example if an example exists. @@ -132,7 +132,7 @@ class FlutterProject { } /// Generates project files necessary to make Gradle builds work on Android - /// and CocoaPods+Xcode work on iOS, for app and application projects only. + /// and CocoaPods+Xcode work on iOS, for app and module projects only. Future ensureReadyForPlatformSpecificTooling() async { if (!directory.existsSync() || hasExampleApp) return; @@ -146,7 +146,7 @@ class FlutterProject { /// Represents the iOS sub-project of a Flutter project. /// /// Instances will reflect the contents of the `ios/` sub-folder of -/// Flutter applications and the `.ios/` sub-folder of Flutter applications. +/// Flutter applications and the `.ios/` sub-folder of Flutter module projects. class IosProject { IosProject._(this.parent); @@ -162,7 +162,7 @@ class IosProject { /// This parent folder of `Runner.xcodeproj`. Directory get hostAppRoot { - if (!isApplication || _editableDirectory.existsSync()) + if (!isModule || _editableDirectory.existsSync()) return _editableDirectory; return _ephemeralDirectory; } @@ -172,14 +172,14 @@ class IosProject { /// during build. /// /// This is the same as [hostAppRoot] except when the project is - /// a Flutter application with an editable host app. - Directory get _flutterLibRoot => isApplication ? _ephemeralDirectory : _editableDirectory; + /// a Flutter module with an editable host app. + Directory get _flutterLibRoot => isModule ? _ephemeralDirectory : _editableDirectory; /// The bundle name of the host app, `Runner.app`. String get hostAppBundleName => '$_hostAppBundleName.app'; - /// True, if the parent Flutter project is an application. - bool get isApplication => parent.isApplication; + /// True, if the parent Flutter project is a module project. + bool get isModule => parent.isModule; /// The xcode config file for [mode]. File xcodeConfigFor(String mode) => _flutterLibRoot.childDirectory('Flutter').childFile('$mode.xcconfig'); @@ -264,32 +264,32 @@ class IosProject { } void _regenerateFromTemplateIfNeeded() { - if (!isApplication) + if (!isModule) return; final bool pubspecChanged = isOlderThanReference(entity: _ephemeralDirectory, referenceFile: parent.pubspecFile); final bool toolingChanged = Cache.instance.isOlderThanToolsStamp(_ephemeralDirectory); if (!pubspecChanged && !toolingChanged) return; _deleteIfExistsSync(_ephemeralDirectory); - _overwriteFromTemplate(fs.path.join('application', 'ios', 'library'), _ephemeralDirectory); + _overwriteFromTemplate(fs.path.join('module', 'ios', 'library'), _ephemeralDirectory); // Add ephemeral host app, if a editable host app does not already exist. if (!_editableDirectory.existsSync()) { - _overwriteFromTemplate(fs.path.join('application', 'ios', 'host_app_ephemeral'), _ephemeralDirectory); + _overwriteFromTemplate(fs.path.join('module', 'ios', 'host_app_ephemeral'), _ephemeralDirectory); if (hasPlugins(parent)) { - _overwriteFromTemplate(fs.path.join('application', 'ios', 'host_app_ephemeral_cocoapods'), _ephemeralDirectory); + _overwriteFromTemplate(fs.path.join('module', 'ios', 'host_app_ephemeral_cocoapods'), _ephemeralDirectory); } } } Future makeHostAppEditable() async { - assert(isApplication); + assert(isModule); if (_editableDirectory.existsSync()) throwToolExit('iOS host app is already editable. To start fresh, delete the ios/ folder.'); _deleteIfExistsSync(_ephemeralDirectory); - _overwriteFromTemplate(fs.path.join('application', 'ios', 'library'), _ephemeralDirectory); - _overwriteFromTemplate(fs.path.join('application', 'ios', 'host_app_ephemeral'), _editableDirectory); - _overwriteFromTemplate(fs.path.join('application', 'ios', 'host_app_ephemeral_cocoapods'), _editableDirectory); - _overwriteFromTemplate(fs.path.join('application', 'ios', 'host_app_editable_cocoapods'), _editableDirectory); + _overwriteFromTemplate(fs.path.join('module', 'ios', 'library'), _ephemeralDirectory); + _overwriteFromTemplate(fs.path.join('module', 'ios', 'host_app_ephemeral'), _editableDirectory); + _overwriteFromTemplate(fs.path.join('module', 'ios', 'host_app_ephemeral_cocoapods'), _editableDirectory); + _overwriteFromTemplate(fs.path.join('module', 'ios', 'host_app_editable_cocoapods'), _editableDirectory); await _updateGeneratedXcodeConfigIfNeeded(); await injectPlugins(parent); } @@ -297,7 +297,7 @@ class IosProject { File get generatedXcodePropertiesFile => _flutterLibRoot.childDirectory('Flutter').childFile('Generated.xcconfig'); Directory get pluginRegistrantHost { - return isApplication + return isModule ? _flutterLibRoot.childDirectory('Flutter').childDirectory('FlutterPluginRegistrant') : hostAppRoot.childDirectory(_hostAppBundleName); } @@ -319,7 +319,7 @@ class IosProject { /// Represents the Android sub-project of a Flutter project. /// /// Instances will reflect the contents of the `android/` sub-folder of -/// Flutter applications and the `.android/` sub-folder of Flutter applications. +/// Flutter applications and the `.android/` sub-folder of Flutter module projects. class AndroidProject { AndroidProject._(this.parent); @@ -333,21 +333,21 @@ class AndroidProject { /// containing the `app/` subdirectory and the `settings.gradle` file that /// includes it in the overall Gradle project. Directory get hostAppGradleRoot { - if (!isApplication || _editableHostAppDirectory.existsSync()) + if (!isModule || _editableHostAppDirectory.existsSync()) return _editableHostAppDirectory; return _ephemeralDirectory; } /// The Gradle root directory of the Android wrapping of Flutter and plugins. /// This is the same as [hostAppGradleRoot] except when the project is - /// a Flutter application with an editable host app. - Directory get _flutterLibGradleRoot => isApplication ? _ephemeralDirectory : _editableHostAppDirectory; + /// a Flutter module with an editable host app. + Directory get _flutterLibGradleRoot => isModule ? _ephemeralDirectory : _editableHostAppDirectory; Directory get _ephemeralDirectory => parent.directory.childDirectory('.android'); Directory get _editableHostAppDirectory => parent.directory.childDirectory('android'); - /// True, if the parent Flutter project is an application. - bool get isApplication => parent.isApplication; + /// True if the parent Flutter project is a module. + bool get isModule => parent.isModule; File get appManifestFile { return isUsingGradle @@ -376,12 +376,12 @@ class AndroidProject { } Future ensureReadyForPlatformSpecificTooling() async { - if (isApplication && _shouldRegenerateFromTemplate()) { + if (isModule && _shouldRegenerateFromTemplate()) { _regenerateLibrary(); // Add ephemeral host app, if an editable host app does not already exist. if (!_editableHostAppDirectory.existsSync()) { - _overwriteFromTemplate(fs.path.join('application', 'android', 'host_app_common'), _ephemeralDirectory); - _overwriteFromTemplate(fs.path.join('application', 'android', 'host_app_ephemeral'), _ephemeralDirectory); + _overwriteFromTemplate(fs.path.join('module', 'android', 'host_app_common'), _ephemeralDirectory); + _overwriteFromTemplate(fs.path.join('module', 'android', 'host_app_ephemeral'), _ephemeralDirectory); } } if (!hostAppGradleRoot.existsSync()) { @@ -396,13 +396,13 @@ class AndroidProject { } Future makeHostAppEditable() async { - assert(isApplication); + assert(isModule); if (_editableHostAppDirectory.existsSync()) throwToolExit('Android host app is already editable. To start fresh, delete the android/ folder.'); _regenerateLibrary(); - _overwriteFromTemplate(fs.path.join('application', 'android', 'host_app_common'), _editableHostAppDirectory); - _overwriteFromTemplate(fs.path.join('application', 'android', 'host_app_editable'), _editableHostAppDirectory); - _overwriteFromTemplate(fs.path.join('application', 'android', 'gradle'), _editableHostAppDirectory); + _overwriteFromTemplate(fs.path.join('module', 'android', 'host_app_common'), _editableHostAppDirectory); + _overwriteFromTemplate(fs.path.join('module', 'android', 'host_app_editable'), _editableHostAppDirectory); + _overwriteFromTemplate(fs.path.join('module', 'android', 'gradle'), _editableHostAppDirectory); gradle.injectGradleWrapper(_editableHostAppDirectory); gradle.writeLocalProperties(_editableHostAppDirectory.childFile('local.properties')); await injectPlugins(parent); @@ -410,12 +410,12 @@ class AndroidProject { File get localPropertiesFile => _flutterLibGradleRoot.childFile('local.properties'); - Directory get pluginRegistrantHost => _flutterLibGradleRoot.childDirectory(isApplication ? 'Flutter' : 'app'); + Directory get pluginRegistrantHost => _flutterLibGradleRoot.childDirectory(isModule ? 'Flutter' : 'app'); void _regenerateLibrary() { _deleteIfExistsSync(_ephemeralDirectory); - _overwriteFromTemplate(fs.path.join('application', 'android', 'library'), _ephemeralDirectory); - _overwriteFromTemplate(fs.path.join('application', 'android', 'gradle'), _ephemeralDirectory); + _overwriteFromTemplate(fs.path.join('module', 'android', 'library'), _ephemeralDirectory); + _overwriteFromTemplate(fs.path.join('module', 'android', 'gradle'), _ephemeralDirectory); gradle.injectGradleWrapper(_ephemeralDirectory); } diff --git a/packages/flutter_tools/schema/pubspec_yaml.json b/packages/flutter_tools/schema/pubspec_yaml.json index c7fb2f82af3..0a4b56e97db 100644 --- a/packages/flutter_tools/schema/pubspec_yaml.json +++ b/packages/flutter_tools/schema/pubspec_yaml.json @@ -43,7 +43,7 @@ } } }, - "application": { + "module": { "type": "object", "additionalProperties": false, "properties": { diff --git a/packages/flutter_tools/templates/application/README.md b/packages/flutter_tools/templates/module/README.md similarity index 100% rename from packages/flutter_tools/templates/application/README.md rename to packages/flutter_tools/templates/module/README.md diff --git a/packages/flutter_tools/templates/application/android/gradle/build.gradle.copy.tmpl b/packages/flutter_tools/templates/module/android/gradle/build.gradle.copy.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/gradle/build.gradle.copy.tmpl rename to packages/flutter_tools/templates/module/android/gradle/build.gradle.copy.tmpl diff --git a/packages/flutter_tools/templates/application/android/gradle/gradle.properties.copy.tmpl b/packages/flutter_tools/templates/module/android/gradle/gradle.properties.copy.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/gradle/gradle.properties.copy.tmpl rename to packages/flutter_tools/templates/module/android/gradle/gradle.properties.copy.tmpl diff --git a/packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/build.gradle.tmpl rename to packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl diff --git a/packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl rename to packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl diff --git a/packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl rename to packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl diff --git a/packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml similarity index 100% rename from packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml rename to packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml diff --git a/packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png rename to packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/res/values/styles.xml b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/res/values/styles.xml similarity index 100% rename from packages/flutter_tools/templates/application/android/host_app_common/app.tmpl/src/main/res/values/styles.xml rename to packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/src/main/res/values/styles.xml diff --git a/packages/flutter_tools/templates/application/android/host_app_editable/settings.gradle.copy.tmpl b/packages/flutter_tools/templates/module/android/host_app_editable/settings.gradle.copy.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/host_app_editable/settings.gradle.copy.tmpl rename to packages/flutter_tools/templates/module/android/host_app_editable/settings.gradle.copy.tmpl diff --git a/packages/flutter_tools/templates/application/android/host_app_ephemeral/settings.gradle.copy.tmpl b/packages/flutter_tools/templates/module/android/host_app_ephemeral/settings.gradle.copy.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/host_app_ephemeral/settings.gradle.copy.tmpl rename to packages/flutter_tools/templates/module/android/host_app_ephemeral/settings.gradle.copy.tmpl diff --git a/packages/flutter_tools/templates/application/android/library/Flutter.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/module/android/library/Flutter.tmpl/build.gradle.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/library/Flutter.tmpl/build.gradle.tmpl rename to packages/flutter_tools/templates/module/android/library/Flutter.tmpl/build.gradle.tmpl diff --git a/packages/flutter_tools/templates/application/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/module/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl rename to packages/flutter_tools/templates/module/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl diff --git a/packages/flutter_tools/templates/application/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java b/packages/flutter_tools/templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java similarity index 100% rename from packages/flutter_tools/templates/application/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java rename to packages/flutter_tools/templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java diff --git a/packages/flutter_tools/templates/application/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java b/packages/flutter_tools/templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java similarity index 100% rename from packages/flutter_tools/templates/application/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java rename to packages/flutter_tools/templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java diff --git a/packages/flutter_tools/templates/application/android/library/include_flutter.groovy.copy.tmpl b/packages/flutter_tools/templates/module/android/library/include_flutter.groovy.copy.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/library/include_flutter.groovy.copy.tmpl rename to packages/flutter_tools/templates/module/android/library/include_flutter.groovy.copy.tmpl diff --git a/packages/flutter_tools/templates/application/android/library/settings.gradle.copy.tmpl b/packages/flutter_tools/templates/module/android/library/settings.gradle.copy.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/android/library/settings.gradle.copy.tmpl rename to packages/flutter_tools/templates/module/android/library/settings.gradle.copy.tmpl diff --git a/packages/flutter_tools/templates/application/common/.gitignore.tmpl b/packages/flutter_tools/templates/module/common/.gitignore.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/.gitignore.tmpl rename to packages/flutter_tools/templates/module/common/.gitignore.tmpl diff --git a/packages/flutter_tools/templates/application/common/.idea/libraries/Dart_SDK.xml.tmpl b/packages/flutter_tools/templates/module/common/.idea/libraries/Dart_SDK.xml.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/.idea/libraries/Dart_SDK.xml.tmpl rename to packages/flutter_tools/templates/module/common/.idea/libraries/Dart_SDK.xml.tmpl diff --git a/packages/flutter_tools/templates/application/common/.idea/libraries/Flutter_for_Android.xml.tmpl b/packages/flutter_tools/templates/module/common/.idea/libraries/Flutter_for_Android.xml.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/.idea/libraries/Flutter_for_Android.xml.tmpl rename to packages/flutter_tools/templates/module/common/.idea/libraries/Flutter_for_Android.xml.tmpl diff --git a/packages/flutter_tools/templates/application/common/.idea/modules.xml.tmpl b/packages/flutter_tools/templates/module/common/.idea/modules.xml.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/.idea/modules.xml.tmpl rename to packages/flutter_tools/templates/module/common/.idea/modules.xml.tmpl diff --git a/packages/flutter_tools/templates/application/common/.idea/workspace.xml.tmpl b/packages/flutter_tools/templates/module/common/.idea/workspace.xml.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/.idea/workspace.xml.tmpl rename to packages/flutter_tools/templates/module/common/.idea/workspace.xml.tmpl diff --git a/packages/flutter_tools/templates/application/common/.metadata.tmpl b/packages/flutter_tools/templates/module/common/.metadata.tmpl similarity index 91% rename from packages/flutter_tools/templates/application/common/.metadata.tmpl rename to packages/flutter_tools/templates/module/common/.metadata.tmpl index a124080346c..46c99adce2a 100644 --- a/packages/flutter_tools/templates/application/common/.metadata.tmpl +++ b/packages/flutter_tools/templates/module/common/.metadata.tmpl @@ -7,4 +7,4 @@ version: revision: {{flutterRevision}} channel: {{flutterChannel}} -project_type: application +project_type: module diff --git a/packages/flutter_tools/templates/application/common/README.md.tmpl b/packages/flutter_tools/templates/module/common/README.md.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/README.md.tmpl rename to packages/flutter_tools/templates/module/common/README.md.tmpl diff --git a/packages/flutter_tools/templates/application/common/lib/main.dart.tmpl b/packages/flutter_tools/templates/module/common/lib/main.dart.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/lib/main.dart.tmpl rename to packages/flutter_tools/templates/module/common/lib/main.dart.tmpl diff --git a/packages/flutter_tools/templates/application/common/projectName.iml.tmpl b/packages/flutter_tools/templates/module/common/projectName.iml.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/projectName.iml.tmpl rename to packages/flutter_tools/templates/module/common/projectName.iml.tmpl diff --git a/packages/flutter_tools/templates/application/common/projectName_android.iml.tmpl b/packages/flutter_tools/templates/module/common/projectName_android.iml.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/projectName_android.iml.tmpl rename to packages/flutter_tools/templates/module/common/projectName_android.iml.tmpl diff --git a/packages/flutter_tools/templates/application/common/pubspec.yaml.tmpl b/packages/flutter_tools/templates/module/common/pubspec.yaml.tmpl similarity index 96% rename from packages/flutter_tools/templates/application/common/pubspec.yaml.tmpl rename to packages/flutter_tools/templates/module/common/pubspec.yaml.tmpl index 2435585c5ad..cb4befb0b52 100644 --- a/packages/flutter_tools/templates/application/common/pubspec.yaml.tmpl +++ b/packages/flutter_tools/templates/module/common/pubspec.yaml.tmpl @@ -20,6 +20,6 @@ dev_dependencies: flutter: uses-material-design: true - application: + module: androidPackage: {{androidIdentifier}} iosBundleIdentifier: {{iosIdentifier}} diff --git a/packages/flutter_tools/templates/application/common/test/widget_test.dart.tmpl b/packages/flutter_tools/templates/module/common/test/widget_test.dart.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/common/test/widget_test.dart.tmpl rename to packages/flutter_tools/templates/module/common/test/widget_test.dart.tmpl diff --git a/packages/flutter_tools/templates/application/ios/host_app_editable_cocoapods/Config.tmpl/Flutter.xcconfig b/packages/flutter_tools/templates/module/ios/host_app_editable_cocoapods/Config.tmpl/Flutter.xcconfig similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_editable_cocoapods/Config.tmpl/Flutter.xcconfig rename to packages/flutter_tools/templates/module/ios/host_app_editable_cocoapods/Config.tmpl/Flutter.xcconfig diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/main.m b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/main.m similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.tmpl/main.m rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.tmpl/main.m diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata b/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig b/packages/flutter_tools/templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig b/packages/flutter_tools/templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl b/packages/flutter_tools/templates/module/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl diff --git a/packages/flutter_tools/templates/application/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m b/packages/flutter_tools/templates/module/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m similarity index 100% rename from packages/flutter_tools/templates/application/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m rename to packages/flutter_tools/templates/module/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m diff --git a/packages/flutter_tools/templates/application/ios/library/Flutter.tmpl/AppFrameworkInfo.plist b/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/AppFrameworkInfo.plist similarity index 100% rename from packages/flutter_tools/templates/application/ios/library/Flutter.tmpl/AppFrameworkInfo.plist rename to packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/AppFrameworkInfo.plist diff --git a/packages/flutter_tools/templates/application/ios/library/Flutter.tmpl/README.md b/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/README.md similarity index 100% rename from packages/flutter_tools/templates/application/ios/library/Flutter.tmpl/README.md rename to packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/README.md diff --git a/packages/flutter_tools/templates/application/ios/library/Flutter.tmpl/podhelper.rb b/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb similarity index 100% rename from packages/flutter_tools/templates/application/ios/library/Flutter.tmpl/podhelper.rb rename to packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb diff --git a/packages/flutter_tools/test/commands/create_test.dart b/packages/flutter_tools/test/commands/create_test.dart index 912e26516ae..485a3e93efa 100644 --- a/packages/flutter_tools/test/commands/create_test.dart +++ b/packages/flutter_tools/test/commands/create_test.dart @@ -43,46 +43,12 @@ void main() { tryToDelete(tempDir); }); - // Verify that we create a default project ('application') that is + // Verify that we create a default project ('app') that is // well-formed. testUsingContext('can create a default project', () async { - await _createAndAnalyzeProject(projectDir, [], [ - '.android/app/', - '.gitignore', - '.ios/Flutter', - '.metadata', - 'lib/main.dart', - 'pubspec.yaml', - 'README.md', - 'test/widget_test.dart', - ], unexpectedPaths: [ - 'android/', - 'ios/', - ]); - return _runFlutterTest(projectDir); - }, timeout: allowForRemotePubInvocation); - - testUsingContext('can create a default project if empty directory exists', () async { - await projectDir.create(recursive: true); - return _createAndAnalyzeProject(projectDir, [], [ - '.android/app/', - '.gitignore', - '.ios/Flutter', - '.metadata', - 'lib/main.dart', - 'pubspec.yaml', - 'README.md', - 'test/widget_test.dart', - ], unexpectedPaths: [ - 'android/', - 'ios/', - ]); - }, timeout: allowForRemotePubInvocation); - - testUsingContext('creates a legacy app project correctly', () async { await _createAndAnalyzeProject( projectDir, - ['--template=app'], + [], [ 'android/app/src/main/java/com/example/flutterproject/MainActivity.java', 'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java', @@ -95,22 +61,26 @@ void main() { return _runFlutterTest(projectDir); }, timeout: allowForRemotePubInvocation); - testUsingContext('cannot create a project if non-empty non-project directory exists with .metadata', () async { - await projectDir.absolute.childDirectory('blag').create(recursive: true); - await projectDir.absolute.childFile('.metadata').writeAsString('project_type: blag\n'); - expect(() async => await _createAndAnalyzeProject(projectDir, [], [ - ], unexpectedPaths: [ - 'android/', - 'ios/', - '.android/', - '.ios/', - ]), throwsToolExit(message: 'Sorry, unable to detect the type of project to recreate')); + testUsingContext('can create a default project if empty directory exists', () async { + await projectDir.create(recursive: true); + await _createAndAnalyzeProject( + projectDir, + [], + [ + 'android/app/src/main/java/com/example/flutterproject/MainActivity.java', + 'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java', + 'flutter_project.iml', + 'ios/Flutter/AppFrameworkInfo.plist', + 'ios/Runner/AppDelegate.m', + 'ios/Runner/GeneratedPluginRegistrant.h', + ], + ); }, timeout: allowForRemotePubInvocation); - testUsingContext('Will create an application project if non-empty non-project directory exists without .metadata', () async { - await projectDir.absolute.childDirectory('blag').create(recursive: true); - await projectDir.absolute.childDirectory('.idea').create(recursive: true); - return _createAndAnalyzeProject(projectDir, [], [ + testUsingContext('creates a module project correctly', () async { + await _createAndAnalyzeProject(projectDir, [ + '--template=module' + ], [ '.android/app/', '.gitignore', '.ios/Flutter', @@ -123,23 +93,51 @@ void main() { 'android/', 'ios/', ]); + return _runFlutterTest(projectDir); }, timeout: allowForRemotePubInvocation); - testUsingContext('detects and recreates an application project correctly', () async { - await projectDir.absolute.childDirectory('lib').create(recursive: true); - await projectDir.absolute.childDirectory('.ios').create(recursive: true); - return _createAndAnalyzeProject(projectDir, [], [ - '.android/app/', - '.gitignore', - '.ios/Flutter', - '.metadata', - 'lib/main.dart', - 'pubspec.yaml', - 'README.md', - 'test/widget_test.dart', + testUsingContext('cannot create a project if non-empty non-project directory exists with .metadata', () async { + await projectDir.absolute.childDirectory('blag').create(recursive: true); + await projectDir.absolute.childFile('.metadata').writeAsString('project_type: blag\n'); + expect( + () async => await _createAndAnalyzeProject(projectDir, [], [], unexpectedPaths: [ + 'android/', + 'ios/', + '.android/', + '.ios/', + ]), + throwsToolExit(message: 'Sorry, unable to detect the type of project to recreate')); + }, timeout: allowForRemotePubInvocation); + + testUsingContext('Will create an app project if non-empty non-project directory exists without .metadata', () async { + await projectDir.absolute.childDirectory('blag').create(recursive: true); + await projectDir.absolute.childDirectory('.idea').create(recursive: true); + await _createAndAnalyzeProject(projectDir, [], [ + 'android/app/src/main/java/com/example/flutterproject/MainActivity.java', + 'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java', + 'flutter_project.iml', + 'ios/Flutter/AppFrameworkInfo.plist', + 'ios/Runner/AppDelegate.m', + 'ios/Runner/GeneratedPluginRegistrant.h', ], unexpectedPaths: [ - 'android/', - 'ios/', + '.android/', + '.ios/', + ]); + }, timeout: allowForRemotePubInvocation); + + testUsingContext('detects and recreates an app project correctly', () async { + await projectDir.absolute.childDirectory('lib').create(recursive: true); + await projectDir.absolute.childDirectory('ios').create(recursive: true); + await _createAndAnalyzeProject(projectDir, [], [ + 'android/app/src/main/java/com/example/flutterproject/MainActivity.java', + 'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java', + 'flutter_project.iml', + 'ios/Flutter/AppFrameworkInfo.plist', + 'ios/Runner/AppDelegate.m', + 'ios/Runner/GeneratedPluginRegistrant.h', + ], unexpectedPaths: [ + '.android/', + '.ios/', ]); }, timeout: allowForRemotePubInvocation); @@ -193,41 +191,6 @@ void main() { ); }, timeout: allowForRemotePubInvocation); - testUsingContext('detects and recreates a legacy app project correctly', () async { - await projectDir.absolute.childDirectory('lib').create(recursive: true); - await projectDir.absolute.childDirectory('ios').childDirectory('Flutter').create(recursive: true); - return _createAndAnalyzeProject( - projectDir, - [], - [ - 'android/app/src/main/java/com/example/flutterproject/MainActivity.java', - 'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java', - 'flutter_project.iml', - 'ios/Flutter/AppFrameworkInfo.plist', - 'ios/Runner/AppDelegate.m', - 'ios/Runner/GeneratedPluginRegistrant.h', - ], - ); - }, timeout: allowForRemotePubInvocation); - - testUsingContext('can create a legacy module project', () async { - return _createAndAnalyzeProject(projectDir, [ - '--template=module', - ], [ - '.android/app/', - '.gitignore', - '.ios/Flutter', - '.metadata', - 'lib/main.dart', - 'pubspec.yaml', - 'README.md', - 'test/widget_test.dart', - ], unexpectedPaths: [ - 'android/', - 'ios/', - ]); - }, timeout: allowForRemotePubInvocation); - testUsingContext('kotlin/swift legacy app project', () async { return _createProject( projectDir, @@ -343,9 +306,9 @@ void main() { ); }, timeout: allowForRemotePubInvocation); - testUsingContext('application project with pub', () async { + testUsingContext('module project with pub', () async { return _createProject(projectDir, [ - '--template=application' + '--template=module' ], [ '.android/build.gradle', '.android/Flutter/build.gradle', @@ -375,7 +338,7 @@ void main() { ]); }, timeout: allowForRemotePubInvocation); - testUsingContext('has correct content and formatting with applicaiton template', () async { + testUsingContext('has correct content and formatting with module template', () async { Cache.flutterRoot = '../..'; when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision); when(mockFlutterVersion.channel).thenReturn(frameworkChannel); @@ -383,7 +346,7 @@ void main() { final CreateCommand command = CreateCommand(); final CommandRunner runner = createTestCommandRunner(command); - await runner.run(['create', '--template=application', '--no-pub', '--org', 'com.foo.bar', projectDir.path]); + await runner.run(['create', '--template=module', '--no-pub', '--org', 'com.foo.bar', projectDir.path]); void expectExists(String relPath) { expect(fs.isFileSync('${projectDir.path}/$relPath'), true); @@ -446,7 +409,7 @@ void main() { FlutterVersion: () => mockFlutterVersion, }, timeout: allowForCreateFlutterProject); - testUsingContext('has correct content and formatting with legacy app template', () async { + testUsingContext('has correct content and formatting with app template', () async { Cache.flutterRoot = '../..'; when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision); when(mockFlutterVersion.channel).thenReturn(frameworkChannel); @@ -526,9 +489,12 @@ void main() { await runner.run(['create', '--no-pub', projectDir.path]); await runner.run(['create', '--no-pub', projectDir.path]); + + final String metadata = fs.file(fs.path.join(projectDir.path, '.metadata')).readAsStringSync(); + expect(metadata, contains('project_type: app\n')); }, timeout: allowForCreateFlutterProject); - testUsingContext('can re-gen default template over existing legacy app project with no metadta and detect the type', () async { + testUsingContext('can re-gen default template over existing app project with no metadta and detect the type', () async { Cache.flutterRoot = '../..'; final CreateCommand command = CreateCommand(); @@ -545,7 +511,7 @@ void main() { expect(metadata, contains('project_type: app\n')); }, timeout: allowForCreateFlutterProject); - testUsingContext('can re-gen default template over existing legacy app project and detect the type', () async { + testUsingContext('can re-gen app template over existing app project and detect the type', () async { Cache.flutterRoot = '../..'; final CreateCommand command = CreateCommand(); @@ -559,6 +525,20 @@ void main() { expect(metadata, contains('project_type: app\n')); }, timeout: allowForCreateFlutterProject); + testUsingContext('can re-gen template over existing module project and detect the type', () async { + Cache.flutterRoot = '../..'; + + final CreateCommand command = CreateCommand(); + final CommandRunner runner = createTestCommandRunner(command); + + await runner.run(['create', '--no-pub', '--template=module', projectDir.path]); + + await runner.run(['create', '--no-pub', projectDir.path]); + + final String metadata = fs.file(fs.path.join(projectDir.path, '.metadata')).readAsStringSync(); + expect(metadata, contains('project_type: module\n')); + }, timeout: allowForCreateFlutterProject); + testUsingContext('can re-gen default template over existing plugin project and detect the type', () async { Cache.flutterRoot = '../..'; @@ -587,10 +567,10 @@ void main() { expect(metadata, contains('project_type: package')); }, timeout: allowForCreateFlutterProject); - testUsingContext('can re-gen application .android/ folder, reusing custom org', () async { + testUsingContext('can re-gen module .android/ folder, reusing custom org', () async { await _createProject( projectDir, - ['--template=application', '--org', 'com.bar.foo'], + ['--template=module', '--org', 'com.bar.foo'], [], ); projectDir.childDirectory('.android').deleteSync(recursive: true); @@ -603,10 +583,10 @@ void main() { ); }, timeout: allowForRemotePubInvocation); - testUsingContext('can re-gen application .ios/ folder, reusing custom org', () async { + testUsingContext('can re-gen module .ios/ folder, reusing custom org', () async { await _createProject( projectDir, - ['--template=application', '--org', 'com.bar.foo'], + ['--template=module', '--org', 'com.bar.foo'], [], ); projectDir.childDirectory('.ios').deleteSync(recursive: true); @@ -618,7 +598,7 @@ void main() { ); }, timeout: allowForRemotePubInvocation); - testUsingContext('can re-gen legacy app android/ folder, reusing custom org', () async { + testUsingContext('can re-gen app android/ folder, reusing custom org', () async { await _createProject( projectDir, ['--no-pub', '--template=app', '--org', 'com.bar.foo'], @@ -637,7 +617,7 @@ void main() { ); }, timeout: allowForCreateFlutterProject); - testUsingContext('can re-gen legacy app ios/ folder, reusing custom org', () async { + testUsingContext('can re-gen app ios/ folder, reusing custom org', () async { await _createProject( projectDir, ['--no-pub', '--template=app', '--org', 'com.bar.foo'], diff --git a/packages/flutter_tools/test/commands/packages_test.dart b/packages/flutter_tools/test/commands/packages_test.dart index c8cad27fe96..051bd390890 100644 --- a/packages/flutter_tools/test/commands/packages_test.dart +++ b/packages/flutter_tools/test/commands/packages_test.dart @@ -45,8 +45,8 @@ void main() { tryToDelete(tempDir); }); - Future createProjectWithPlugin(String plugin) async { - final String projectPath = await createProject(tempDir); + Future createProjectWithPlugin(String plugin, {List arguments}) async { + final String projectPath = await createProject(tempDir, arguments: arguments); final File pubspec = fs.file(fs.path.join(projectPath, 'pubspec.yaml')); String content = await pubspec.readAsString(); content = content.replaceFirst( @@ -114,7 +114,7 @@ void main() { 'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java', ]; - const List applicationPluginRegistrants = [ + const List modulePluginRegistrants = [ '.ios/Flutter/FlutterPluginRegistrant/Classes/GeneratedPluginRegistrant.h', '.ios/Flutter/FlutterPluginRegistrant/Classes/GeneratedPluginRegistrant.m', '.android/Flutter/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java', @@ -125,7 +125,7 @@ void main() { 'ios/Podfile', ]; - const List applicationPluginWitnesses = [ + const List modulePluginWitnesses = [ '.flutter-plugins', '.ios/Podfile', ]; @@ -135,7 +135,7 @@ void main() { 'ios/Flutter/Release.xcconfig': '#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"', }; - const Map applicationPluginContentWitnesses = { + const Map modulePluginContentWitnesses = { '.ios/Config/Debug.xcconfig': '#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"', '.ios/Config/Release.xcconfig': '#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"', }; @@ -147,13 +147,13 @@ void main() { } void expectZeroPluginsInjected(String projectPath) { - for (final String registrant in applicationPluginRegistrants) { + for (final String registrant in modulePluginRegistrants) { expectExists(projectPath, registrant); } for (final String witness in pluginWitnesses) { expectNotExists(projectPath, witness); } - applicationPluginContentWitnesses.forEach((String witness, String content) { + modulePluginContentWitnesses.forEach((String witness, String content) { expectNotContains(projectPath, witness, content); }); } @@ -170,14 +170,14 @@ void main() { }); } - void expectApplicationPluginInjected(String projectPath) { - for (final String registrant in applicationPluginRegistrants) { + void expectModulePluginInjected(String projectPath) { + for (final String registrant in modulePluginRegistrants) { expectExists(projectPath, registrant); } - for (final String witness in applicationPluginWitnesses) { + for (final String witness in modulePluginWitnesses) { expectExists(projectPath, witness); } - applicationPluginContentWitnesses.forEach((String witness, String content) { + modulePluginContentWitnesses.forEach((String witness, String content) { expectContains(projectPath, witness, content); }); } @@ -185,7 +185,7 @@ void main() { void removeGeneratedFiles(String projectPath) { final Iterable allFiles = >[ pubOutput, - applicationPluginRegistrants, + modulePluginRegistrants, pluginWitnesses, ].expand((List list) => list); for (String path in allFiles) { @@ -196,7 +196,8 @@ void main() { } testUsingContext('get fetches packages', () async { - final String projectPath = await createProject(tempDir); + final String projectPath = await createProject(tempDir, + arguments: ['--no-pub', '--template=module']); removeGeneratedFiles(projectPath); await runCommandIn(projectPath, 'get'); @@ -206,7 +207,8 @@ void main() { }, timeout: allowForRemotePubInvocation); testUsingContext('get --offline fetches packages', () async { - final String projectPath = await createProject(tempDir); + final String projectPath = await createProject(tempDir, + arguments: ['--no-pub', '--template=module']); removeGeneratedFiles(projectPath); await runCommandIn(projectPath, 'get', args: ['--offline']); @@ -216,7 +218,8 @@ void main() { }, timeout: allowForCreateFlutterProject); testUsingContext('upgrade fetches packages', () async { - final String projectPath = await createProject(tempDir); + final String projectPath = await createProject(tempDir, + arguments: ['--no-pub', '--template=module']); removeGeneratedFiles(projectPath); await runCommandIn(projectPath, 'upgrade'); @@ -226,13 +229,14 @@ void main() { }, timeout: allowForRemotePubInvocation); testUsingContext('get fetches packages and injects plugin', () async { - final String projectPath = await createProjectWithPlugin('path_provider'); + final String projectPath = await createProjectWithPlugin('path_provider', + arguments: ['--no-pub', '--template=module']); removeGeneratedFiles(projectPath); await runCommandIn(projectPath, 'get'); expectDependenciesResolved(projectPath); - expectApplicationPluginInjected(projectPath); + expectModulePluginInjected(projectPath); }, timeout: allowForRemotePubInvocation); testUsingContext('get fetches packages and injects plugin in plugin project', () async { diff --git a/packages/flutter_tools/test/flutter_manifest_test.dart b/packages/flutter_tools/test/flutter_manifest_test.dart index 287e723ab3a..894a1bcbbc2 100644 --- a/packages/flutter_tools/test/flutter_manifest_test.dart +++ b/packages/flutter_tools/test/flutter_manifest_test.dart @@ -355,20 +355,20 @@ flutter: '''; final FlutterManifest flutterManifest = await FlutterManifest.createFromString(manifest); expect(flutterManifest.isEmpty, false); - expect(flutterManifest.isApplication, false); + expect(flutterManifest.isModule, false); expect(flutterManifest.isPlugin, false); expect(flutterManifest.androidPackage, null); }); - test('allows an application declaration', () async { + test('allows a module declaration', () async { const String manifest = ''' name: test flutter: - application: + module: androidPackage: com.example '''; final FlutterManifest flutterManifest = await FlutterManifest.createFromString(manifest); - expect(flutterManifest.isApplication, true); + expect(flutterManifest.isModule, true); expect(flutterManifest.androidPackage, 'com.example'); }); diff --git a/packages/flutter_tools/test/project_test.dart b/packages/flutter_tools/test/project_test.dart index 80248bada77..0de086fcd4b 100644 --- a/packages/flutter_tools/test/project_test.dart +++ b/packages/flutter_tools/test/project_test.dart @@ -90,20 +90,20 @@ void main() { }); group('editable Android host app', () { - testInMemory('fails on non-application', () async { + testInMemory('fails on non-module', () async { final FlutterProject project = await someProject(); await expectLater( project.android.makeHostAppEditable(), throwsA(isInstanceOf()), ); }); - testInMemory('exits on already editable application', () async { - final FlutterProject project = await anApplicationProject(); + testInMemory('exits on already editable module', () async { + final FlutterProject project = await aModuleProject(); await project.android.makeHostAppEditable(); return expectToolExitLater(project.android.makeHostAppEditable(), contains('already editable')); }); testInMemory('creates android/app folder in place of .android/app', () async { - final FlutterProject project = await anApplicationProject(); + final FlutterProject project = await aModuleProject(); await project.android.makeHostAppEditable(); expectNotExists(project.directory.childDirectory('.android').childDirectory('app')); expect( @@ -118,7 +118,7 @@ void main() { ); }); testInMemory('retains .android/Flutter folder and references it', () async { - final FlutterProject project = await anApplicationProject(); + final FlutterProject project = await aModuleProject(); await project.android.makeHostAppEditable(); expectExists(project.directory.childDirectory('.android').childDirectory('Flutter')); expect( @@ -127,7 +127,7 @@ void main() { ); }); testInMemory('can be redone after deletion', () async { - final FlutterProject project = await anApplicationProject(); + final FlutterProject project = await aModuleProject(); await project.android.makeHostAppEditable(); project.directory.childDirectory('android').deleteSync(recursive: true); await project.android.makeHostAppEditable(); @@ -173,15 +173,15 @@ void main() { await project.ensureReadyForPlatformSpecificTooling(); expectExists(project.android.hostAppGradleRoot.childFile('local.properties')); }); - testInMemory('creates Android library in application', () async { - final FlutterProject project = await anApplicationProject(); + testInMemory('creates Android library in module', () async { + final FlutterProject project = await aModuleProject(); await project.ensureReadyForPlatformSpecificTooling(); expectExists(project.android.hostAppGradleRoot.childFile('settings.gradle')); expectExists(project.android.hostAppGradleRoot.childFile('local.properties')); expectExists(androidPluginRegistrant(project.android.hostAppGradleRoot.childDirectory('Flutter'))); }); - testInMemory('creates iOS pod in application', () async { - final FlutterProject project = await anApplicationProject(); + testInMemory('creates iOS pod in module', () async { + final FlutterProject project = await aModuleProject(); await project.ensureReadyForPlatformSpecificTooling(); final Directory flutter = project.ios.hostAppRoot.childDirectory('Flutter'); expectExists(flutter.childFile('podhelper.rb')); @@ -194,20 +194,20 @@ void main() { }); }); - group('application status', () { - testInMemory('is known for application', () async { - final FlutterProject project = await anApplicationProject(); - expect(project.isApplication, isTrue); - expect(project.android.isApplication, isTrue); - expect(project.ios.isApplication, isTrue); + group('module status', () { + testInMemory('is known for module', () async { + final FlutterProject project = await aModuleProject(); + expect(project.isModule, isTrue); + expect(project.android.isModule, isTrue); + expect(project.ios.isModule, isTrue); expect(project.android.hostAppGradleRoot.basename, '.android'); expect(project.ios.hostAppRoot.basename, '.ios'); }); - testInMemory('is known for non-application', () async { + testInMemory('is known for non-module', () async { final FlutterProject project = await someProject(); - expect(project.isApplication, isFalse); - expect(project.android.isApplication, isFalse); - expect(project.ios.isApplication, isFalse); + expect(project.isModule, isFalse); + expect(project.android.isModule, isFalse); + expect(project.ios.isModule, isFalse); expect(project.android.hostAppGradleRoot.basename, 'android'); expect(project.ios.hostAppRoot.basename, 'ios'); }); @@ -351,13 +351,13 @@ flutter: return FlutterProject.fromDirectory(directory); } -Future anApplicationProject() async { - final Directory directory = fs.directory('application_project'); +Future aModuleProject() async { + final Directory directory = fs.directory('module_project'); directory.childFile('.packages').createSync(recursive: true); directory.childFile('pubspec.yaml').writeAsStringSync(''' -name: my_application +name: my_module flutter: - application: + module: androidPackage: com.example '''); return FlutterProject.fromDirectory(directory);