Rename 'application' back to 'module', and make 'app' the default again for templates. (#22888)
We decided that redefining the default for templates was premature. We're going to go back to having "module" in experimental land again, and we'll try again when we have the feature set fully baked.
This keeps the writing of the .metadata files, and writing the template type to them, because that was a good improvement, and there are still a bunch of added tests that improve our coverage.
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 1136544..54356fd 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/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<void> main() async {
await task(() async {
@@ -21,15 +21,15 @@
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: <String>['--org', 'io.flutter.devicelab', '--template=application', 'hello'],
+ options: <String>['--org', 'io.flutter.devicelab', '--template=module', 'hello'],
);
});
@@ -49,7 +49,7 @@
);
});
- 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 e3dfa9a..af3cb69 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/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<void> 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: <String>['--org', 'io.flutter.devicelab', '--template=application', 'hello'],
+ options: <String>['--org', 'io.flutter.devicelab', '--template=module', 'hello'],
);
});
await prepareProvisioningCertificates(projectDir.path);
diff --git a/dev/devicelab/manifest.yaml b/dev/devicelab/manifest.yaml
index ee8c90d..699af32 100644
--- a/dev/devicelab/manifest.yaml
+++ b/dev/devicelab/manifest.yaml
@@ -263,9 +263,9 @@
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 @@
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 6d62a5e..d8c8c1a 100644
--- a/packages/flutter_tools/lib/executable.dart
+++ b/packages/flutter_tools/lib/executable.dart
@@ -56,7 +56,7 @@
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 0fec5f0..a99b75c 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -25,15 +25,13 @@
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 @@
_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 @@
}
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 @@
help: 'Specify the type of project to create.',
valueHelp: 'type',
allowedHelp: <String, String>{
- 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
- ? <String, String>{
- 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.',
- }
- : <String, String>{}),
+ },
defaultsTo: null,
);
argParser.addOption(
@@ -227,7 +210,7 @@
}
}
}
- 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 @@
"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 @@
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 @@
'${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 @@
return null;
}
- Future<int> _generateApplication(Directory directory, Map<String, dynamic> templateContext) async {
+ Future<int> _generateModule(Directory directory, Map<String, dynamic> 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 @@
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 @@
templateContext['pluginProjectName'] = projectName;
templateContext['androidPluginIdentifier'] = androidPluginIdentifier;
- generatedCount += await _generateLegacyApp(project.example.directory, templateContext);
+ generatedCount += await _generateApp(project.example.directory, templateContext);
return generatedCount;
}
- Future<int> _generateLegacyApp(Directory directory, Map<String, dynamic> templateContext) async {
+ Future<int> _generateApp(Directory directory, Map<String, dynamic> 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 2eee49b..d40dcd6 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 @@
Future<void> 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 7e4068e..bb731d8 100644
--- a/packages/flutter_tools/lib/src/flutter_manifest.dart
+++ b/packages/flutter_tools/lib/src/flutter_manifest.dart
@@ -110,14 +110,14 @@
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 @@
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 ea367fb..346392a 100644
--- a/packages/flutter_tools/lib/src/ios/mac.dart
+++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -335,7 +335,7 @@
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 4b99549..2bb2a20 100644
--- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart
+++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart
@@ -57,8 +57,8 @@
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 ba274eb..cd4827b 100644
--- a/packages/flutter_tools/lib/src/plugins.dart
+++ b/packages/flutter_tools/lib/src/plugins.dart
@@ -248,7 +248,7 @@
};
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 @@
final List<Plugin> 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 aade35b..9e9904d 100644
--- a/packages/flutter_tools/lib/src/project.dart
+++ b/packages/flutter_tools/lib/src/project.dart
@@ -110,10 +110,10 @@
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 @@
}
/// 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<void> ensureReadyForPlatformSpecificTooling() async {
if (!directory.existsSync() || hasExampleApp)
return;
@@ -146,7 +146,7 @@
/// 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 @@
/// 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 @@
/// 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 @@
}
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<void> 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 @@
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 @@
/// 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 @@
/// 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 @@
}
Future<void> 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 @@
}
Future<void> 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 @@
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 c7fb2f8..0a4b56e 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
Binary files differ
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 a124080..46c99ad 100644
--- a/packages/flutter_tools/templates/application/common/.metadata.tmpl
+++ b/packages/flutter_tools/templates/module/common/.metadata.tmpl
@@ -7,4 +7,4 @@
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 2435585..cb4befb 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 @@
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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
Binary files differ
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 912e265..485a3e9 100644
--- a/packages/flutter_tools/test/commands/create_test.dart
+++ b/packages/flutter_tools/test/commands/create_test.dart
@@ -43,46 +43,12 @@
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, <String>[], <String>[
- '.android/app/',
- '.gitignore',
- '.ios/Flutter',
- '.metadata',
- 'lib/main.dart',
- 'pubspec.yaml',
- 'README.md',
- 'test/widget_test.dart',
- ], unexpectedPaths: <String>[
- '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, <String>[], <String>[
- '.android/app/',
- '.gitignore',
- '.ios/Flutter',
- '.metadata',
- 'lib/main.dart',
- 'pubspec.yaml',
- 'README.md',
- 'test/widget_test.dart',
- ], unexpectedPaths: <String>[
- 'android/',
- 'ios/',
- ]);
- }, timeout: allowForRemotePubInvocation);
-
- testUsingContext('creates a legacy app project correctly', () async {
await _createAndAnalyzeProject(
projectDir,
- <String>['--template=app'],
+ <String>[],
<String>[
'android/app/src/main/java/com/example/flutterproject/MainActivity.java',
'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java',
@@ -95,22 +61,26 @@
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, <String>[], <String>[
- ], unexpectedPaths: <String>[
- '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,
+ <String>[],
+ <String>[
+ '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, <String>[], <String>[
+ testUsingContext('creates a module project correctly', () async {
+ await _createAndAnalyzeProject(projectDir, <String>[
+ '--template=module'
+ ], <String>[
'.android/app/',
'.gitignore',
'.ios/Flutter',
@@ -123,23 +93,51 @@
'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, <String>[], <String>[
- '.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, <String>[], <String>[], unexpectedPaths: <String>[
+ '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, <String>[], <String>[
+ '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: <String>[
- '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, <String>[], <String>[
+ '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: <String>[
+ '.android/',
+ '.ios/',
]);
}, timeout: allowForRemotePubInvocation);
@@ -193,41 +191,6 @@
);
}, 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,
- <String>[],
- <String>[
- '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, <String>[
- '--template=module',
- ], <String>[
- '.android/app/',
- '.gitignore',
- '.ios/Flutter',
- '.metadata',
- 'lib/main.dart',
- 'pubspec.yaml',
- 'README.md',
- 'test/widget_test.dart',
- ], unexpectedPaths: <String>[
- 'android/',
- 'ios/',
- ]);
- }, timeout: allowForRemotePubInvocation);
-
testUsingContext('kotlin/swift legacy app project', () async {
return _createProject(
projectDir,
@@ -343,9 +306,9 @@
);
}, timeout: allowForRemotePubInvocation);
- testUsingContext('application project with pub', () async {
+ testUsingContext('module project with pub', () async {
return _createProject(projectDir, <String>[
- '--template=application'
+ '--template=module'
], <String>[
'.android/build.gradle',
'.android/Flutter/build.gradle',
@@ -375,7 +338,7 @@
]);
}, 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 @@
final CreateCommand command = CreateCommand();
final CommandRunner<void> runner = createTestCommandRunner(command);
- await runner.run(<String>['create', '--template=application', '--no-pub', '--org', 'com.foo.bar', projectDir.path]);
+ await runner.run(<String>['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 @@
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 @@
await runner.run(<String>['create', '--no-pub', projectDir.path]);
await runner.run(<String>['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 @@
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 @@
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<void> runner = createTestCommandRunner(command);
+
+ await runner.run(<String>['create', '--no-pub', '--template=module', projectDir.path]);
+
+ await runner.run(<String>['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 @@
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,
- <String>['--template=application', '--org', 'com.bar.foo'],
+ <String>['--template=module', '--org', 'com.bar.foo'],
<String>[],
);
projectDir.childDirectory('.android').deleteSync(recursive: true);
@@ -603,10 +583,10 @@
);
}, 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,
- <String>['--template=application', '--org', 'com.bar.foo'],
+ <String>['--template=module', '--org', 'com.bar.foo'],
<String>[],
);
projectDir.childDirectory('.ios').deleteSync(recursive: true);
@@ -618,7 +598,7 @@
);
}, 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,
<String>['--no-pub', '--template=app', '--org', 'com.bar.foo'],
@@ -637,7 +617,7 @@
);
}, 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,
<String>['--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 c8cad27..051bd39 100644
--- a/packages/flutter_tools/test/commands/packages_test.dart
+++ b/packages/flutter_tools/test/commands/packages_test.dart
@@ -45,8 +45,8 @@
tryToDelete(tempDir);
});
- Future<String> createProjectWithPlugin(String plugin) async {
- final String projectPath = await createProject(tempDir);
+ Future<String> createProjectWithPlugin(String plugin, {List<String> 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 @@
'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java',
];
- const List<String> applicationPluginRegistrants = <String>[
+ const List<String> modulePluginRegistrants = <String>[
'.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 @@
'ios/Podfile',
];
- const List<String> applicationPluginWitnesses = <String>[
+ const List<String> modulePluginWitnesses = <String>[
'.flutter-plugins',
'.ios/Podfile',
];
@@ -135,7 +135,7 @@
'ios/Flutter/Release.xcconfig': '#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"',
};
- const Map<String, String> applicationPluginContentWitnesses = <String, String>{
+ const Map<String, String> modulePluginContentWitnesses = <String, String>{
'.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 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 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 removeGeneratedFiles(String projectPath) {
final Iterable<String> allFiles = <List<String>>[
pubOutput,
- applicationPluginRegistrants,
+ modulePluginRegistrants,
pluginWitnesses,
].expand<String>((List<String> list) => list);
for (String path in allFiles) {
@@ -196,7 +196,8 @@
}
testUsingContext('get fetches packages', () async {
- final String projectPath = await createProject(tempDir);
+ final String projectPath = await createProject(tempDir,
+ arguments: <String>['--no-pub', '--template=module']);
removeGeneratedFiles(projectPath);
await runCommandIn(projectPath, 'get');
@@ -206,7 +207,8 @@
}, timeout: allowForRemotePubInvocation);
testUsingContext('get --offline fetches packages', () async {
- final String projectPath = await createProject(tempDir);
+ final String projectPath = await createProject(tempDir,
+ arguments: <String>['--no-pub', '--template=module']);
removeGeneratedFiles(projectPath);
await runCommandIn(projectPath, 'get', args: <String>['--offline']);
@@ -216,7 +218,8 @@
}, timeout: allowForCreateFlutterProject);
testUsingContext('upgrade fetches packages', () async {
- final String projectPath = await createProject(tempDir);
+ final String projectPath = await createProject(tempDir,
+ arguments: <String>['--no-pub', '--template=module']);
removeGeneratedFiles(projectPath);
await runCommandIn(projectPath, 'upgrade');
@@ -226,13 +229,14 @@
}, 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: <String>['--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 287e723..894a1bc 100644
--- a/packages/flutter_tools/test/flutter_manifest_test.dart
+++ b/packages/flutter_tools/test/flutter_manifest_test.dart
@@ -355,20 +355,20 @@
''';
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 80248ba..0de086f 100644
--- a/packages/flutter_tools/test/project_test.dart
+++ b/packages/flutter_tools/test/project_test.dart
@@ -90,20 +90,20 @@
});
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<AssertionError>()),
);
});
- 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 @@
);
});
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 @@
);
});
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 @@
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 @@
});
});
- 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 @@
return FlutterProject.fromDirectory(directory);
}
-Future<FlutterProject> anApplicationProject() async {
- final Directory directory = fs.directory('application_project');
+Future<FlutterProject> 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);