无节操非程序猿

莫催稿,催稿也不交

配置 CodeTyphon 跨平台编译 Android 程序的环境

如果你用的是 Mac,请不要往下看


相比于配置 iOS 开发环境,配置 Android 的环境就简单多了,几个步骤即可配完。


Step 1: 下载库文件

以终端命令启动 CodeTyphon 控制台,然后选取主菜单中的 CrossBuild | Download Libraries,将弹出图所示窗口,这个窗口内包含了当前已安装的所有库:

已安装的库

点击『刷新』按钮,此时在终端内会提示输入Root密码,输入后即可看到服务器端维护的库列表。如果不是通过终端启动 CodeTyphon 控制台,则在 CommandBox 内会提示一个 no tty 的异常,并无法显示服务器端的库列表。

库列表

针对Android原生库开发,我们勾选以下的库文件予以下载,这里的库文件均是由 PilotLogic 公司维护的,重新编译以适应于 Pascal 的库:

选择要下载的库文件

选定后点击『下载』按钮,接下去就是漫长的等待,库文件都比较大,下载后的文件位于 /usr/local/codetyphon/binLibraries 内,在终端内 cd 到目录内即可看到库文件。这些库文件均是由 .a.so 构成,并没有原本属于 NDK 的目录结构。换言之,CodeTyphon 对 Android 原生库编译的支持,并不需要 NDK,它是独立存在的。


Step 2: 下载工具链

将库文件下载完毕后,还需要下载工具链,选取主菜单中 CrossBuild | Download Toolchains,将会弹出以下窗口:

下载工具链窗口

在这个窗口内,将会显示所有可用的工具链。对于工具链文件的命名方式,其解读方式如下:

如 lin32-arm-android,命名分为三段,lin32 表示宿主,即发起编译的平台,arm 表示目标 CPU 架构,android 表示目标平台。因此这个工具链的含义就是从 32 位 Linux 平台编译用于 arm 架构的 android程序。

如果安装 CodeTyphon 的平台是 32 位的 Linux,则选择 lin32 开头的工具链,若是 64 的,则要选择 lin64 开头的。此处以 64 位的 Linux 为例进行讲述,选定以下工具链:

* lin64-arm-android 对应 arm 架构,是 android 系统最常用的 CPU 架构

* lin64-mipsel-android  对应 mips 架构,部分 android 的智能设备采用此 CPU 架构

* lin64-i386-android    对应 x86 架构,部分 android 手机或平板采用此 CPU 架构


下载完成后,就要开始对跨平台元素(cross element)进行编译。在 CodeTyphon 内,跨平台元素是一个全新的概念,它是一种跨平台编译解决方案,比起原本的工具链,它更轻更小,并且几乎没有没用的文件。


Step 3: 编译跨平台元素

在 CodeTyphon 内,目前已经基本上用不到 Toolchains Builder 这个工具了,除非你想自找麻烦,反复的修改编译参数。使用跨平台元素将可以更快的完成工具链的构建。

从主菜单中选取 CrossBuild | FreePascal 64bits | FPC64 build cross element arm-android,即可以完成该项跨平台元素的编译。此时在 CommandBox 内会显示编译进度:

编译进度

经过较为漫长的等待后,arm-android 跨平台元素即被编译完成,按同样的方式可以编译好 mipsel-android 和 i386-android 的跨平台元素。全部完成后,在 CodeTyphon 控制台的 Status 页内,会将这些跨平台元素显示出来。

编译完成的跨平台元素

如果要进一步确认跨平台元素是否已安装好,可以点击某个元素的名称,如点击 Cross Element for arm-android,会弹出一个窗口,显示了 arm 版 FreePascal 编译器的指令参数,看到这个窗口即能证明,跨平台元素已可以正常工作:

arm



跨平台元素的限制

跨平台元素虽然使用方便,但是仍然有各自的限制。它对平台的依赖很高,例如在 64 位 Linux 下编译,就无法正常编译 lin32 的跨平台元素,虽然它也同时拥有 32 位的 FreePascal 编译器,但是那并没有任何的作用。而对于 Mac,目前并没有任何的跨平台元素可以支持,所以在 Mac 上就无法体验 Android 或是其他跨平台开发了。

发表评论:

Powered By Z-BlogPHP 1.5.1 Zero

Copyright Rarnu 2017. All Rights Reserved.