提交 9b16addf 编写于 作者: C Chinmay Garde

Allow loading SkyX files on Mac desktop

上级 20483160
...@@ -87,6 +87,10 @@ template("resource_copy_mac") { ...@@ -87,6 +87,10 @@ template("resource_copy_mac") {
set_sources_assignment_filter([]) set_sources_assignment_filter([])
sources = _resources sources = _resources
outputs = [ "$root_build_dir/$_app_name.app/$_bundle_directory/Contents/Resources/{{source_file_part}}" ] outputs = [ "$root_build_dir/$_app_name.app/$_bundle_directory/Contents/Resources/{{source_file_part}}" ]
if (defined(invoker.deps)) {
deps = invoker.deps
}
} }
} }
...@@ -147,14 +151,14 @@ template("mac_app") { ...@@ -147,14 +151,14 @@ template("mac_app") {
script = mac_app_script script = mac_app_script
sources = [ invoker.info_plist ] sources = [ invoker.info_plist ]
outputs = [ "$root_build_dir/Info.plist" ] outputs = [ "$root_build_dir/plist/$app_name/Info.plist" ]
args = [ args = [
"plist", "plist",
"-i", "-i",
rebase_path(invoker.info_plist, root_build_dir), rebase_path(invoker.info_plist, root_build_dir),
"-o", "-o",
rebase_path(root_build_dir), rebase_path("$root_build_dir/plist/$app_name"),
] ]
} }
...@@ -163,7 +167,7 @@ template("mac_app") { ...@@ -163,7 +167,7 @@ template("mac_app") {
copy_plist_gen_target_name = target_name + "_plist_copy" copy_plist_gen_target_name = target_name + "_plist_copy"
copy(copy_plist_gen_target_name) { copy(copy_plist_gen_target_name) {
sources = [ sources = [
"$root_build_dir/Info.plist", "$root_build_dir/plist/$app_name/Info.plist",
] ]
outputs = [ outputs = [
......
...@@ -7,7 +7,7 @@ import("//sky/build/skyx.gni") ...@@ -7,7 +7,7 @@ import("//sky/build/skyx.gni")
template("sky_app") { template("sky_app") {
skyx_target_name = target_name skyx_target_name = target_name
if (is_android || is_ios) { if (is_android || is_ios || is_mac) {
skyx_target_name = "app" skyx_target_name = "app"
} }
...@@ -113,7 +113,9 @@ template("sky_app") { ...@@ -113,7 +113,9 @@ template("sky_app") {
"$target_gen_dir/app.skyx", "$target_gen_dir/app.skyx",
] ]
resources += invoker.launcher_resources if (defined(invoker.launcher_resources)) {
resources += invoker.launcher_resources
}
bundle_directory = "." bundle_directory = "."
deps = [ ":app" ] deps = [ ":app" ]
...@@ -129,7 +131,41 @@ template("sky_app") { ...@@ -129,7 +131,41 @@ template("sky_app") {
deps += invoker.deps deps += invoker.deps
} }
} }
} else if(is_ios) { } else if(is_mac && defined(invoker.info_plist)) {
import("//build/config/mac/rules.gni")
mac_app(target_name) {
app_name = target_name + "_app"
info_plist = invoker.info_plist
xibs = invoker.xibs
resources_gen_target_name = target_name + "_res"
resource_copy_mac(resources_gen_target_name) {
resources = [
"//third_party/icu/android/icudtl.dat",
"$target_gen_dir/app.skyx",
]
if (defined(invoker.launcher_resources)) {
resources += invoker.launcher_resources
}
bundle_directory = "."
deps = [ ":app" ]
}
deps = [
":$resources_gen_target_name",
"//sky/shell:mac_scaffolding",
]
if (defined(invoker.deps)) {
deps += invoker.deps
}
}
} else if(is_ios || is_mac) {
# No Info.plist specified. But we still need an empty target # No Info.plist specified. But we still need an empty target
group(target_name) { group(target_name) {
} }
......
...@@ -21,5 +21,8 @@ sky_app("game") { ...@@ -21,5 +21,8 @@ sky_app("game") {
"assets/Icon@2x.png", "assets/Icon@2x.png",
"ios/LaunchScreen.storyboardc", "ios/LaunchScreen.storyboardc",
] ]
} else if (is_mac) {
info_plist = "mac/Info.plist"
xibs = [ "mac/sky_mac.xib" ]
} }
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>game_app</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>org.domokit.sky.asteroids</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Asteroids</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>10.6</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2015 The Chromium Authors. All rights reserved.</string>
<key>NSMainNibFile</key>
<string>sky_mac</string>
<key>NSPrincipalClass</key>
<string>SkyApplication</string>
</dict>
</plist>
此差异已折叠。
...@@ -235,10 +235,34 @@ if (is_android) { ...@@ -235,10 +235,34 @@ if (is_android) {
} else if (is_mac) { } else if (is_mac) {
import("//build/config/mac/rules.gni") import("//build/config/mac/rules.gni")
source_set("mac_scaffolding") {
sources = [
"mac/main_mac.mm",
"mac/platform_mac.h",
"mac/platform_mac.mm",
"mac/platform_service_provider_mac.cc",
"mac/platform_view_mac.h",
"mac/platform_view_mac.mm",
"mac/sky_app_delegate.h",
"mac/sky_app_delegate.m",
"mac/sky_application.h",
"mac/sky_application.mm",
"mac/sky_window.h",
"mac/sky_window.mm",
"testing/test_runner.cc",
"testing/test_runner.h",
]
deps = common_deps + [
":common",
"//sky/services/ns_net",
"//sky/services/testing:interfaces",
]
}
mac_app("shell") { mac_app("shell") {
app_name = "SkyShell" app_name = "SkyShell"
info_plist = "mac/Info.plist" info_plist = "mac/Info.plist"
scaffolding_target = "mac_scaffolding"
# entitlements_path = "" # entitlements_path = ""
# code_signing_identity = "" # code_signing_identity = ""
...@@ -250,33 +274,8 @@ if (is_android) { ...@@ -250,33 +274,8 @@ if (is_android) {
bundle_directory = "." bundle_directory = "."
} }
source_set(scaffolding_target) {
sources = [
"mac/main_mac.mm",
"mac/platform_mac.h",
"mac/platform_mac.mm",
"mac/platform_service_provider_mac.cc",
"mac/platform_view_mac.h",
"mac/platform_view_mac.mm",
"mac/sky_app_delegate.h",
"mac/sky_app_delegate.m",
"mac/sky_application.h",
"mac/sky_application.mm",
"mac/sky_window.h",
"mac/sky_window.mm",
"testing/test_runner.cc",
"testing/test_runner.h",
]
deps = common_deps + [
":common",
"//sky/services/ns_net",
"//sky/services/testing:interfaces",
]
}
deps = [ deps = [
":$scaffolding_target", ":mac_scaffolding",
":sky_resources", ":sky_resources",
] ]
} }
......
...@@ -70,12 +70,29 @@ static inline sky::EventType EventTypeFromNSEventPhase(NSEventPhase phase) { ...@@ -70,12 +70,29 @@ static inline sky::EventType EventTypeFromNSEventPhase(NSEventPhase phase) {
.infoDictionary objectForKey:@"org.domokit.sky.load_url"]; .infoDictionary objectForKey:@"org.domokit.sky.load_url"];
} }
- (NSString*)skyInitialBundleURL {
return [[NSBundle mainBundle] pathForResource:@"app" ofType:@"skyx"];
}
- (void)setupAndLoadDart { - (void)setupAndLoadDart {
auto interface_request = mojo::GetProxy(&_sky_engine); auto interface_request = mojo::GetProxy(&_sky_engine);
self.platformView->ConnectToEngine(interface_request.Pass()); self.platformView->ConnectToEngine(interface_request.Pass());
mojo::String string(self.skyInitialLoadURL.UTF8String); NSString *endpoint = self.skyInitialBundleURL;
_sky_engine->RunFromNetwork(string); if (endpoint.length > 0) {
// Load from bundle
mojo::String string(endpoint.UTF8String);
_sky_engine->RunFromBundle(string);
return;
}
endpoint = self.skyInitialLoadURL;
if (endpoint.length > 0) {
// Load from URL
mojo::String string(endpoint.UTF8String);
_sky_engine->RunFromNetwork(string);
return;
}
} }
- (void)windowDidResize:(NSNotification*)notification { - (void)windowDidResize:(NSNotification*)notification {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册