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
3e25e60f
Unverified
Commit
3e25e60f
authored
Mar 13, 2020
by
Jonah Williams
Committed by
GitHub
Mar 13, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[flutter_tools]: reland move engine unpack to dart (#52543)
Reland of #50707
parent
ca11bd2d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
146 additions
and
20 deletions
+146
-20
xcode_backend.sh
packages/flutter_tools/bin/xcode_backend.sh
+2
-20
ios.dart
packages/flutter_tools/lib/src/build_system/targets/ios.dart
+70
-0
ios_test.dart
...ols/test/general.shard/build_system/targets/ios_test.dart
+74
-0
No files found.
packages/flutter_tools/bin/xcode_backend.sh
View file @
3e25e60f
...
...
@@ -56,7 +56,6 @@ BuildApp() {
RunCommand
mkdir
-p
--
"
$derived_dir
"
AssertExists
"
$derived_dir
"
RunCommand
rm
-rf
--
"
${
derived_dir
}
/App.framework"
# Default value of assets_path is flutter_assets
local
assets_path
=
"flutter_assets"
...
...
@@ -104,11 +103,8 @@ BuildApp() {
exit
-1
fi
local
framework_path
=
"
${
FLUTTER_ROOT
}
/bin/cache/artifacts/engine/
${
artifact_variant
}
"
local
flutter_engine_flag
=
""
local
local_engine_flag
=
""
local
flutter_framework
=
"
${
framework_path
}
/Flutter.framework"
local
flutter_podspec
=
"
${
framework_path
}
/Flutter.podspec"
if
[[
-n
"
$FLUTTER_ENGINE
"
]]
;
then
flutter_engine_flag
=
"--local-engine-src-path=
${
FLUTTER_ENGINE
}
"
...
...
@@ -128,29 +124,15 @@ BuildApp() {
exit
-1
fi
local_engine_flag
=
"--local-engine=
${
LOCAL_ENGINE
}
"
flutter_framework
=
"
${
FLUTTER_ENGINE
}
/out/
${
LOCAL_ENGINE
}
/Flutter.framework"
flutter_podspec
=
"
${
FLUTTER_ENGINE
}
/out/
${
LOCAL_ENGINE
}
/Flutter.podspec"
fi
RunCommand
pushd
"
${
project_path
}
"
>
/dev/null
local
bitcode_flag
=
""
if
[[
$ENABLE_BITCODE
==
"YES"
]]
;
then
bitcode_flag
=
"true"
fi
# TODO(jonahwilliams): move engine copying to build system.
if
[[
-e
"
${
project_path
}
/.ios"
]]
;
then
RunCommand
rm
-rf
--
"
${
derived_dir
}
/engine"
mkdir
"
${
derived_dir
}
/engine"
RunCommand
cp
-r
--
"
${
flutter_podspec
}
"
"
${
derived_dir
}
/engine"
RunCommand
cp
-r
--
"
${
flutter_framework
}
"
"
${
derived_dir
}
/engine"
else
RunCommand
rm
-rf
--
"
${
derived_dir
}
/Flutter.framework"
RunCommand
cp
--
"
${
flutter_podspec
}
"
"
${
derived_dir
}
"
RunCommand
cp
-r
--
"
${
flutter_framework
}
"
"
${
derived_dir
}
"
fi
RunCommand
pushd
"
${
project_path
}
"
>
/dev/null
local
verbose_flag
=
""
if
[[
-n
"
$VERBOSE_SCRIPT_LOGGING
"
]]
;
then
verbose_flag
=
"--verbose"
...
...
packages/flutter_tools/lib/src/build_system/targets/ios.dart
View file @
3e25e60f
...
...
@@ -19,6 +19,75 @@ import 'assets.dart';
import
'dart.dart'
;
import
'icon_tree_shaker.dart'
;
/// Copy the Flutter.framework and podspec from the engine cache.
class
UnpackIOSEngine
extends
Target
{
const
UnpackIOSEngine
();
@override
List
<
String
>
get
depfiles
=>
<
String
>[
'ios_engine.d'
];
@override
List
<
Target
>
get
dependencies
=>
const
<
Target
>[];
@override
List
<
Source
>
get
inputs
=>
const
<
Source
>[];
@override
String
get
name
=>
'unpack_ios_engine'
;
@override
List
<
Source
>
get
outputs
=>
<
Source
>[];
@override
Future
<
void
>
build
(
Environment
environment
)
async
{
if
(
environment
.
defines
[
kBuildMode
]
==
null
)
{
throw
MissingDefineException
(
kBuildMode
,
'aot_assembly'
);
}
final
FlutterProject
flutterProject
=
FlutterProject
.
current
();
final
BuildMode
buildMode
=
getBuildModeForName
(
environment
.
defines
[
kBuildMode
]);
final
String
iosFramework
=
globals
.
artifacts
.
getArtifactPath
(
Artifact
.
flutterFramework
,
mode:
buildMode
,
platform:
TargetPlatform
.
ios
);
final
String
iosPodfile
=
globals
.
fs
.
directory
(
iosFramework
)
.
parent
.
childFile
(
'Flutter.podspec'
).
path
;
final
List
<
File
>
inputs
=
globals
.
fs
.
directory
(
iosFramework
)
.
listSync
(
recursive:
true
)
.
whereType
<
File
>()
.
toList
()..
add
(
globals
.
fs
.
file
(
iosPodfile
));
Directory
outputDirectory
=
environment
.
outputDir
;
if
(
flutterProject
.
isModule
)
{
outputDirectory
=
environment
.
outputDir
.
childDirectory
(
'engine'
)
..
createSync
(
recursive:
true
);
}
await
globals
.
processManager
.
run
(<
String
>[
'cp'
,
'-r'
,
'--'
,
iosFramework
,
outputDirectory
.
path
,
]);
await
globals
.
processManager
.
run
(<
String
>[
'cp'
,
'-r'
,
'--'
,
iosPodfile
,
outputDirectory
.
path
,
]);
final
List
<
File
>
outputs
=
outputDirectory
.
listSync
(
recursive:
true
)
.
whereType
<
File
>()
.
toList
();
final
DepfileService
depfileService
=
DepfileService
(
logger:
globals
.
logger
,
fileSystem:
globals
.
fs
,
platform:
globals
.
platform
,
);
final
Depfile
depfile
=
Depfile
(
inputs
,
outputs
);
depfileService
.
writeToFile
(
depfile
,
environment
.
buildDir
.
childFile
(
'ios_engine.d'
));
}
}
/// Supports compiling a dart kernel file to an assembly file.
///
/// If more than one iOS arch is provided, then this rule will
...
...
@@ -234,6 +303,7 @@ abstract class IosAssetBundle extends Target {
@override
List
<
Target
>
get
dependencies
=>
const
<
Target
>[
KernelSnapshot
(),
UnpackIOSEngine
(),
];
@override
...
...
packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart
View file @
3e25e60f
...
...
@@ -7,10 +7,12 @@ import 'package:flutter_tools/src/artifacts.dart';
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/build_info.dart'
;
import
'package:flutter_tools/src/build_system/build_system.dart'
;
import
'package:flutter_tools/src/build_system/exceptions.dart'
;
import
'package:flutter_tools/src/build_system/targets/dart.dart'
;
import
'package:flutter_tools/src/build_system/targets/ios.dart'
;
import
'package:flutter_tools/src/globals.dart'
as
globals
;
import
'package:mockito/mockito.dart'
;
import
'package:platform/platform.dart'
;
import
'../../../src/common.dart'
;
import
'../../../src/fake_process_manager.dart'
;
...
...
@@ -42,6 +44,8 @@ void main() {
environment
=
Environment
.
test
(
globals
.
fs
.
currentDirectory
,
defines:
<
String
,
String
>{
kTargetPlatform:
'ios'
,
});
},
overrides:
<
Type
,
Generator
>{
Platform:
()
=>
FakePlatform
(
operatingSystem:
'macos'
,
environment:
const
<
String
,
String
>{}),
});
});
...
...
@@ -160,6 +164,76 @@ void main() {
expect
(
assetDirectory
.
childFile
(
'vm_snapshot_data'
),
isNot
(
exists
));
expect
(
assetDirectory
.
childFile
(
'isolate_snapshot_data'
),
isNot
(
exists
));
}));
test
(
'UnpackIOSEngine throws without build mode'
,
()
=>
testbed
.
run
(()
async
{
expect
(
const
UnpackIOSEngine
().
build
(
environment
),
throwsA
(
isA
<
MissingDefineException
>()));
}));
test
(
'UnpackIOSEngine for regular project'
,
()
=>
testbed
.
run
(()
async
{
environment
.
defines
[
kBuildMode
]
=
getNameForBuildMode
(
BuildMode
.
profile
);
environment
.
outputDir
.
createSync
();
environment
.
buildDir
.
createSync
(
recursive:
true
);
globals
.
fs
.
directory
(
'bin/cache/artifacts/engine/ios-profile/Flutter.framework'
)
.
createSync
(
recursive:
true
);
processManager
=
FakeProcessManager
.
list
(<
FakeCommand
>[
const
FakeCommand
(
command:
<
String
>[
'cp'
,
'-r'
,
'--'
,
'bin/cache/artifacts/engine/ios-profile/Flutter.framework'
,
'/'
,
]),
const
FakeCommand
(
command:
<
String
>[
'cp'
,
'-r'
,
'--'
,
'bin/cache/artifacts/engine/ios-profile/Flutter.podspec'
,
'/'
,
]),
]);
await
const
UnpackIOSEngine
().
build
(
environment
);
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
processManager
,
Platform:
()
=>
FakePlatform
(
operatingSystem:
'macos'
),
}));
test
(
'UnpackIOSEngine for module'
,
()
=>
testbed
.
run
(()
async
{
environment
.
defines
[
kBuildMode
]
=
getNameForBuildMode
(
BuildMode
.
profile
);
environment
.
outputDir
.
createSync
();
environment
.
buildDir
.
createSync
(
recursive:
true
);
globals
.
fs
.
file
(
'bin/cache/artifacts/engine/ios-profile/Flutter.framework/a'
)
..
createSync
(
recursive:
true
)
..
writeAsStringSync
(
'A'
);
globals
.
fs
.
file
(
'pubspec.yaml'
)
.
writeAsStringSync
(
'''
flutter:
module:
androidPackage: com.example.iosadd2appflutter
iosBundleIdentifier: com.example.iosAdd2appFlutter
'''
);
processManager
=
FakeProcessManager
.
list
(<
FakeCommand
>[
const
FakeCommand
(
command:
<
String
>[
'cp'
,
'-r'
,
'--'
,
'bin/cache/artifacts/engine/ios-profile/Flutter.framework'
,
'/engine'
,
]),
const
FakeCommand
(
command:
<
String
>[
'cp'
,
'-r'
,
'--'
,
'bin/cache/artifacts/engine/ios-profile/Flutter.podspec'
,
'/engine'
,
]),
]);
await
const
UnpackIOSEngine
().
build
(
environment
);
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
processManager
,
}));
}
class
MockArtifacts
extends
Mock
implements
Artifacts
{}
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