开源跨平台移动项目Langou【入门】

Langou简介

Langou是一个跨平台(Android/iOS)前端开发框架,核心代码使用C++编写,底层基于OpenGL绘图,上层实现了一个精简的排版引擎以及一个JS/JSX运行环境。目标是想实现在此基础上开发GUI应用程序可兼顾开发速度与运行效率。

同宗不同派

这有点类似Reac-Native可能你们会问为什么你要写一个与React-Native一样的东西,虽然表面上看见确实有相似之处,都使用jsx语法,都是跨平台的,都能实现热更新,也都不是基于浏览器webview。
但不同之处是Langou不依赖操作系统的GUI组件,完全调用标准OpenGLAPI进行绘图渲染,并且给它编写了一套布局引擎,这有点类似浏览器的div+css。几年前在开始构思这个框架时效率就一直做重中之重来考虑,虽然现在有很多地方不足,还达不到理想目标,但我相信在不久的将来一定可以。基于这几个特点做为一个GUI系统Langou能快速的移植到任何操作系统,对操作系统做特例化处理的地方会很少,更重要的一点是基于此开发的应用代码能够做到真正意义上的跨平台。

开始使用Langou

如果你从来没有使用过langou你可以从这里开始,一步步创建你的第一个langou程序。

先让给你们看一个简单的Hello World程序

import { GUIApplication, Root } from 'langou'
new GUIApplication().start(
    <Root>Hello world!</Root>
)

做过react开发的朋友一定会非常熟悉这种代码,对就是facebook发明的那个JavascriptXML简称jsx,这段代码能在你的设备屏幕上显示hello world!

安装Langou工具包

首先你需要安装langou提供的工具包,工具包是使用nodejs编写并且运行时依赖python2.7,所以必需先安装nodejspython,如果已经安装过那就可以跳过了

还有一个地方需要注意,这个工具暂时只能在mac系统下运行,因为我只在mac下做过测试,理论上也应该可以在linux下运行,大家可以可自行试试,但是我并不敢保证它运行不会出错,但有一点可以确定现在一定是不能在windows下运行的。最好是在mac下运行因为如果你要开发ios一定是需要mac的。

获得到这个工具包

  • 你可以使用nodejs自带的软件包管理器npm来安装它,

    打开Terminal并执行以下命令:

# shell
$ sudo npm install -g lmake

创建新Langou项目

上一步你应该已经安装了工具包现在用它来创建你的第一个项目吧!

使用下面的shell命令创建一个新的langou工程:

# shell
# 创建一个工程根目录
$ mkdir myproject
# 进入到工程根目录
$ cd myproject
# 使用langou命令初始化工程目录
$ lmake init

现在myproject工程根目录结构应该如下:

  • myproject

    • examples
    • libs
    • app.keys
  • examples是一个实例程序也就是在goole playapp store上发布的那个实例程序,你可对照这个目录结构创建自己的应用程序目录,当前也可以删除它但需时同时删除app.keys下对应的键值。

  • libs目录是运行langou程序所必要的库文件,库所提供的API可以查阅这里http://langou.org/doc/会有比较详细的说明

  • app.keys中描述的每一个key对应的目录都是一个app应用程序 。

  • .keyslangou提供的一种数据格式文件,类似json格式可定义数组与对像,我会在以后的文章中对这种数据格式做详细说明,这里先略过现在只要知道它是一种类json格式就行了。

你现在所看到的目录结构就是langou的标准项目结构,不管langou以后支持多少种操作系统与平台,这个项目结构不会变。

构建Langou项目

构建项目是专业术语,其实就是把你的应用程序进行编译打包,在这里会把你刚刚创建的langou项目根目录下的jsjsx文件以及资源文件进行压缩打包。

在项目根目录下执行下面的shell命令进行构建:

# shell
$ lmake build

执行完命令后你应该可以在项目根目录下看到多出了一个out目录,对这就是你刚刚执行命令自动生成的文件,这个目录的详细说明留到以后的章节中,今天在这里这不是重点。

导出项目

导出XcodeorAndroid Studio工程,有人会问为什么还要导出第三方工程不是跨平台吗?我指的跨平台是在运行与编码上是跨平台并,并且你最终输出的是一个.apk包或苹果公司的.dmg.ipa所以这种基本的导出工作还是要做的,抱歉现阶段我还无法为大家提供IDE,只能是稳妥的把核心做好。那么既然要导出三方工程,那么你就去百度下安装它们吧,这并不困难并且这些都是免费的。

在项目根目录下执行下面的命令:

# shell
# 导出 ios Xcode 项目
$ lmake export ios
# 导出 android stodio 项目
$ lmake export android

执行完命令后会在项目根目录下生成project/iosproject/android分别对应Xcode工程与Android Stodio工程。

有人想了解XcodeAndroid Stodio是怎么创建项目的请看这里:

导出工程后那么你就可以打开它们进行编译与调试了,如果你安装过Xcode导出命令执行后会自动打开Xcode

这是我mac机上项目目录的样子:

Screenshot

这是打开Xcode的样子:

Screenshot

这是打开Android Studio的样子:

Screenshot

Langou调式服务器

lmake提供了一个远程测试http服务器,你不需要每次修改完jsjsx代码都进行重新安装。把你的应用启动地址设置成调试服务器地址,在导出项目时工具会自动把启动地址设置这个调式地址,所大部分情况下你不需要修改,除非你想连接到其它地方。

执行下面的代码可以启动它:

# shell
$ lmake

这个工具现在还不是很完善只能做简单的日志显示,并不能从终端主动干预你应用的运行状态,这是我在未来的版本中需要解决的问题。

下载

  • 这是我编译的Android实例程序apk包下载地址examples-release.apk
    也可以去Google PlayApp Store中搜索AvocadoJSAvocadoJS是项目之前的名称,由于后来项目改名还没来得急上传商店中。

  • 这是在Github源码地址Examples Demo

谢谢大家,未完待续~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容