Haxe 开发 Android 初探

心血来潮

早就听说 Haxe 可以使用一种语言,开发多种平台的原生项目,今天尝试一下

安装开发环境

  • haxe

一开始下载的压缩包,解压之后运行 haxelib 时提示找不到 neko.dll,又下了 neko 的压缩包,运行时直接报错,原因不明,所以最后老老实实下载了安装程序,这才运行正常

  • openfl

安装 openfl 时又出问题,报 Httperror 503,lime-7.5.0 包下载不下来,手动下载这个包,然后继续安装,一切正常

编译 Apk

测试项目就是最简单的显示一张图片的官方示例

一开始用的 NDK 是 r18b,编译时报 typeinfo.h 找不到,我电脑上还有 r12b 的版本,搜了一下,发现在这个版本的头文件目录中有这个文件,然后回头看官方的说明,支持到 r13b,更新的版本理论上可以,但没有测试过,想了想可能是 NDK 版本的原因,改成使用 r12b 版本,编译运行成功

后记

Java 跨平台是一次编译,到处运行,由运行时屏蔽平台差异性

Haxe 则是将源码翻译成平台原生代码,比如 C/C++,AS3 等,这样理论上可以避免运行时这个中间层带来的性能下降

但是有些平台差异是无法屏蔽的,即使在这样的平台和环境中,要保证你的代码真的可以跨平台,那你只能使用所有平台功能的最大子集,这不免要牺牲有些平台的关键特性了,这在项目初期就要评估取舍

另一方面,像 Haxe 这种,虽然系统提供了代码翻译功能,还要提供一套各平台的库和相应的胶水代码,而这些代码有些由社区提供,稳定性和质量参差不齐,反而要求开发人员要有较高的能力把控这中间的各个环节舍。

补注

  • haxe

    是一门静态 中间 编程语言,同时包含相应的平台和工具集,提供把代码翻译成各平台原生代码的能力

  • neko

    是一门类似 lua 的脚本语言,包含对应的虚拟机

  • lime

    是基于 Haxe 的一套中间层,提供跨平台的窗口和应用程序生命周期管理的功能,同时包含其它功能,如操控渲染,声音等有用的功能

  • openfl

    基于 Haxe 和 lime 的一套框架库,提供了类似 Flash 的 API 和库工具(可以沿用 Adobe Animate 的资源流程,使用 swf 格式资源),方便进行图形开发

转载于:https://www.jianshu.com/p/ac0fa6f39477

猜你喜欢

转载自blog.csdn.net/weixin_34357436/article/details/91303986
今日推荐