Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
2cfc2042
E
engine
项目概览
sxychenjing
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
2cfc2042
编写于
7月 23, 2015
作者:
A
Adam Barth
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #241 from abarth/sky_shell_apk
Create a SkyShell.apk
上级
f76a56de
54e3a36c
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
109 addition
and
60 deletion
+109
-60
sky/BUILD.gn
sky/BUILD.gn
+1
-4
sky/dist/BUILD.gn
sky/dist/BUILD.gn
+3
-3
sky/sdk/README.md
sky/sdk/README.md
+3
-3
sky/sdk/example/demo_launcher/apk/BUILD.gn
sky/sdk/example/demo_launcher/apk/BUILD.gn
+0
-4
sky/sdk/example/demo_launcher/apk/org/domokit/sky/demo/SkyDemoApplication.java
...launcher/apk/org/domokit/sky/demo/SkyDemoApplication.java
+0
-27
sky/sdk/lib/sky_tool
sky/sdk/lib/sky_tool
+5
-5
sky/shell/BUILD.gn
sky/shell/BUILD.gn
+21
-0
sky/shell/android/AndroidManifest.xml
sky/shell/android/AndroidManifest.xml
+25
-0
sky/shell/android/org/domokit/sky/shell/SkyActivity.java
sky/shell/android/org/domokit/sky/shell/SkyActivity.java
+19
-0
sky/shell/android/org/domokit/sky/shell/SkyApplication.java
sky/shell/android/org/domokit/sky/shell/SkyApplication.java
+24
-6
sky/tools/big_red_button.py
sky/tools/big_red_button.py
+1
-1
sky/tools/shelldb
sky/tools/shelldb
+7
-7
未找到文件。
sky/BUILD.gn
浏览文件 @
2cfc2042
...
...
@@ -25,13 +25,10 @@ group("sky_dev") {
deps = [
"//sky/sdk",
"//sky/sdk/example/demo_launcher",
"//sky/shell",
]
if (is_android) {
deps += [ "//sky/services/activity" ]
}
if (is_linux || is_ios) {
deps += [ "//sky/shell" ]
}
}
sky/dist/BUILD.gn
浏览文件 @
2cfc2042
...
...
@@ -18,11 +18,11 @@ copy("sky_viewer") {
copy("sky_shell") {
if (is_android) {
sources = [
"$root_build_dir/apks/Sky
Demo
.apk",
"$root_build_dir/apks/Sky
Shell
.apk",
]
deps = [
"//sky/s
dk/example/demo_launcher
",
"//sky/s
hell
",
]
} else if (is_ios) {
sources = [
...
...
@@ -76,7 +76,7 @@ if (is_android) {
copy("copy_sky_sdk_apks") {
sources = [
"$root_dist_dir/shell/Sky
Demo
.apk",
"$root_dist_dir/shell/Sky
Shell
.apk",
]
outputs = [ "$sky_sdk_dir/apks/{{source_file_part}}" ]
deps = [
...
...
sky/sdk/README.md
浏览文件 @
2cfc2042
...
...
@@ -68,19 +68,19 @@ Running a Sky application
-------------------------
The
`sky`
pub package includes a
`sky_tool`
script to assist in running
Sky applications inside the
`Sky
Demo
.apk`
harness. The
`sky_tool`
script
Sky applications inside the
`Sky
Shell
.apk`
harness. The
`sky_tool`
script
expects to be run from the root directory of your application's package (i.e.,
the same directory that contains the
`pubspec.yaml`
file). To run your app,
follow these instructions:
-
`./packages/sky/sky_tool start`
to start the dev server and upload your
app to the device.
(NOTE: add a
`--install`
flag to install
`Sky
Demo
.apk`
if it is not already
(NOTE: add a
`--install`
flag to install
`Sky
Shell
.apk`
if it is not already
installed on the device.)
-
Use
`adb logcat`
to view any errors or Dart
`print()`
output from the app.
`adb logcat -s sky`
can be used to filter only adb messages from
`Sky
Demo
.apk`
.
`Sky
Shell
.apk`
.
Debugging
---------
...
...
sky/sdk/example/demo_launcher/apk/BUILD.gn
浏览文件 @
2cfc2042
...
...
@@ -17,10 +17,6 @@ android_library("java") {
"//base:base_java",
"//mojo/public/java:bindings",
"//mojo/public/java:system",
"//mojo/services/sensors/public/interfaces:interfaces_java",
"//services/sensors:sensors_lib",
"//sky/services/media:media_lib",
"//sky/services/media:interfaces_java",
"//sky/shell:java",
]
}
...
...
sky/sdk/example/demo_launcher/apk/org/domokit/sky/demo/SkyDemoApplication.java
浏览文件 @
2cfc2042
...
...
@@ -6,15 +6,7 @@ package org.domokit.sky.demo;
import
android.content.Context
;
import
org.chromium.mojo.sensors.SensorServiceImpl
;
import
org.chromium.mojo.system.Core
;
import
org.chromium.mojo.system.MessagePipeHandle
;
import
org.chromium.mojom.media.MediaService
;
import
org.chromium.mojom.sensors.SensorService
;
import
org.domokit.media.MediaServiceImpl
;
import
org.domokit.sky.shell.ResourceExtractor
;
import
org.domokit.sky.shell.ServiceFactory
;
import
org.domokit.sky.shell.ServiceRegistry
;
import
org.domokit.sky.shell.SkyApplication
;
/**
...
...
@@ -35,23 +27,4 @@ public class SkyDemoApplication extends SkyApplication {
super
.
onBeforeResourceExtraction
(
extractor
);
extractor
.
addResources
(
DEMO_RESOURCES
);
}
@Override
public
void
onServiceRegistryAvailable
(
ServiceRegistry
registry
)
{
super
.
onServiceRegistryAvailable
(
registry
);
registry
.
register
(
SensorService
.
MANAGER
.
getName
(),
new
ServiceFactory
()
{
@Override
public
void
connectToService
(
Context
context
,
Core
core
,
MessagePipeHandle
pipe
)
{
SensorService
.
MANAGER
.
bind
(
new
SensorServiceImpl
(
context
),
pipe
);
}
});
registry
.
register
(
MediaService
.
MANAGER
.
getName
(),
new
ServiceFactory
()
{
@Override
public
void
connectToService
(
Context
context
,
Core
core
,
MessagePipeHandle
pipe
)
{
MediaService
.
MANAGER
.
bind
(
new
MediaServiceImpl
(
context
,
core
),
pipe
);
}
});
}
}
sky/sdk/lib/sky_tool
浏览文件 @
2cfc2042
...
...
@@ -21,9 +21,9 @@ SKY_PACKAGE_ROOT = os.path.realpath(os.path.dirname(LIB_DIR))
SKY_SERVER_PORT
=
9888
OBSERVATORY_PORT
=
8181
APK_NAME
=
'Sky
Demo
.apk'
ANDROID_PACKAGE
=
"org.domokit.sky.
demo
"
ANDROID_COMPONENT
=
'%s/%s.Sky
Demo
Activity'
%
(
ANDROID_PACKAGE
,
ANDROID_PACKAGE
)
APK_NAME
=
'Sky
Shell
.apk'
ANDROID_PACKAGE
=
"org.domokit.sky.
shell
"
ANDROID_COMPONENT
=
'%s/%s.SkyActivity'
%
(
ANDROID_PACKAGE
,
ANDROID_PACKAGE
)
# FIXME: This assumes adb is in $PATH, we could look for ANDROID_HOME, etc?
ADB_PATH
=
'adb'
# FIXME: Do we need to look in $DART_SDK?
...
...
@@ -243,7 +243,7 @@ class StartTracing(object):
def
run
(
self
,
args
,
pids
):
subprocess
.
check_output
([
ADB_PATH
,
'shell'
,
'am'
,
'broadcast'
,
'-a'
,
'org.domokit.sky.
demo
.TRACING_START'
])
'-a'
,
'org.domokit.sky.
shell
.TRACING_START'
])
TRACE_COMPLETE_REGEXP
=
re
.
compile
(
'Trace complete'
)
...
...
@@ -260,7 +260,7 @@ class StopTracing(object):
subprocess
.
check_output
([
ADB_PATH
,
'logcat'
,
'-c'
])
subprocess
.
check_output
([
ADB_PATH
,
'shell'
,
'am'
,
'broadcast'
,
'-a'
,
'org.domokit.sky.
demo
.TRACING_STOP'
])
'-a'
,
'org.domokit.sky.
shell
.TRACING_STOP'
])
device_path
=
None
is_complete
=
False
while
not
is_complete
:
...
...
sky/shell/BUILD.gn
浏览文件 @
2cfc2042
...
...
@@ -121,10 +121,14 @@ if (is_android) {
"//mojo/public/java:system",
"//mojo/services/keyboard/public/interfaces:interfaces_java",
"//mojo/services/network/public/interfaces:interfaces_java",
"//mojo/services/sensors/public/interfaces:interfaces_java",
"//services/keyboard",
"//services/sensors:sensors_lib",
"//sky/services/activity:activity_lib",
"//sky/services/activity:interfaces_java",
"//sky/services/engine:interfaces_java",
"//sky/services/media:interfaces_java",
"//sky/services/media:media_lib",
"//sky/services/oknet",
]
}
...
...
@@ -139,6 +143,23 @@ if (is_android) {
"//third_party/icu:icudata",
]
}
android_apk("shell") {
apk_name = "SkyShell"
android_manifest = "android/AndroidManifest.xml"
native_libs = [ "libsky_shell.so" ]
asset_location = "$root_build_dir/sky_shell/assets"
deps = [
":assets",
":assets",
":java",
":sky_shell",
"//base:base_java",
]
}
} else if (is_ios) {
import("//build/config/ios/rules.gni")
import("//build/config/ios/ios_sdk.gni")
...
...
sky/shell/android/AndroidManifest.xml
0 → 100644
浏览文件 @
2cfc2042
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2015 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"org.domokit.sky.shell"
android:versionCode=
"1"
android:versionName=
"0.0.1"
>
<uses-sdk
android:minSdkVersion=
"14"
android:targetSdkVersion=
"21"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-feature
android:name=
"android.hardware.sensor.accelerometer"
android:required=
"true"
/>
<application
android:label=
"Sky Shell"
android:name=
"SkyApplication"
>
<activity
android:configChanges=
"orientation|keyboardHidden|keyboard|screenSize"
android:hardwareAccelerated=
"true"
android:launchMode=
"standard"
android:name=
"SkyActivity"
android:theme=
"@android:style/Theme.Black.NoTitleBar"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
sky/shell/android/org/domokit/sky/shell/SkyActivity.java
浏览文件 @
2cfc2042
...
...
@@ -5,6 +5,7 @@
package
org.domokit.sky.shell
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.view.View
;
...
...
@@ -96,6 +97,9 @@ public class SkyActivity extends Activity {
* Override this function to customize startup behavior.
*/
protected
void
onSkyReady
()
{
if
(
loadIntent
(
getIntent
()))
{
return
;
}
File
dataDir
=
new
File
(
PathUtils
.
getDataDirectory
(
this
));
File
snapshot
=
new
File
(
dataDir
,
SkyApplication
.
SNAPSHOT
);
if
(
snapshot
.
exists
())
{
...
...
@@ -109,6 +113,21 @@ public class SkyActivity extends Activity {
}
}
protected
void
onNewIntent
(
Intent
intent
)
{
loadIntent
(
intent
);
}
public
boolean
loadIntent
(
Intent
intent
)
{
String
action
=
intent
.
getAction
();
if
(
Intent
.
ACTION_VIEW
.
equals
(
action
))
{
loadUrl
(
intent
.
getDataString
());
return
true
;
}
return
false
;
}
public
void
loadUrl
(
String
url
)
{
mView
.
getEngine
().
runFromNetwork
(
url
);
}
...
...
sky/shell/android/org/domokit/sky/shell/SkyApplication.java
浏览文件 @
2cfc2042
...
...
@@ -8,17 +8,21 @@ import android.content.Context;
import
android.util.Log
;
import
org.chromium.base.BaseChromiumApplication
;
import
org.chromium.base.PathUtils
;
import
org.chromium.base.library_loader.LibraryLoader
;
import
org.chromium.base.library_loader.LibraryProcessType
;
import
org.chromium.base.library_loader.ProcessInitException
;
import
org.chromium.base.PathUtils
;
import
org.chromium.mojo.keyboard.KeyboardServiceImpl
;
import
org.chromium.mojo.sensors.SensorServiceImpl
;
import
org.chromium.mojo.system.Core
;
import
org.chromium.mojo.system.MessagePipeHandle
;
import
org.chromium.mojom.activity.Activity
;
import
org.chromium.mojom.keyboard.KeyboardService
;
import
org.chromium.mojom.media.MediaService
;
import
org.chromium.mojom.mojo.NetworkService
;
import
org.chromium.mojom.sensors.SensorService
;
import
org.domokit.activity.ActivityImpl
;
import
org.domokit.media.MediaServiceImpl
;
import
org.domokit.oknet.NetworkServiceImpl
;
/**
...
...
@@ -59,11 +63,10 @@ public class SkyApplication extends BaseChromiumApplication {
* Override this function to register more services.
*/
protected
void
onServiceRegistryAvailable
(
ServiceRegistry
registry
)
{
registry
.
register
(
NetworkService
.
MANAGER
.
getName
(),
new
ServiceFactory
()
{
registry
.
register
(
Activity
.
MANAGER
.
getName
(),
new
ServiceFactory
()
{
@Override
public
void
connectToService
(
Context
context
,
Core
core
,
MessagePipeHandle
pipe
)
{
// TODO(eseidel): Refactor ownership to match other services.
new
NetworkServiceImpl
(
context
,
core
,
pipe
);
Activity
.
MANAGER
.
bind
(
new
ActivityImpl
(),
pipe
);
}
});
...
...
@@ -74,10 +77,25 @@ public class SkyApplication extends BaseChromiumApplication {
}
});
registry
.
register
(
Activity
.
MANAGER
.
getName
(),
new
ServiceFactory
()
{
registry
.
register
(
MediaService
.
MANAGER
.
getName
(),
new
ServiceFactory
()
{
@Override
public
void
connectToService
(
Context
context
,
Core
core
,
MessagePipeHandle
pipe
)
{
Activity
.
MANAGER
.
bind
(
new
ActivityImpl
(),
pipe
);
MediaService
.
MANAGER
.
bind
(
new
MediaServiceImpl
(
context
,
core
),
pipe
);
}
});
registry
.
register
(
NetworkService
.
MANAGER
.
getName
(),
new
ServiceFactory
()
{
@Override
public
void
connectToService
(
Context
context
,
Core
core
,
MessagePipeHandle
pipe
)
{
// TODO(eseidel): Refactor ownership to match other services.
new
NetworkServiceImpl
(
context
,
core
,
pipe
);
}
});
registry
.
register
(
SensorService
.
MANAGER
.
getName
(),
new
ServiceFactory
()
{
@Override
public
void
connectToService
(
Context
context
,
Core
core
,
MessagePipeHandle
pipe
)
{
SensorService
.
MANAGER
.
bind
(
new
SensorServiceImpl
(
context
),
pipe
);
}
});
}
...
...
sky/tools/big_red_button.py
浏览文件 @
2cfc2042
...
...
@@ -49,7 +49,7 @@ GS_URL = 'gs://mojo/sky/%(category)s/%(config)s/%(commit_hash)s/%(name)s'
ARTIFACTS
=
{
'android-arm'
:
[
Artifact
(
'shell'
,
'Sky
Demo
.apk'
),
Artifact
(
'shell'
,
'Sky
Shell
.apk'
),
Artifact
(
'viewer'
,
'sky_viewer.mojo'
),
],
'linux-x64'
:
[
...
...
sky/tools/shelldb
浏览文件 @
2cfc2042
...
...
@@ -27,14 +27,14 @@ GDB_PORT = 8888
SKY_SERVER_PORT
=
9888
OBSERVATORY_PORT
=
8181
DEFAULT_URL
=
"https://domokit.github.io/home.dart"
APK_NAME
=
'Sky
Demo
.apk'
APK_NAME
=
'Sky
Shell
.apk'
ADB_PATH
=
os
.
path
.
join
(
SRC_ROOT
,
'third_party/android_tools/sdk/platform-tools/adb'
)
ANDROID_PACKAGE
=
"org.domokit.sky.
demo
"
ANDROID_COMPONENT
=
'%s/%s.Sky
Demo
Activity'
%
(
ANDROID_PACKAGE
,
ANDROID_PACKAGE
)
ANDROID_PACKAGE
=
"org.domokit.sky.
shell
"
ANDROID_COMPONENT
=
'%s/%s.SkyActivity'
%
(
ANDROID_PACKAGE
,
ANDROID_PACKAGE
)
SHA1_PATH
=
'/sdcard/%s/%s.sha1'
%
(
ANDROID_PACKAGE
,
APK_NAME
)
PID_FILE_PATH
=
"/tmp/s
kydemo
.pids"
PID_FILE_PATH
=
"/tmp/s
helldb
.pids"
PID_FILE_KEYS
=
frozenset
([
'remote_sky_server_port'
,
'sky_server_pid'
,
...
...
@@ -141,7 +141,7 @@ class StartSky(object):
default
=
DEFAULT_URL
)
start_parser
.
add_argument
(
'--no_install'
,
action
=
"store_false"
,
default
=
True
,
dest
=
"install"
,
help
=
"Don't install Sky
Demo
.apk before starting"
)
help
=
"Don't install Sky
Shell
.apk before starting"
)
start_parser
.
set_defaults
(
func
=
self
.
run
)
def
_server_root_for_url
(
self
,
url_or_path
):
...
...
@@ -435,7 +435,7 @@ class StartTracing(object):
def
run
(
self
,
args
,
pids
):
subprocess
.
check_output
([
ADB_PATH
,
'shell'
,
'am'
,
'broadcast'
,
'-a'
,
'org.domokit.sky.
demo
.TRACING_START'
])
'-a'
,
'org.domokit.sky.
shell
.TRACING_START'
])
TRACE_COMPLETE_REGEXP
=
re
.
compile
(
'Trace complete'
)
...
...
@@ -451,7 +451,7 @@ class StopTracing(object):
subprocess
.
check_output
([
ADB_PATH
,
'logcat'
,
'-c'
])
subprocess
.
check_output
([
ADB_PATH
,
'shell'
,
'am'
,
'broadcast'
,
'-a'
,
'org.domokit.sky.
demo
.TRACING_STOP'
])
'-a'
,
'org.domokit.sky.
shell
.TRACING_STOP'
])
device_path
=
None
is_complete
=
False
while
not
is_complete
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录