Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
c8c55b40
Unverified
Commit
c8c55b40
authored
4 years ago
by
Jenn Magder
Committed by
GitHub
4 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Check Xcode build setting FULL_PRODUCT_NAME for bundle name (#55799)
parent
741ef919
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
316 additions
and
219 deletions
+316
-219
deploy_gallery.sh
dev/bots/deploy_gallery.sh
+4
-4
perf_tests.dart
dev/devicelab/lib/tasks/perf_tests.dart
+9
-1
project.pbxproj
...ests/flutter_gallery/ios/Runner.xcodeproj/project.pbxproj
+6
-6
Runner.xcscheme
...s/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+6
-10
Info.plist
dev/integration_tests/flutter_gallery/ios/Runner/Info.plist
+1
-1
application_package.dart
packages/flutter_tools/lib/src/application_package.dart
+9
-5
mac.dart
packages/flutter_tools/lib/src/ios/mac.dart
+1
-1
simulators.dart
packages/flutter_tools/lib/src/ios/simulators.dart
+11
-7
project.dart
packages/flutter_tools/lib/src/project.dart
+43
-19
ios_device_start_nonprebuilt_test.dart
.../general.shard/ios/ios_device_start_nonprebuilt_test.dart
+175
-150
mac_test.dart
packages/flutter_tools/test/general.shard/ios/mac_test.dart
+1
-1
simulators_test.dart
...flutter_tools/test/general.shard/ios/simulators_test.dart
+14
-12
project_test.dart
packages/flutter_tools/test/general.shard/project_test.dart
+33
-0
mocks.dart
packages/flutter_tools/test/src/mocks.dart
+3
-2
No files found.
dev/bots/deploy_gallery.sh
View file @
c8c55b40
...
...
@@ -73,15 +73,15 @@ elif [[ "$OS" == "darwin" ]]; then
exit
1
fi
if
[[
!
-d
"build/ios/iphoneos/
Runner
.app/Frameworks/App.framework/flutter_assets"
]]
;
then
if
[[
!
-d
"build/ios/iphoneos/
Flutter Gallery
.app/Frameworks/App.framework/flutter_assets"
]]
;
then
echo
"Error: flutter_assets not assembled"
exit
1
fi
if
[[
-d
"build/ios/iphoneos/
Runner
.app/Frameworks/App.framework/flutter_assets/isolate_snapshot_data"
||
-d
"build/ios/iphoneos/
Runner
.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin"
||
-d
"build/ios/iphoneos/
Runner
.app/Frameworks/App.framework/flutter_assets/vm_snapshot_data"
-d
"build/ios/iphoneos/
Flutter Gallery
.app/Frameworks/App.framework/flutter_assets/isolate_snapshot_data"
||
-d
"build/ios/iphoneos/
Flutter Gallery
.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin"
||
-d
"build/ios/iphoneos/
Flutter Gallery
.app/Frameworks/App.framework/flutter_assets/vm_snapshot_data"
]]
;
then
echo
"Error: compiled debug version of app with --release flag"
exit
1
...
...
This diff is collapsed.
Click to expand it.
dev/devicelab/lib/tasks/perf_tests.dart
View file @
c8c55b40
...
...
@@ -451,7 +451,15 @@ class CompileTest {
watch
.
start
();
await
flutter
(
'build'
,
options:
options
);
watch
.
stop
();
final
String
appPath
=
'
$cwd
/build/ios/Release-iphoneos/Runner.app/'
;
final
Directory
appBuildDirectory
=
dir
(
path
.
join
(
cwd
,
'build/ios/Release-iphoneos'
));
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/
await
exec
(
'tar'
,
<
String
>[
'-zcf'
,
'build/app.ipa'
,
appPath
]);
releaseSizeInBytes
=
await
file
(
'
$cwd
/build/app.ipa'
).
length
();
...
...
This diff is collapsed.
Click to expand it.
dev/integration_tests/flutter_gallery/ios/Runner.xcodeproj/project.pbxproj
View file @
c8c55b40
...
...
@@ -40,7 +40,7 @@
7AFFD8EE1D35381100E5BB4D
/* AppDelegate.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
AppDelegate.m
;
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>"
;
};
97C146EE1CF9000F007C117D
/*
Runner.app */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.application
;
includeInIndex
=
0
;
path
=
Runner.app
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
97C146EE1CF9000F007C117D
/*
Flutter Gallery.app */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.application
;
includeInIndex
=
0
;
path
=
"Flutter Gallery.app"
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
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>"
;
};
97C146FD1CF9000F007C117D
/* Assets.xcassets */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
folder.assetcatalog
;
path
=
Assets.xcassets
;
sourceTree
=
"<group>"
;
};
...
...
@@ -88,7 +88,7 @@
97C146EF1CF9000F007C117D
/* Products */
=
{
isa
=
PBXGroup
;
children
=
(
97C146EE1CF9000F007C117D
/*
Runner
.app */
,
97C146EE1CF9000F007C117D
/*
Flutter Gallery
.app */
,
);
name
=
Products
;
sourceTree
=
"<group>"
;
...
...
@@ -157,7 +157,7 @@
);
name
=
Runner
;
productName
=
Runner
;
productReference
=
97C146EE1CF9000F007C117D
/*
Runner
.app */
;
productReference
=
97C146EE1CF9000F007C117D
/*
Flutter Gallery
.app */
;
productType
=
"com.apple.product-type.application"
;
};
/* End PBXNativeTarget section */
...
...
@@ -369,7 +369,7 @@
"$(PROJECT_DIR)/Flutter"
,
);
PRODUCT_BUNDLE_IDENTIFIER
=
io.flutter.examples.gallery
;
PRODUCT_NAME
=
"
$(TARGET_NAME)
"
;
PRODUCT_NAME
=
"
Flutter Gallery
"
;
};
name
=
Profile
;
};
...
...
@@ -494,7 +494,7 @@
"$(PROJECT_DIR)/Flutter"
,
);
PRODUCT_BUNDLE_IDENTIFIER
=
io.flutter.examples.gallery
;
PRODUCT_NAME
=
"
$(TARGET_NAME)
"
;
PRODUCT_NAME
=
"
Flutter Gallery
"
;
};
name
=
Debug
;
};
...
...
@@ -515,7 +515,7 @@
"$(PROJECT_DIR)/Flutter"
,
);
PRODUCT_BUNDLE_IDENTIFIER
=
io.flutter.examples.gallery
;
PRODUCT_NAME
=
"
$(TARGET_NAME)
"
;
PRODUCT_NAME
=
"
Flutter Gallery
"
;
};
name
=
Release
;
};
...
...
This diff is collapsed.
Click to expand it.
dev/integration_tests/flutter_gallery/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
View file @
c8c55b40
...
...
@@ -15,7 +15,7 @@
<BuildableReference
BuildableIdentifier =
"primary"
BlueprintIdentifier =
"97C146ED1CF9000F007C117D"
BuildableName =
"
Runner
.app"
BuildableName =
"
Flutter Gallery
.app"
BlueprintName =
"Runner"
ReferencedContainer =
"container:Runner.xcodeproj"
>
</BuildableReference>
...
...
@@ -27,19 +27,17 @@
selectedDebuggerIdentifier =
"Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier =
"Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv =
"YES"
>
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier =
"primary"
BlueprintIdentifier =
"97C146ED1CF9000F007C117D"
BuildableName =
"
Runner
.app"
BuildableName =
"
Flutter Gallery
.app"
BlueprintName =
"Runner"
ReferencedContainer =
"container:Runner.xcodeproj"
>
</BuildableReference>
</MacroExpansion>
<
AdditionalOption
s>
</
AdditionalOption
s>
<
Testable
s>
</
Testable
s>
</TestAction>
<LaunchAction
buildConfiguration =
"Debug"
...
...
@@ -56,13 +54,11 @@
<BuildableReference
BuildableIdentifier =
"primary"
BlueprintIdentifier =
"97C146ED1CF9000F007C117D"
BuildableName =
"
Runner
.app"
BuildableName =
"
Flutter Gallery
.app"
BlueprintName =
"Runner"
ReferencedContainer =
"container:Runner.xcodeproj"
>
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration =
"Profile"
...
...
@@ -75,7 +71,7 @@
<BuildableReference
BuildableIdentifier =
"primary"
BlueprintIdentifier =
"97C146ED1CF9000F007C117D"
BuildableName =
"
Runner
.app"
BuildableName =
"
Flutter Gallery
.app"
BlueprintName =
"Runner"
ReferencedContainer =
"container:Runner.xcodeproj"
>
</BuildableReference>
...
...
This diff is collapsed.
Click to expand it.
dev/integration_tests/flutter_gallery/ios/Runner/Info.plist
View file @
c8c55b40
...
...
@@ -11,7 +11,7 @@
<
k
e
y
>
CFBundleInfoDictionaryVersion
<
/k
e
y
>
<
string
>
6.0
<
/string
>
<
k
e
y
>
CFBundleName
<
/k
e
y
>
<
string
>
Flutter
Gallery
<
/string
>
<
string
>
$
(
PRODUCT_NAME
)
<
/string
>
<
k
e
y
>
CFBundlePackageType
<
/k
e
y
>
<
string
>
APPL
<
/string
>
<
k
e
y
>
CFBundleShortVersionString
<
/k
e
y
>
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/lib/src/application_package.dart
View file @
c8c55b40
...
...
@@ -357,18 +357,22 @@ abstract class IOSApp extends ApplicationPackage {
}
class
BuildableIOSApp
extends
IOSApp
{
BuildableIOSApp
(
this
.
project
,
String
projectBundleId
)
:
super
(
projectBundleId:
projectBundleId
);
BuildableIOSApp
(
this
.
project
,
String
projectBundleId
,
String
hostAppBundleName
)
:
_hostAppBundleName
=
hostAppBundleName
,
super
(
projectBundleId:
projectBundleId
);
static
Future
<
BuildableIOSApp
>
fromProject
(
IosProject
project
)
async
{
final
String
projectBundleId
=
await
project
.
productBundleIdentifier
;
return
BuildableIOSApp
(
project
,
projectBundleId
);
final
String
hostAppBundleName
=
await
project
.
hostAppBundleName
;
return
BuildableIOSApp
(
project
,
projectBundleId
,
hostAppBundleName
);
}
final
IosProject
project
;
final
String
_hostAppBundleName
;
@override
String
get
name
=>
project
.
hostAppBundleName
;
String
get
name
=>
_
hostAppBundleName
;
@override
String
get
simulatorBundlePath
=>
_buildAppPath
(
'iphonesimulator'
);
...
...
@@ -377,7 +381,7 @@ class BuildableIOSApp extends IOSApp {
String
get
deviceBundlePath
=>
_buildAppPath
(
'iphoneos'
);
String
_buildAppPath
(
String
type
)
{
return
globals
.
fs
.
path
.
join
(
getIosBuildDirectory
(),
type
,
n
ame
);
return
globals
.
fs
.
path
.
join
(
getIosBuildDirectory
(),
type
,
_hostAppBundleN
ame
);
}
}
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/lib/src/ios/mac.dart
View file @
c8c55b40
...
...
@@ -632,7 +632,7 @@ bool upgradePbxProjWithFlutterAssets(IosProject project, Logger logger) {
final
Match
match
=
oldAssets
.
firstMatch
(
line
);
if
(
match
!=
null
)
{
if
(
printedStatuses
.
add
(
match
.
group
(
1
)))
{
logger
.
printStatus
(
'Removing obsolete reference to
${match.group(1)}
from
${project.
hostAppBundleN
ame}
'
);
logger
.
printStatus
(
'Removing obsolete reference to
${match.group(1)}
from
${project.
xcodeProject?.basen
ame}
'
);
}
}
else
{
buffer
.
writeln
(
line
);
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/lib/src/ios/simulators.dart
View file @
c8c55b40
...
...
@@ -685,7 +685,7 @@ class _IOSSimulatorLogReader extends DeviceLogReader {
// Match the log prefix (in order to shorten it):
// * Xcode 8: Sep 13 15:28:51 cbracken-macpro localhost Runner[37195]: (Flutter) Observatory listening on http://127.0.0.1:57701/
// * 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+\]\)?: (\(.*?\))? *(.*)$'
);
static
final
RegExp
_mapRegex
=
RegExp
(
r'\S+ +\S+ +
(?:\S+) (.+?(?=\[)
)\[\d+\]\)?: (\(.*?\))? *(.*)$'
);
// Jan 31 19:23:28 --- last message repeated 1 time ---
static
final
RegExp
_lastMessageSingleRegex
=
RegExp
(
r'\S+ +\S+ +\S+ --- last message repeated 1 time ---$'
);
...
...
@@ -700,12 +700,16 @@ class _IOSSimulatorLogReader extends DeviceLogReader {
String
_filterDeviceLine
(
String
string
)
{
final
Match
match
=
_mapRegex
.
matchAsPrefix
(
string
);
if
(
match
!=
null
)
{
final
String
category
=
match
.
group
(
2
);
final
String
tag
=
match
.
group
(
3
);
final
String
content
=
match
.
group
(
4
);
// Filter out non-Flutter originated noise from the engine.
if
(
_appName
!=
null
&&
category
!=
_appName
)
{
// The category contains the text between the date and the PID. Depending on which version of iOS being run,
// it can contain "hostname App Name" or just "App Name".
final
String
category
=
match
.
group
(
1
);
final
String
tag
=
match
.
group
(
2
);
final
String
content
=
match
.
group
(
3
);
// Filter out log lines from an app other than this one (category doesn't match the app name).
// If the hostname is included in the category, check that it doesn't end with the app name.
if
(
_appName
!=
null
&&
!
category
.
endsWith
(
_appName
))
{
return
null
;
}
...
...
@@ -725,7 +729,7 @@ class _IOSSimulatorLogReader extends DeviceLogReader {
if
(
_appName
==
null
)
{
return
'
$category
:
$content
'
;
}
else
if
(
category
==
_appName
)
{
}
else
if
(
category
==
_appName
||
category
.
endsWith
(
'
$_appName
'
)
)
{
return
content
;
}
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/lib/src/project.dart
View file @
c8c55b40
...
...
@@ -341,7 +341,7 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
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 _hostApp
Bundle
Name = '
Runner
';
static const String _hostApp
Project
Name = '
Runner
';
Directory get ephemeralDirectory => parent.directory.childDirectory('
.
ios
');
Directory get _editableDirectory => parent.directory.childDirectory('
ios
');
...
...
@@ -362,9 +362,6 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
/// 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 a module project.
bool get isModule => parent.isModule;
...
...
@@ -387,19 +384,19 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
File get podManifestLock => hostAppRoot.childDirectory('
Pods
').childFile('
Manifest
.
lock
');
/// The default '
Info
.
plist
' file of the host app. The developer can change this location in Xcode.
File get defaultHostInfoPlist => hostAppRoot.childDirectory(_hostApp
Bundle
Name).childFile('
Info
.
plist
');
File get defaultHostInfoPlist => hostAppRoot.childDirectory(_hostApp
Project
Name).childFile('
Info
.
plist
');
@override
Directory get symlinks => _flutterLibRoot.childDirectory('
.
symlinks
');
@override
Directory get xcodeProject => hostAppRoot.childDirectory('
$_hostApp
Bundle
Name
.
xcodeproj
');
Directory get xcodeProject => hostAppRoot.childDirectory('
$_hostApp
Project
Name
.
xcodeproj
');
@override
File get xcodeProjectInfoFile => xcodeProject.childFile('
project
.
pbxproj
');
@override
Directory get xcodeWorkspace => hostAppRoot.childDirectory('
$_hostApp
Bundle
Name
.
xcworkspace
');
Directory get xcodeWorkspace => hostAppRoot.childDirectory('
$_hostApp
Project
Name
.
xcworkspace
');
/// Xcode workspace shared data directory for the host app.
Directory get xcodeWorkspaceSharedData => xcodeWorkspace.childDirectory('
xcshareddata
');
...
...
@@ -414,7 +411,11 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
/// The product bundle identifier of the host app, or null if not set or if
/// iOS tooling needed to read it is not installed.
Future<String> get productBundleIdentifier async {
Future<String> get productBundleIdentifier async =>
_productBundleIdentifier ??= await _parseProductBundleIdentifier();
String _productBundleIdentifier;
Future<String> _parseProductBundleIdentifier() async {
String fromPlist;
final File defaultInfoPlist = defaultHostInfoPlist;
// Users can change the location of the Info.plist.
...
...
@@ -456,28 +457,51 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
return null;
}
/// The bundle name of the host app, `My App.app`.
Future<String> get hostAppBundleName async =>
_hostAppBundleName ??= await _parseHostAppBundleName();
String _hostAppBundleName;
Future<String> _parseHostAppBundleName() 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
// The only source of truth for the name is Xcode'
s
interpretation
of
the
build
settings
.
String
productName
;
if
(
globals
.
xcodeProjectInterpreter
.
isInstalled
)
{
final
Map
<
String
,
String
>
xcodeBuildSettings
=
await
buildSettings
;
if
(
xcodeBuildSettings
!=
null
)
{
productName
=
xcodeBuildSettings
[
'FULL_PRODUCT_NAME'
];
}
}
if
(
productName
==
null
)
{
globals
.
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.
///
/// Returns null, if iOS tooling is unavailable.
Future<Map<String, String>> get buildSettings async {
Future
<
Map
<
String
,
String
>>
get
buildSettings
async
=>
_buildSettings
??=
await
_xcodeProjectBuildSettings
();
Map
<
String
,
String
>
_buildSettings
;
Future
<
Map
<
String
,
String
>>
_xcodeProjectBuildSettings
()
async
{
if
(!
globals
.
xcodeProjectInterpreter
.
isInstalled
)
{
return
null
;
}
Map<String, String> buildSettings = _buildSettings;
buildSettings ??= await globals.xcodeProjectInterpreter.getBuildSettings(
final
Map
<
String
,
String
>
buildSettings
=
await
globals
.
xcodeProjectInterpreter
.
getBuildSettings
(
xcodeProject
.
path
,
_hostApp
Bundle
Name,
_hostApp
Project
Name
,
);
if
(
buildSettings
!=
null
&&
buildSettings
.
isNotEmpty
)
{
// No timeouts, flakes, or errors.
_buildSettings = buildSettings;
return
buildSettings
;
}
return
null
;
}
Map<String, String> _buildSettings;
Future
<
void
>
ensureReadyForPlatformSpecificTooling
()
async
{
await
_regenerateFromTemplateIfNeeded
();
if
(!
_flutterLibRoot
.
existsSync
())
{
...
...
@@ -614,7 +638,7 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
?
_flutterLibRoot
.
childDirectory
(
'Flutter'
)
.
childDirectory
(
'FlutterPluginRegistrant'
)
:
hostAppRoot
.
childDirectory
(
_hostApp
Bundle
Name
);
:
hostAppRoot
.
childDirectory
(
_hostApp
Project
Name
);
}
Future
<
void
>
_overwriteFromTemplate
(
String
path
,
Directory
target
)
async
{
...
...
@@ -888,7 +912,7 @@ class MacOSProject extends FlutterProjectPlatform implements XcodeBasedProject {
@override
String
get
pluginConfigKey
=>
MacOSPlugin
.
kConfigKey
;
static
const
String
_hostApp
Bundle
Name
=
'Runner'
;
static
const
String
_hostApp
Project
Name
=
'Runner'
;
@override
bool
existsSync
()
=>
_macOSDirectory
.
existsSync
();
...
...
@@ -932,13 +956,13 @@ class MacOSProject extends FlutterProjectPlatform implements XcodeBasedProject {
File
get
podManifestLock
=>
_macOSDirectory
.
childDirectory
(
'Pods'
).
childFile
(
'Manifest.lock'
);
@override
Directory
get
xcodeProject
=>
_macOSDirectory
.
childDirectory
(
'
$_hostApp
Bundle
Name
.xcodeproj'
);
Directory
get
xcodeProject
=>
_macOSDirectory
.
childDirectory
(
'
$_hostApp
Project
Name
.xcodeproj'
);
@override
File
get
xcodeProjectInfoFile
=>
xcodeProject
.
childFile
(
'project.pbxproj'
);
@override
Directory
get
xcodeWorkspace
=>
_macOSDirectory
.
childDirectory
(
'
$_hostApp
Bundle
Name
.xcworkspace'
);
Directory
get
xcodeWorkspace
=>
_macOSDirectory
.
childDirectory
(
'
$_hostApp
Project
Name
.xcworkspace'
);
@override
Directory
get
symlinks
=>
ephemeralDirectory
.
childDirectory
(
'.symlinks'
);
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/general.shard/ios/ios_device_start_nonprebuilt_test.dart
View file @
c8c55b40
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/general.shard/ios/mac_test.dart
View file @
c8c55b40
...
...
@@ -396,7 +396,7 @@ Exited (sigterm)''',
final MockFile pbxprojFile = MockFile();
when(project.xcodeProjectInfoFile).thenReturn(pbxprojFile);
when(project.hostAppBundleName).then
Return('UnitTestRunner.app'
);
when(project.hostAppBundleName).then
Answer((_) => Future<String>.value('UnitTestRunner.app')
);
when(pbxprojFile.readAsLinesSync())
.thenAnswer((_) => flutterAssetPbxProjLines);
when(pbxprojFile.existsSync())
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/general.shard/ios/simulators_test.dart
View file @
c8c55b40
...
...
@@ -452,10 +452,10 @@ void main() {
simControl:
mockSimControl
,
xcode:
mockXcode
,
);
await
launchDeviceUnifiedLogging
(
device
,
'
Runner
'
);
await
launchDeviceUnifiedLogging
(
device
,
'
My Super Awesome App
'
);
const
String
expectedPredicate
=
'eventType = logEvent AND '
'processImagePath ENDSWITH "
Runner
" AND '
'processImagePath ENDSWITH "
My Super Awesome App
" AND '
'(senderImagePath ENDSWITH "/Flutter" OR senderImagePath ENDSWITH "/libswiftCore.dylib" OR processImageUUID == senderImageUUID) AND '
'NOT(eventMessage CONTAINS ": could not find icon for representation -> com.apple.") AND '
'NOT(eventMessage BEGINSWITH "assertion failed: ") AND '
...
...
@@ -539,7 +539,9 @@ void main() {
fakeProcessManager
..
addCommand
(
const
FakeCommand
(
command:
<
String
>[
'tail'
,
'-n'
,
'0'
,
'-F'
,
'system.log'
],
stdout:
'Dec 20 17:04:32 md32-11-vm1 Runner[88374]: flutter: Observatory listening on http://127.0.0.1:64213/1Uoeu523990=/'
,
stdout:
'''
Dec 20 17:04:32 md32-11-vm1 My Super Awesome App[88374]: flutter: Observatory listening on http://127.0.0.1:64213/1Uoeu523990=/
Dec 20 17:04:32 md32-11-vm1 Another App[88374]: Ignore this text'''
))
..
addCommand
(
const
FakeCommand
(
command:
<
String
>[
'tail'
,
'-n'
,
'0'
,
'-F'
,
'/private/var/log/system.log'
]
...
...
@@ -571,9 +573,9 @@ void main() {
..
addCommand
(
const
FakeCommand
(
command:
<
String
>[
'tail'
,
'-n'
,
'0'
,
'-F'
,
'system.log'
],
stdout:
'''
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
Runner
[37195]: (Flutter) ))))))))))
2017-09-13 15:26:57.228948-0700 localhost
Runner
[37195]: (Flutter) #0 Object.noSuchMethod (dart:core-patch/dart:core/object_patch.dart:46)'''
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
My Super Awesome App
[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)'''
))
..
addCommand
(
const
FakeCommand
(
command:
<
String
>[
'tail'
,
'-n'
,
'0'
,
'-F'
,
'/private/var/log/system.log'
]
...
...
@@ -607,19 +609,19 @@ void main() {
..
addCommand
(
const
FakeCommand
(
command:
<
String
>[
'tail'
,
'-n'
,
'0'
,
'-F'
,
'system.log'
],
stdout:
'''
2017-09-13 15:26:57.228948-0700 localhost
Runner
[37195]: (Flutter) Single line message
2017-09-13 15:26:57.228948-0700 localhost
Runner
[37195]: (Flutter) Multi line message
2017-09-13 15:26:57.228948-0700 localhost
My Super Awesome App
[37195]: (Flutter) Single line message
2017-09-13 15:26:57.228948-0700 localhost
My Super Awesome App
[37195]: (Flutter) Multi line message
continues...
continues...
2020-03-11 15:58:28.207175-0700 localhost
Runner
[72166]: (libnetwork.dylib) [com.apple.network:] [28 www.googleapis.com:443 stream, pid: 72166, tls] cancelled
2020-03-11 15:58:28.207175-0700 localhost
My Super Awesome App
[72166]: (libnetwork.dylib) [com.apple.network:] [28 www.googleapis.com:443 stream, pid: 72166, tls] cancelled
[28.1 64A98447-EABF-4983-A387-7DB9D0C1785F 10.0.1.200.57912<->172.217.6.74:443]
Connected Path: satisfied (Path is satisfied), interface: en18
Duration: 0.271s, DNS @0.000s took 0.001s, TCP @0.002s took 0.019s, TLS took 0.046s
bytes in/out: 4468/1933, packets in/out: 11/10, rtt: 0.016s, retransmitted packets: 0, out-of-order packets: 0
2017-09-13 15:36:57.228948-0700 localhost
Runner
[37195]: (Flutter) Multi line message again
2017-09-13 15:36:57.228948-0700 localhost
My Super Awesome App
[37195]: (Flutter) Multi line message again
and it goes...
and goes...
2017-09-13 15:36:57.228948-0700 localhost
Runner
[37195]: (Flutter) Single line message, not the part of the above
2017-09-13 15:36:57.228948-0700 localhost
My Super Awesome App
[37195]: (Flutter) Single line message, not the part of the above
'''
))
..
addCommand
(
const
FakeCommand
(
...
...
@@ -657,7 +659,7 @@ void main() {
group
(
'unified logging'
,
()
{
testUsingContext
(
'log reader handles escaped multiline messages'
,
()
async
{
const
String
logPredicate
=
'eventType = logEvent AND processImagePath ENDSWITH "
Runner
" '
const
String
logPredicate
=
'eventType = logEvent AND processImagePath ENDSWITH "
My Super Awesome App
" '
'AND (senderImagePath ENDSWITH "/Flutter" OR senderImagePath ENDSWITH "/libswiftCore.dylib" '
'OR processImageUUID == senderImageUUID) AND NOT(eventMessage CONTAINS ": could not find icon '
'for representation -> com.apple.") AND NOT(eventMessage BEGINSWITH "assertion failed: ") '
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/general.shard/project_test.dart
View file @
c8c55b40
...
...
@@ -466,6 +466,39 @@ 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'
,
()
{
testInMemory
(
'is empty, if project not created'
,
()
async
{
final
FlutterProject
project
=
await
someProject
();
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/src/mocks.dart
View file @
c8c55b40
...
...
@@ -45,7 +45,7 @@ class MockApplicationPackageStore extends ApplicationPackageStore {
versionCode:
1
,
launchActivity:
'io.flutter.android.mock.MockActivity'
,
),
iOS:
BuildableIOSApp
(
MockIosProject
(),
MockIosProject
.
bundleId
),
iOS:
BuildableIOSApp
(
MockIosProject
(),
MockIosProject
.
bundleId
,
MockIosProject
.
appBundleName
),
);
}
...
...
@@ -529,12 +529,13 @@ class MockPollingDeviceDiscovery extends PollingDeviceDiscovery {
class
MockIosProject
extends
Mock
implements
IosProject
{
static
const
String
bundleId
=
'com.example.test'
;
static
const
String
appBundleName
=
'My Super Awesome App.app'
;
@override
Future
<
String
>
get
productBundleIdentifier
async
=>
bundleId
;
@override
String
get
hostAppBundleName
=>
'Runner.app'
;
Future
<
String
>
get
hostAppBundleName
async
=>
appBundleName
;
}
class
MockAndroidDevice
extends
Mock
implements
AndroidDevice
{
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment