将世界迷雾移植到 Android 要做的工作
早在三年半前刚开始设计世界迷雾2的时候,就已经预想好以后要可以移植到 iOS 以外的平台了,于是当时就已着手设计了一个可以跨平台开发的框架,而迷雾2就是基于这个框架开发而成的,除此之外,迷雾2底下还有几个自主开发的子计划,以及迷雾2本身的主程式,基本上全部都是用 C++ 开发而成的,包含整个迷雾2的 UI 系统都是自行设计的,完全不依赖 iOS 的 UIKit。以上翻译成中文的意思就是,原则上迷雾2超过九成的程式码都可以直接在各个平台运行,迷雾2甚至可以在不改一行程式码的情况下,直接在各个平台都显示出一模一样的画面,并拥有一模一样的操作手感。
那我们究竟还需要移植什么东西呢?虽然整个迷雾的接口操作都不需重写,但每个平台都有一些自己的特性,这也是要将迷雾移植到其他平台最主要的工作,其中大部份会落在我们自己设计的跨平台开发框架 moui。这三年来 Android 发展的很快,也改变了许多东西,像是 Android 官方主要的编程语言在今年从 Java 变成了 Kotlin。当年选择了 Google 的 GYP 做为所有程式的编译工具,透过 GYP 我们可以直接生成 iOS 及 Android 编译所需的相关档案,然而现在 Google 已经舍弃了 GYP,Android 要使用 C 或 C++ 程式码的话,必须改用 Gradle 及 CMake 来完成。
另外迷雾还会用到不同平台原生的函式库,像是 OneDrive 及微博的支持等,在 iOS 平台,这些原生函式库是用 Objective C 写成的,迷雾的主程式必须串接 C++ 及这些 Objective C 的原生函式库。而在 Android 平台,这些原生函式库将会是用 Java 或 Kotlin 写成的,也就是我们必须开发串接 C++ 及这些 Java/Kotlin 原生函式库的程式码才有办法调用这些功能。
另外还有一些大大小小的问题,像是储存盘案的位置,如何去取得包在 APP 里的档案等等,基本上许多看似简单的小东西,在 iOS 跟 Android 的使用逻辑都大不相同,这些都是需要特别处理的。最需要花时间的,大概将会是定位功能的实机测试,如何能尽可能的记录路径,但又要过滤掉不准确的座标,这将会需要长时间的上路测试来调整参数。
从 11 月 22 日起,我已经在 moui 上新建了一个 android branch 在密集进行移植工作,当这个 branch 完成之时,就表示迷雾安卓版的公测指日可待了,对程式开发有兴趣的朋友欢迎追踨我们的GitHub:https://github.com/ollix/moui/commits/android