发新帖

第一手资料 安卓新的开发语言sky说明文档

[复制链接]
13972 8
大家好,我是七少月,之所以花费一晚上的时间,就是因为可能大家都知道,谷歌将使用sky语言来代替java开发安卓,目前sky_sdk已经在github开源,基于很多朋友无法访问国外网站获得资料,加之如今中国网上关于dart和sky的说明还过少,本人连夜翻译出这个sky的说明文档,请转载时附上作者的名字,谢谢!
  在例子中,你会完整的看到一个有Sky开发的DEMO.apk示例,“Helloword”,其开发比java更为方便,更加基于HTTP网络服务。
  由于水平有限,加之对安卓了解不够,难免有错误之处,请见谅,该文档是谷歌在sky_sdk中的原版文档翻译。

本文编写者:七少月
****************************************************************************

特约
sky_sdk是mojo知识库使用 deploy_sdk.py生成。静态文件(包括本文的README.md)都位于sky\sdk文件夹下。将请求和问题报告发送给mojo知识库的行为都是被乐于接受的。



Sky

Sky是移动应用实验产品,高性能的UI框架。它帮助您创建APP,用它可以在120的桢速率中运行流畅华丽的用户界面和高品质的互动设计的应用程序。

Sky包含两个组件:
1.Sky engine:该引擎是系统的核心。用C ++编写,该引擎提供了Sky系统的动力。它提供了几个原语,包括软实时调度和分层,保留模式的图形系统,让您打造高品质的应用程序
2.Sky framework:该框架可以很容易通过提供熟悉的用户界面控件,如按钮,不受限制的列表和动画,这些是基于Dart引擎上开发的。这些扩展的组件遵循函数编程的风格。

我们还在对Sky进行大量更新,这意味着框架和底层引擎均可能改变几次,但如果你有兴趣尝试该系统,这个文件可以帮助您开始。



Examples示例

使用Dart的Sky和Sky应用程序组成了一个Dart包。应用程序的创建首先创建一个新的目录,并添加pubspec.yaml。

pubspec.yaml :

name: 你应用的名字
dependencies:
sky: any

当pubspec创建完成,此时创建一个lib目录(在这里是你的Dart源代码),然后运行pub get去下载"package:你的应用程序名称/main.dart"所有必要的依赖项,同时创造必要的符号,最终它们都会包含在工作中。

此时,Sky引擎假定应用程序的入口点在一个发挥着主要功能的main.sky文件中,它处于包的根位置。.sky是一种类似HTML的格式。

<sky>
<script>
import 'package:your_app_name/main.dart';

void main() {
  new HelloWorldApp();
}
</script>
</sky>

该应用程序的其余部分则包含在包的lib文件目录中。因此lib/main.dart的代码可能是:

import 'package:sky/framework/fn.dart';

class HelloWorldApp extends App {
  UINode build() {
    return new Text('Hello, world!');
  }
}

开始执行主程序,它创建了一个HelloWorldApp应用。接着框架会标记HelloWorldApp是需要整理的,它的下一个动画帧期间建造一时间表。每一个动画桢,框架都会调用建立在这些这些需要整理的组件上,并且区分虚拟的UINode层次中返回的这一桢和该层次返回的上一次桢。

举例的话,请看examples目录



Services服务

Sky的应用程序可以使用Mojo IPC主机操作系统访问服务。例如,你可以直接使用network_service.mojom接口接入网络。虽然你可以直接使用这些低级别的接口,但你可能更喜欢通过框架中的函数库来访问这些服务。例如,fetch.dart库包含了一个符合人体工程学的接口network_service.mojom

import 'package:sky/framework/net/fetch.dart';

main() async {
  Response response = await fetch('example.txt');
  print(response.bodyAsString());
}



Set up your computer 设置你的电脑

1.安装 Dart SDK
https://www.dartlang.org/tools/download.html
2.安装来自 Android SDK的adb工具
https://developer.android.com/sdk/installing/index.html
3.安装 Sky SDK
git clone https://github.com/domokit/sky_sdk.git
4.确保 $DART_SDK被设为你的Dart SDK的路径, 并且'adb' (它包含在 android sdk 的'platform-tools' ) 在你的 $PATH之中.



Set up your device 设置你的手机设备

目前Sky应用程序需要一台安卓设备,该安卓设备的操作系统要是棒棒糖(即安卓4.0)以上的版本。
1.通过“设置-开发者选项”,启用开发者模式;
2.勾选“USB调式”;
3.使用USB数据线,将你的手机连接上手机,如果你的设置询问,请授权电脑允许访问您的手机设备。

Running a Sky application 运行一个Sky应用程序

Sky的应用程序包,包含了一个sky_tool脚本,用来协助运行Sky应用程序SkyDemo.apk。该sky_tool脚本期望从你的应用程序包的根目录下运行。为了在SDK中运行一个例子,尝试以下步骤:
1.cd examples/stocks
2.pub get 用来设立一个sky包的副本在应用程序目录中
3../packages/sky/sky_tool start --install 该--install标志仅需要安装SkyDemo.apk,如果此APK并没有安装在设备上。
4.利用adb logcat查看任何错误或使用Dart的print()查看输出信息,adb logcat -s chromium可以被用来过滤只有从SkyDemo.apk传来的adb信息。(基于传统的原因,仍然采用的是Android日志标签'chromium')



Measuring Performance 测试性能

Sky支持产生与谷歌兼容的“跟踪”文件,可以使用
packages/sky/sky_tool start_tracing 和 packages/sky/sky_tool stop_tracing命令
基于https://github.com/domokit/mojo/issues/127的跟踪需要取得当前设备的ROOT权限



Debugging 调式

Dart调式台(VM调式器和分析器)的支持正在进行中,会在2015年Dart峰会之后缓慢发出



Building a standalone MyApp 建立一个独立的MyApp

虽然可以捆绑(而不是运行你的代码里面SkyDemo.apk)Sky引擎自己的应用程序,但现在这样做是困难的。
目前也有一个这样的例子,如果你有这个勇气,请看:https://github.com/domokit/mojo/tree/master/sky/apk/stocks
最后,我们计划使支持的平台不仅仅在Android平台,但这项工作尚未进行。



Adding Services to MyApp  把服务添加到MyApp

Mojo IPC旨在提供应用程序之间的交叉线程,交叉过程,和跟语言无关的进程间通信系统
Sky采用Mojo IPC来创造一种可能,书写Dart的UI代码可以用网上的其他语言来编写
服务是可更换的,这意味着Dart编写的代码使用network_service仍然可以移植到任何平台(IOS,Android等),通过一个简单的“原生”写的network_service来实现。

Sky Engine引擎和用户的Sky Framework框架可以使用相同的机制来揭示服务。这样不仅可以揭示现有的服务,如键盘服务,它允许Sky Framework和基础平台的键盘进行接口,而且可以揭示除了应用了Sky/Dart的UI代码以外的业务逻辑代码。

一个例子,SkyApplication应用程序暴露了一个mojo的 network_service服务(需要 Sky Engine引擎的C++代码)除此之外,SkyDemoApplication 还暴露了 keyboard_service和 sensor_service 服务,这些服务用于基于Dart的Sky Framework 框架。
已有3人评分 威望 NB 荣获致谢 理由
sndncel + 1 + 1 很给力!
听鬼哥说故事 + 1 + 2 + 1 赞一个!
JackIO + 2 + 1 赞一个!

查看全部评分 总评分: 威望 +1  NB +5  荣获致谢 +3 

举报 使用道具

回复

精彩评论8

JackIO    发表于 2015-5-12 09:24:24 | 显示全部楼层
很及时的资料,多谢楼主分享。

举报 使用道具

回复 支持 反对
vVv一    发表于 2015-5-12 12:11:31 | 显示全部楼层
多谢楼主分享

举报 使用道具

回复 支持 反对
sndncel    发表于 2015-5-12 18:17:52 | 显示全部楼层
谢谢楼主分享。。。。。支持一下呀。

举报 使用道具

回复 支持 反对
rex_android    发表于 2015-5-13 14:02:42 | 显示全部楼层
支持一下,看上去似乎有点模样

举报 使用道具

回复 支持 反对
lsj2008bj    发表于 2015-7-7 10:45:39 | 显示全部楼层
谢谢楼主分享。。。。。支持一下

举报 使用道具

回复 支持 反对
huluxia    发表于 2015-7-7 16:44:04 来自手机  | 显示全部楼层
好文章,顶

举报 使用道具

回复
吃货还怕不火。    发表于 2015-7-27 11:19:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报 使用道具

回复 支持 反对
见丶上帝°    发表于 2015-7-27 12:47:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表