Unverified Commit 85e9be36 authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Revert "Check Xcode build setting FULL_PRODUCT_NAME for the name of the built...

Revert "Check Xcode build setting FULL_PRODUCT_NAME for the name of the built app during flutter run (#47266)" (#47568)

This reverts commit 648a5d8a.
parent 88cd1135
...@@ -44,7 +44,7 @@ Future<void> main() async { ...@@ -44,7 +44,7 @@ Future<void> main() async {
'build', 'build',
'ios', 'ios',
'iphoneos', 'iphoneos',
'hello.app', 'Runner.app',
)); ));
if (!exists(ephemeralReleaseHostApp)) { if (!exists(ephemeralReleaseHostApp)) {
...@@ -84,7 +84,7 @@ Future<void> main() async { ...@@ -84,7 +84,7 @@ Future<void> main() async {
'build', 'build',
'ios', 'ios',
'iphoneos', 'iphoneos',
'hello.app', 'Runner.app',
)); ));
if (!exists(ephemeralProfileHostApp)) { if (!exists(ephemeralProfileHostApp)) {
...@@ -123,7 +123,7 @@ Future<void> main() async { ...@@ -123,7 +123,7 @@ Future<void> main() async {
'build', 'build',
'ios', 'ios',
'iphonesimulator', 'iphonesimulator',
'hello.app', 'Runner.app',
)); ));
if (!exists(ephemeralDebugHostApp)) { if (!exists(ephemeralDebugHostApp)) {
...@@ -178,7 +178,7 @@ Future<void> main() async { ...@@ -178,7 +178,7 @@ Future<void> main() async {
'build', 'build',
'ios', 'ios',
'iphoneos', 'iphoneos',
'hello.app', 'Runner.app',
))); )));
if (!ephemeralHostAppWithCocoaPodsBuilt) { if (!ephemeralHostAppWithCocoaPodsBuilt) {
...@@ -223,7 +223,7 @@ Future<void> main() async { ...@@ -223,7 +223,7 @@ Future<void> main() async {
'build', 'build',
'ios', 'ios',
'iphoneos', 'iphoneos',
'hello.app', 'Runner.app',
))); )));
if (!editableHostAppBuilt) { if (!editableHostAppBuilt) {
......
...@@ -410,15 +410,7 @@ class CompileTest { ...@@ -410,15 +410,7 @@ class CompileTest {
watch.start(); watch.start();
await flutter('build', options: options); await flutter('build', options: options);
watch.stop(); watch.stop();
final Directory appBuildDirectory = dir(path.join(cwd, 'build/ios/Release-iphoneos')); final String appPath = '$cwd/build/ios/Release-iphoneos/Runner.app/';
final Directory appBundle = appBuildDirectory
.listSync()
.whereType<Directory>()
.singleWhere((Directory directory) => path.extension(directory.path) == '.app', orElse: () => null);
if (appBundle == null) {
throw 'Failed to find app bundle in ${appBuildDirectory.path}';
}
final String appPath = appBundle.path;
// IPAs are created manually, https://flutter.dev/ios-release/ // IPAs are created manually, https://flutter.dev/ios-release/
await exec('tar', <String>['-zcf', 'build/app.ipa', appPath]); await exec('tar', <String>['-zcf', 'build/app.ipa', appPath]);
releaseSizeInBytes = await file('$cwd/build/app.ipa').length(); releaseSizeInBytes = await file('$cwd/build/app.ipa').length();
......
...@@ -341,6 +341,7 @@ ThinFramework() { ...@@ -341,6 +341,7 @@ ThinFramework() {
local framework_dir="$1" local framework_dir="$1"
shift shift
local plist_path="${framework_dir}/Info.plist"
local executable="$(GetFrameworkExecutablePath "${framework_dir}")" local executable="$(GetFrameworkExecutablePath "${framework_dir}")"
LipoExecutable "${executable}" "$@" LipoExecutable "${executable}" "$@"
} }
...@@ -373,7 +374,7 @@ EmbedFlutterFrameworks() { ...@@ -373,7 +374,7 @@ EmbedFlutterFrameworks() {
# Embed App.framework from Flutter into the app (after creating the Frameworks directory # Embed App.framework from Flutter into the app (after creating the Frameworks directory
# if it doesn't already exist). # if it doesn't already exist).
local xcode_frameworks_dir=${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH} local xcode_frameworks_dir=${BUILT_PRODUCTS_DIR}"/"${PRODUCT_NAME}".app/Frameworks"
RunCommand mkdir -p -- "${xcode_frameworks_dir}" RunCommand mkdir -p -- "${xcode_frameworks_dir}"
RunCommand cp -Rv -- "${flutter_ios_out_folder}/App.framework" "${xcode_frameworks_dir}" RunCommand cp -Rv -- "${flutter_ios_out_folder}/App.framework" "${xcode_frameworks_dir}"
......
...@@ -358,21 +358,18 @@ abstract class IOSApp extends ApplicationPackage { ...@@ -358,21 +358,18 @@ abstract class IOSApp extends ApplicationPackage {
} }
class BuildableIOSApp extends IOSApp { class BuildableIOSApp extends IOSApp {
BuildableIOSApp(this.project, String projectBundleId, this._hostAppBundleName) BuildableIOSApp(this.project, String projectBundleId)
: super(projectBundleId: projectBundleId); : super(projectBundleId: projectBundleId);
static Future<BuildableIOSApp> fromProject(IosProject project) async { static Future<BuildableIOSApp> fromProject(IosProject project) async {
final String projectBundleId = await project.productBundleIdentifier; final String projectBundleId = await project.productBundleIdentifier;
final String hostAppBundleName = await project.hostAppBundleName; return BuildableIOSApp(project, projectBundleId);
return BuildableIOSApp(project, projectBundleId, hostAppBundleName);
} }
final IosProject project; final IosProject project;
final String _hostAppBundleName;
@override @override
String get name => _hostAppBundleName; String get name => project.hostAppBundleName;
@override @override
String get simulatorBundlePath => _buildAppPath('iphonesimulator'); String get simulatorBundlePath => _buildAppPath('iphonesimulator');
...@@ -381,7 +378,7 @@ class BuildableIOSApp extends IOSApp { ...@@ -381,7 +378,7 @@ class BuildableIOSApp extends IOSApp {
String get deviceBundlePath => _buildAppPath('iphoneos'); String get deviceBundlePath => _buildAppPath('iphoneos');
String _buildAppPath(String type) { String _buildAppPath(String type) {
return fs.path.join(getIosBuildDirectory(), type, _hostAppBundleName); return fs.path.join(getIosBuildDirectory(), type, name);
} }
} }
......
...@@ -736,7 +736,7 @@ bool upgradePbxProjWithFlutterAssets(IosProject project) { ...@@ -736,7 +736,7 @@ bool upgradePbxProjWithFlutterAssets(IosProject project) {
final Match match = oldAssets.firstMatch(line); final Match match = oldAssets.firstMatch(line);
if (match != null) { if (match != null) {
if (printedStatuses.add(match.group(1))) { if (printedStatuses.add(match.group(1))) {
printStatus('Removing obsolete reference to ${match.group(1)} from ${project.xcodeProject?.basename}'); printStatus('Removing obsolete reference to ${match.group(1)} from ${project.hostAppBundleName}');
} }
} else { } else {
buffer.writeln(line); buffer.writeln(line);
......
...@@ -622,8 +622,9 @@ class _IOSSimulatorLogReader extends DeviceLogReader { ...@@ -622,8 +622,9 @@ class _IOSSimulatorLogReader extends DeviceLogReader {
} }
// Match the log prefix (in order to shorten it): // Match the log prefix (in order to shorten it):
// * Xcode 9: 2017-09-13 15:26:57.228948-0700 localhost My App[37195]: (Flutter) Observatory listening on http://127.0.0.1:57701/ // * Xcode 8: Sep 13 15:28:51 cbracken-macpro localhost Runner[37195]: (Flutter) Observatory listening on http://127.0.0.1:57701/
static final RegExp _mapRegex = RegExp(r'\S+ +\S+ +(?:\S+) (.+?(?=\[))\[\d+\]\)?: (\(.*?\))? *(.*)$'); // * Xcode 9: 2017-09-13 15:26:57.228948-0700 localhost Runner[37195]: (Flutter) Observatory listening on http://127.0.0.1:57701/
static final RegExp _mapRegex = RegExp(r'\S+ +\S+ +\S+ +(\S+ +)?(\S+)\[\d+\]\)?: (\(.*?\))? *(.*)$');
// Jan 31 19:23:28 --- last message repeated 1 time --- // Jan 31 19:23:28 --- last message repeated 1 time ---
static final RegExp _lastMessageSingleRegex = RegExp(r'\S+ +\S+ +\S+ --- last message repeated 1 time ---$'); static final RegExp _lastMessageSingleRegex = RegExp(r'\S+ +\S+ +\S+ --- last message repeated 1 time ---$');
...@@ -634,9 +635,9 @@ class _IOSSimulatorLogReader extends DeviceLogReader { ...@@ -634,9 +635,9 @@ class _IOSSimulatorLogReader extends DeviceLogReader {
String _filterDeviceLine(String string) { String _filterDeviceLine(String string) {
final Match match = _mapRegex.matchAsPrefix(string); final Match match = _mapRegex.matchAsPrefix(string);
if (match != null) { if (match != null) {
final String category = match.group(1); final String category = match.group(2);
final String tag = match.group(2); final String tag = match.group(3);
final String content = match.group(3); final String content = match.group(4);
// Filter out non-Flutter originated noise from the engine. // Filter out non-Flutter originated noise from the engine.
if (_appName != null && category != _appName) { if (_appName != null && category != _appName) {
......
...@@ -309,7 +309,7 @@ class IosProject implements XcodeBasedProject { ...@@ -309,7 +309,7 @@ class IosProject implements XcodeBasedProject {
static final RegExp _productBundleIdPattern = RegExp(r'''^\s*PRODUCT_BUNDLE_IDENTIFIER\s*=\s*(["']?)(.*?)\1;\s*$'''); static final RegExp _productBundleIdPattern = RegExp(r'''^\s*PRODUCT_BUNDLE_IDENTIFIER\s*=\s*(["']?)(.*?)\1;\s*$''');
static const String _productBundleIdVariable = r'$(PRODUCT_BUNDLE_IDENTIFIER)'; static const String _productBundleIdVariable = r'$(PRODUCT_BUNDLE_IDENTIFIER)';
static const String _hostAppProjectName = 'Runner'; static const String _hostAppBundleName = 'Runner';
Directory get ephemeralDirectory => parent.directory.childDirectory('.ios'); Directory get ephemeralDirectory => parent.directory.childDirectory('.ios');
Directory get _editableDirectory => parent.directory.childDirectory('ios'); Directory get _editableDirectory => parent.directory.childDirectory('ios');
...@@ -330,6 +330,9 @@ class IosProject implements XcodeBasedProject { ...@@ -330,6 +330,9 @@ class IosProject implements XcodeBasedProject {
/// a Flutter module with an editable host app. /// a Flutter module with an editable host app.
Directory get _flutterLibRoot => isModule ? ephemeralDirectory : _editableDirectory; 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 a module project. /// True, if the parent Flutter project is a module project.
bool get isModule => parent.isModule; bool get isModule => parent.isModule;
...@@ -352,19 +355,19 @@ class IosProject implements XcodeBasedProject { ...@@ -352,19 +355,19 @@ class IosProject implements XcodeBasedProject {
File get podManifestLock => hostAppRoot.childDirectory('Pods').childFile('Manifest.lock'); File get podManifestLock => hostAppRoot.childDirectory('Pods').childFile('Manifest.lock');
/// The 'Info.plist' file of the host app. /// The 'Info.plist' file of the host app.
File get hostInfoPlist => hostAppRoot.childDirectory(_hostAppProjectName).childFile('Info.plist'); File get hostInfoPlist => hostAppRoot.childDirectory(_hostAppBundleName).childFile('Info.plist');
@override @override
Directory get symlinks => _flutterLibRoot.childDirectory('.symlinks'); Directory get symlinks => _flutterLibRoot.childDirectory('.symlinks');
@override @override
Directory get xcodeProject => hostAppRoot.childDirectory('$_hostAppProjectName.xcodeproj'); Directory get xcodeProject => hostAppRoot.childDirectory('$_hostAppBundleName.xcodeproj');
@override @override
File get xcodeProjectInfoFile => xcodeProject.childFile('project.pbxproj'); File get xcodeProjectInfoFile => xcodeProject.childFile('project.pbxproj');
@override @override
Directory get xcodeWorkspace => hostAppRoot.childDirectory('$_hostAppProjectName.xcworkspace'); Directory get xcodeWorkspace => hostAppRoot.childDirectory('$_hostAppBundleName.xcworkspace');
/// Xcode workspace shared data directory for the host app. /// Xcode workspace shared data directory for the host app.
Directory get xcodeWorkspaceSharedData => xcodeWorkspace.childDirectory('xcshareddata'); Directory get xcodeWorkspaceSharedData => xcodeWorkspace.childDirectory('xcshareddata');
...@@ -405,26 +408,6 @@ class IosProject implements XcodeBasedProject { ...@@ -405,26 +408,6 @@ class IosProject implements XcodeBasedProject {
return null; return null;
} }
/// The bundle name of the host app, `My App.app`.
Future<String> get hostAppBundleName async {
// The product name and bundle name are derived from the display name, which the user
// is instructed to change in Xcode as part of deploying to the App Store.
// https://flutter.dev/docs/deployment/ios#review-xcode-project-settings
// It may be expensive, but the only source of truth for the name is
// Xcode's interpretation of the build settings.
String productName;
if (xcode.xcodeProjectInterpreter.isInstalled) {
final Map<String, String> xcodeBuildSettings = await buildSettings;
if (xcodeBuildSettings != null) {
productName = xcodeBuildSettings['FULL_PRODUCT_NAME'];
}
}
if (productName == null) {
printTrace('FULL_PRODUCT_NAME not present, defaulting to $_hostAppProjectName');
}
return productName ?? '$_hostAppProjectName.app';
}
/// The build settings for the host app of this project, as a detached map. /// The build settings for the host app of this project, as a detached map.
/// ///
/// Returns null, if iOS tooling is unavailable. /// Returns null, if iOS tooling is unavailable.
...@@ -432,16 +415,11 @@ class IosProject implements XcodeBasedProject { ...@@ -432,16 +415,11 @@ class IosProject implements XcodeBasedProject {
if (!xcode.xcodeProjectInterpreter.isInstalled) { if (!xcode.xcodeProjectInterpreter.isInstalled) {
return null; return null;
} }
Map<String, String> buildSettings = _buildSettings; _buildSettings ??= await xcode.xcodeProjectInterpreter.getBuildSettings(
buildSettings ??= await xcode.xcodeProjectInterpreter.getBuildSettings(
xcodeProject.path, xcodeProject.path,
_hostAppProjectName, _hostAppBundleName,
); );
if (buildSettings != null && buildSettings.isNotEmpty) { return _buildSettings;
// No timeouts, flakes, or errors.
_buildSettings = buildSettings;
}
return buildSettings;
} }
Map<String, String> _buildSettings; Map<String, String> _buildSettings;
...@@ -520,7 +498,7 @@ class IosProject implements XcodeBasedProject { ...@@ -520,7 +498,7 @@ class IosProject implements XcodeBasedProject {
Directory get pluginRegistrantHost { Directory get pluginRegistrantHost {
return isModule return isModule
? _flutterLibRoot.childDirectory('Flutter').childDirectory('FlutterPluginRegistrant') ? _flutterLibRoot.childDirectory('Flutter').childDirectory('FlutterPluginRegistrant')
: hostAppRoot.childDirectory(_hostAppProjectName); : hostAppRoot.childDirectory(_hostAppBundleName);
} }
void _overwriteFromTemplate(String path, Directory target) { void _overwriteFromTemplate(String path, Directory target) {
...@@ -781,7 +759,7 @@ class MacOSProject implements XcodeBasedProject { ...@@ -781,7 +759,7 @@ class MacOSProject implements XcodeBasedProject {
@override @override
final FlutterProject parent; final FlutterProject parent;
static const String _hostAppProjectName = 'Runner'; static const String _hostAppBundleName = 'Runner';
@override @override
bool existsSync() => _macOSDirectory.existsSync(); bool existsSync() => _macOSDirectory.existsSync();
...@@ -825,13 +803,13 @@ class MacOSProject implements XcodeBasedProject { ...@@ -825,13 +803,13 @@ class MacOSProject implements XcodeBasedProject {
File get podManifestLock => _macOSDirectory.childDirectory('Pods').childFile('Manifest.lock'); File get podManifestLock => _macOSDirectory.childDirectory('Pods').childFile('Manifest.lock');
@override @override
Directory get xcodeProject => _macOSDirectory.childDirectory('$_hostAppProjectName.xcodeproj'); Directory get xcodeProject => _macOSDirectory.childDirectory('$_hostAppBundleName.xcodeproj');
@override @override
File get xcodeProjectInfoFile => xcodeProject.childFile('project.pbxproj'); File get xcodeProjectInfoFile => xcodeProject.childFile('project.pbxproj');
@override @override
Directory get xcodeWorkspace => _macOSDirectory.childDirectory('$_hostAppProjectName.xcworkspace'); Directory get xcodeWorkspace => _macOSDirectory.childDirectory('$_hostAppBundleName.xcworkspace');
@override @override
Directory get symlinks => ephemeralDirectory.childDirectory('.symlinks'); Directory get symlinks => ephemeralDirectory.childDirectory('.symlinks');
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; }; 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* {{projectName}}.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "{{projectName}}.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
97C146EF1CF9000F007C117D /* Products */ = { 97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
97C146EE1CF9000F007C117D /* {{projectName}}.app */, 97C146EE1CF9000F007C117D /* Runner.app */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -142,7 +142,7 @@ ...@@ -142,7 +142,7 @@
); );
name = Runner; name = Runner;
productName = Runner; productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* {{projectName}}.app */; productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
...@@ -324,7 +324,7 @@ ...@@ -324,7 +324,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Profile; name = Profile;
...@@ -454,7 +454,7 @@ ...@@ -454,7 +454,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Debug; name = Debug;
...@@ -477,7 +477,7 @@ ...@@ -477,7 +477,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Release; name = Release;
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; }; 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* {{projectName}}.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "{{projectName}}.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
97C146EF1CF9000F007C117D /* Products */ = { 97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
97C146EE1CF9000F007C117D /* {{projectName}}.app */, 97C146EE1CF9000F007C117D /* Runner.app */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -138,7 +138,7 @@ ...@@ -138,7 +138,7 @@
); );
name = Runner; name = Runner;
productName = Runner; productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* {{projectName}}.app */; productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
...@@ -321,7 +321,7 @@ ...@@ -321,7 +321,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
...@@ -455,7 +455,7 @@ ...@@ -455,7 +455,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
...@@ -482,7 +482,7 @@ ...@@ -482,7 +482,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string> <string>{{projectName}}</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string> <string>{{projectName}}</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
......
...@@ -319,7 +319,7 @@ ...@@ -319,7 +319,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Profile; name = Profile;
...@@ -447,7 +447,7 @@ ...@@ -447,7 +447,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Debug; name = Debug;
...@@ -470,7 +470,7 @@ ...@@ -470,7 +470,7 @@
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}}; PRODUCT_BUNDLE_IDENTIFIER = {{iosIdentifier}};
PRODUCT_NAME = "{{projectName}}"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Release; name = Release;
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D" BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "{{projectName}}.app" BuildableName = "Runner.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
......
...@@ -20,7 +20,6 @@ import 'package:flutter_tools/src/doctor.dart'; ...@@ -20,7 +20,6 @@ import 'package:flutter_tools/src/doctor.dart';
import 'package:flutter_tools/src/ios/devices.dart'; import 'package:flutter_tools/src/ios/devices.dart';
import 'package:flutter_tools/src/ios/mac.dart'; import 'package:flutter_tools/src/ios/mac.dart';
import 'package:flutter_tools/src/ios/ios_workflow.dart'; import 'package:flutter_tools/src/ios/ios_workflow.dart';
import 'package:flutter_tools/src/ios/xcodeproj.dart';
import 'package:flutter_tools/src/macos/xcode.dart'; import 'package:flutter_tools/src/macos/xcode.dart';
import 'package:flutter_tools/src/mdns_discovery.dart'; import 'package:flutter_tools/src/mdns_discovery.dart';
import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/project.dart';
...@@ -576,32 +575,23 @@ void main() { ...@@ -576,32 +575,23 @@ void main() {
Cache.flutterRoot = '../..'; Cache.flutterRoot = '../..';
final CreateCommand command = CreateCommand(); final CreateCommand command = CreateCommand();
final CommandRunner<void> runner = createTestCommandRunner(command); final CommandRunner<void> runner = createTestCommandRunner(command);
await runner.run(<String>[
FakeAsync().run((FakeAsync time) { 'create',
runner.run(<String>[ '--no-pub',
'create', projectDir.path,
'--no-pub', ]);
projectDir.path,
]);
time.flushMicrotasks();
time.elapse(const Duration(seconds: 65));
});
if (additionalSetup != null) { if (additionalSetup != null) {
additionalSetup(); additionalSetup();
} }
final IOSApp app = AbsoluteBuildableIOSApp( final IOSApp app = await AbsoluteBuildableIOSApp.fromProject(
FlutterProject.fromDirectory(projectDir).ios, FlutterProject.fromDirectory(projectDir).ios);
'io.flutter.flutter.app',
'My Super Awesome App.app',
);
final IOSDevice device = IOSDevice('123'); final IOSDevice device = IOSDevice('123');
// Pre-create the expected build products. // Pre-create the expected build products.
targetBuildDir.createSync(recursive: true); targetBuildDir.createSync(recursive: true);
projectDir.childDirectory('build/ios/iphoneos/My Super Awesome App.app').createSync(recursive: true); projectDir.childDirectory('build/ios/iphoneos/Runner.app').createSync(recursive: true);
final Completer<LaunchResult> completer = Completer<LaunchResult>(); final Completer<LaunchResult> completer = Completer<LaunchResult>();
FakeAsync().run((FakeAsync time) { FakeAsync().run((FakeAsync time) {
...@@ -630,7 +620,6 @@ void main() { ...@@ -630,7 +620,6 @@ void main() {
IOSDeploy: () => mockIosDeploy, IOSDeploy: () => mockIosDeploy,
Platform: () => macPlatform, Platform: () => macPlatform,
ProcessManager: () => mockProcessManager, ProcessManager: () => mockProcessManager,
XcodeProjectInterpreter: () => FakeWithBuildSettingsXcodeProjectInterpreter(),
}); });
} }
...@@ -876,11 +865,11 @@ f577a7903cc54959be2e34bc4f7f80b7009efcf4 ...@@ -876,11 +865,11 @@ f577a7903cc54959be2e34bc4f7f80b7009efcf4
when(mockIMobileDevice.startLogger('123456')).thenAnswer((Invocation invocation) { when(mockIMobileDevice.startLogger('123456')).thenAnswer((Invocation invocation) {
final Process mockProcess = MockProcess( final Process mockProcess = MockProcess(
stdout: Stream<List<int>>.fromIterable(<List<int>>[''' stdout: Stream<List<int>>.fromIterable(<List<int>>['''
My Super Awesome App(Flutter)[297] <Notice>: A is for ari Runner(Flutter)[297] <Notice>: A is for ari
My Super Awesome App(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt MobileGestaltSupport.m:153: pid 123 (Runner) does not have sandbox access for frZQaeyWLUvLjeuEK43hmg and IS NOT appropriately entitled Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt MobileGestaltSupport.m:153: pid 123 (Runner) does not have sandbox access for frZQaeyWLUvLjeuEK43hmg and IS NOT appropriately entitled
My Super Awesome App(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt MobileGestalt.c:550: no access to InverseDeviceID (see <rdar://problem/11744455>) Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt MobileGestalt.c:550: no access to InverseDeviceID (see <rdar://problem/11744455>)
My Super Awesome App(Flutter)[297] <Notice>: I is for ichigo Runner(Flutter)[297] <Notice>: I is for ichigo
My Super Awesome App(UIKit)[297] <Notice>: E is for enpitsu" Runner(UIKit)[297] <Notice>: E is for enpitsu"
'''.codeUnits]) '''.codeUnits])
); );
return Future<Process>.value(mockProcess); return Future<Process>.value(mockProcess);
...@@ -901,11 +890,11 @@ My Super Awesome App(UIKit)[297] <Notice>: E is for enpitsu" ...@@ -901,11 +890,11 @@ My Super Awesome App(UIKit)[297] <Notice>: E is for enpitsu"
when(mockIMobileDevice.startLogger('123456')).thenAnswer((Invocation invocation) { when(mockIMobileDevice.startLogger('123456')).thenAnswer((Invocation invocation) {
final Process mockProcess = MockProcess( final Process mockProcess = MockProcess(
stdout: Stream<List<int>>.fromIterable(<List<int>>[''' stdout: Stream<List<int>>.fromIterable(<List<int>>['''
My Super Awesome App(Flutter)[297] <Notice>: This is a multi-line message, Runner(Flutter)[297] <Notice>: This is a multi-line message,
with another Flutter message following it. with another Flutter message following it.
My Super Awesome App(Flutter)[297] <Notice>: This is a multi-line message, Runner(Flutter)[297] <Notice>: This is a multi-line message,
with a non-Flutter log message following it. with a non-Flutter log message following it.
My Super Awesome App(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt
'''.codeUnits]), '''.codeUnits]),
); );
return Future<Process>.value(mockProcess); return Future<Process>.value(mockProcess);
...@@ -974,8 +963,13 @@ flutter: ...@@ -974,8 +963,13 @@ flutter:
} }
class AbsoluteBuildableIOSApp extends BuildableIOSApp { class AbsoluteBuildableIOSApp extends BuildableIOSApp {
AbsoluteBuildableIOSApp(IosProject project, String projectBundleId, String hostAppBundleName) : AbsoluteBuildableIOSApp(IosProject project, String projectBundleId) :
super(project, projectBundleId, hostAppBundleName); super(project, projectBundleId);
static Future<AbsoluteBuildableIOSApp> fromProject(IosProject project) async {
final String projectBundleId = await project.productBundleIdentifier;
return AbsoluteBuildableIOSApp(project, projectBundleId);
}
@override @override
String get deviceBundlePath => String get deviceBundlePath =>
...@@ -1000,31 +994,3 @@ class FakeIosDoctorProvider implements DoctorValidatorsProvider { ...@@ -1000,31 +994,3 @@ class FakeIosDoctorProvider implements DoctorValidatorsProvider {
return _workflows; return _workflows;
} }
} }
class FakeWithBuildSettingsXcodeProjectInterpreter extends XcodeProjectInterpreter {
@override
bool get isInstalled => true;
@override
String get versionText => 'Xcode 10.2';
@override
int get majorVersion => 10;
@override
int get minorVersion => 2;
@override
void cleanWorkspace(String workspacePath, String scheme) {
}
@override
Future<XcodeProjectInfo> getInfo(String projectPath, {String projectFilename}) async {
return XcodeProjectInfo(
<String>['Runner'],
<String>['Debug', 'Release'],
<String>['Runner'],
);
}
}
...@@ -435,7 +435,7 @@ Could not build the precompiled application for the device.''', ...@@ -435,7 +435,7 @@ Could not build the precompiled application for the device.''',
final MockFile pbxprojFile = MockFile(); final MockFile pbxprojFile = MockFile();
when(project.xcodeProjectInfoFile).thenReturn(pbxprojFile); when(project.xcodeProjectInfoFile).thenReturn(pbxprojFile);
when(project.hostAppBundleName).thenAnswer((_) => Future<String>.value('UnitTestRunner.app')); when(project.hostAppBundleName).thenReturn('UnitTestRunner.app');
when(pbxprojFile.readAsLinesSync()) when(pbxprojFile.readAsLinesSync())
.thenAnswer((_) => flutterAssetPbxProjLines); .thenAnswer((_) => flutterAssetPbxProjLines);
when(pbxprojFile.existsSync()) when(pbxprojFile.existsSync())
......
...@@ -344,9 +344,9 @@ void main() { ...@@ -344,9 +344,9 @@ void main() {
when(mockProcess.stdout) when(mockProcess.stdout)
.thenAnswer((Invocation invocation) { .thenAnswer((Invocation invocation) {
return Stream<List<int>>.fromIterable(<List<int>>[''' return Stream<List<int>>.fromIterable(<List<int>>['''
2017-09-13 15:26:57.228948-0700 localhost My Super Awesome App[37195]: (Flutter) Observatory listening on http://127.0.0.1:57701/ 2017-09-13 15:26:57.228948-0700 localhost Runner[37195]: (Flutter) Observatory listening on http://127.0.0.1:57701/
2017-09-13 15:26:57.228948-0700 localhost My Super Awesome App[37195]: (Flutter) )))))))))) 2017-09-13 15:26:57.228948-0700 localhost Runner[37195]: (Flutter) ))))))))))
2017-09-13 15:26:57.228948-0700 localhost My Super Awesome App[37195]: (Flutter) #0 Object.noSuchMethod (dart:core-patch/dart:core/object_patch.dart:46)''' 2017-09-13 15:26:57.228948-0700 localhost Runner[37195]: (Flutter) #0 Object.noSuchMethod (dart:core-patch/dart:core/object_patch.dart:46)'''
.codeUnits]); .codeUnits]);
}); });
when(mockProcess.stderr) when(mockProcess.stderr)
......
...@@ -408,39 +408,6 @@ apply plugin: 'kotlin-android' ...@@ -408,39 +408,6 @@ apply plugin: 'kotlin-android'
}); });
}); });
group('application bundle name', () {
MemoryFileSystem fs;
MockXcodeProjectInterpreter mockXcodeProjectInterpreter;
setUp(() {
fs = MemoryFileSystem();
mockXcodeProjectInterpreter = MockXcodeProjectInterpreter();
});
testUsingContext('app product name defaults to Runner.app', () async {
final FlutterProject project = await someProject();
expect(await project.ios.hostAppBundleName, 'Runner.app');
}, overrides: <Type, Generator>{
FileSystem: () => fs,
ProcessManager: () => FakeProcessManager.any(),
XcodeProjectInterpreter: () => mockXcodeProjectInterpreter
});
testUsingContext('app product name xcodebuild settings', () async {
final FlutterProject project = await someProject();
when(mockXcodeProjectInterpreter.getBuildSettings(any, any)).thenAnswer((_) {
return Future<Map<String,String>>.value(<String, String>{
'FULL_PRODUCT_NAME': 'My App.app'
});
});
expect(await project.ios.hostAppBundleName, 'My App.app');
}, overrides: <Type, Generator>{
FileSystem: () => fs,
ProcessManager: () => FakeProcessManager.any(),
XcodeProjectInterpreter: () => mockXcodeProjectInterpreter
});
});
group('organization names set', () { group('organization names set', () {
testInMemory('is empty, if project not created', () async { testInMemory('is empty, if project not created', () async {
final FlutterProject project = await someProject(); final FlutterProject project = await someProject();
......
...@@ -40,7 +40,7 @@ class MockApplicationPackageStore extends ApplicationPackageStore { ...@@ -40,7 +40,7 @@ class MockApplicationPackageStore extends ApplicationPackageStore {
versionCode: 1, versionCode: 1,
launchActivity: 'io.flutter.android.mock.MockActivity', launchActivity: 'io.flutter.android.mock.MockActivity',
), ),
iOS: BuildableIOSApp(MockIosProject(), MockIosProject.bundleId, MockIosProject.appBundleName), iOS: BuildableIOSApp(MockIosProject(), MockIosProject.bundleId),
); );
} }
...@@ -519,13 +519,12 @@ class MockPollingDeviceDiscovery extends PollingDeviceDiscovery { ...@@ -519,13 +519,12 @@ class MockPollingDeviceDiscovery extends PollingDeviceDiscovery {
class MockIosProject extends Mock implements IosProject { class MockIosProject extends Mock implements IosProject {
static const String bundleId = 'com.example.test'; static const String bundleId = 'com.example.test';
static const String appBundleName = 'My Super Awesome App.app';
@override @override
Future<String> get productBundleIdentifier async => bundleId; Future<String> get productBundleIdentifier async => bundleId;
@override @override
Future<String> get hostAppBundleName async => appBundleName; String get hostAppBundleName => 'Runner.app';
} }
class MockAndroidDevice extends Mock implements AndroidDevice { class MockAndroidDevice extends Mock implements AndroidDevice {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment