Haxe* 工具套件:面向 Android* 平台的英特尔® x86 编译

下载文档

本文将逐步介绍如何针对 Android* 平台创建面向英特尔® x86 的 Haxe* 项目 (OpenFL*)。

Haxe 是一种开源编程语言。 其他大多数语言只能在它们自己的平台上运行(Java* 在 JVM 上运行,C# 在 .Net 上运行,ActionScript 在 Flash* Player 上运行),而 Haxe 是一种多平台语言

你可以针对以下平台使用 Haxe:

  • JavaScript*. 你可以把 Haxe 程序编译成一个 .js 文件。 借助 auto completion 支持,你可以访问类型化的浏览器 DOM API。而且,所有依赖性都会在编译过程中解决。
  • Flash. 你可以把 Haxe 程序编译成一个 .swf 文件。 Haxe 能够兼容 Flash Player 6 至 11。 Haxe 提供出色的性能语言特性来开发 Flash 内容。
  • NekoVM*. 你可以把 Haxe 程序编译成 NekoVM 字节码。 它可用于譬如动态网页的服务器端编程(使用 mod_neko for Apache),也可用于命令行桌面应用,因为 NekoVM 可通过一些其他 DLL 嵌入和扩展。
  • PHP. 你可以把 Haxe 程序编译成 .php 文件。 这样你就可以使用严格类型化的高级语言(比如 Haxe),同时完全兼容现有服务器平台和资源库。
  • C++. 你可以借助所需的 Makefile 直接从 Haxe 源代码生成 C++ 代码,这种强大功能可用于创建本机应用。 NME 库可使用该 C++ 代码在 iOS*,Android* 等平台上运行 Haxe 代码。 2.10 之后的版本还包含调试功能。
  • C#Java. 自 Haxe 3.0 起,你可以为这些对象生成源代码。

Haxe 的宗旨是让开发人员选择最佳的平台来完成特定工作。

设置和前提条件

开始前,你需要下载和安装以下组件:

  1. 下载 Android SDK
  2. 下载 NDK
  3. 下载并安装 Cygwin*: 如果需要选择软件包,搜索并安装以下软件包:
    1. Autoconf,Automake,binutils,gcc-core,gcc-g++,gcc4-core,gcc4-g++,gdb,pcre,pcre-devel
    2. gawk,make,python

    : 你还需要选择 GUI 版本,否则将无法使用 NDK 创建项目。

  4. 下载 Java* 开发套件 (JDK).
  5. 下载 Apache Ant*。

接下来编辑环境变量。

  1. 设置 JAVA_HOME = 安装 Java JDK 的路径。 例如:

    C:\Program Files\Java\jdk1.7.0_45

  2. 设置 ANDROID_SDK_ROOT = 访问 SDK 文件夹的完整路径。 例如: 下载并提取

    D:\android\ 中的 ADT 捆绑程序包时,我的路径为: D:\android\adt-bundle-windows-x86-20131030\sdk

  3. 设置 NDK_ROOT = 访问 NDK 文件夹的完整路径。 例如:

    D:\android\android-ndk-r9b

  4. 设置 NDK_ROOT = 访问 NDK 文件夹的完整路径。 例如:

    D:\android\android-ndk-r9b

  5. 更新 Path 变量,纳入下列 = 访问 JDK 文件夹、JDK bin 文件夹、NDK、Cygwin bin 文件夹、ANT bin 文件夹,SDK 工具文件夹和 SDK 平台工具文件夹的路径,分别用分号 (;) 隔开。 例如:

    D:\cygwin64\bin;C:\Program Files\Java\jdk1.7.0_40\bin;D:\android\adt-bundle-windows-x86_64-20131030\sdk\tools;D:\android\adt-bundle-windows-x86_64-20131030\sdk\platform-tools;%JAVA_HOME%\bin;%ANT_HOME%\bin

注: 变量不要以 “\”、“`” 或其他类似的特殊字符结尾。

获取 Haxe 和相应资源库

你可以按照网站 https://github.com/HaxeFoundation/haxe 提供的说明从源代码中获取 Haxe,或者从网站 http://haxe.org/download 下载预构建的源代码。

以下是下载 Haxe 和相应资源库的步骤:

  1. http://haxe.org/download 中预构建的源代码中下载 HAXE。 选择窗口安装程序。
  2. 下载完成后,双击安装程序,然后完成安装步骤。
  3. 安装程序设置了环境变量 HAXEPATH 并附加到系统 PATH 环境变量。 如果没有,请执行必要操作。 例如: 创建已安装路径(比如 E:\HaxeToolkit\haxe\ )的 env HAXEPATH,然后将该路径添加至系统 PATH env。
  4. 自动安装程序将安装用于部分 Haxe 工具(比如 haxelibhaxedoc)的 NekoVM。 如果通过源代码创建,请从 http://nekovm.org/download 下载并安装 neko。

    注:将 NEKO_INSTPATH 设置为 Neko。 例如,E:\neko-2.0.0-win\ 并将 NEKO 路径添加至系统 PATH env。

  5. 使用以下内容安装所需的资源库(OpenFL 的一部分):

    注:haxelib 是 haxe 的一部分,位于 HAXEPATH 中。

    1. haxelib install openfl
    2. haxelib install hxcpp
    3. haxelib install hxlibc
    4. haxelib install openfl setup android

    注: 你可以通过 haxelib 安装,或提供面向 Android SDK,NDK 和 Ant 的本地安装目录来跳过这一步骤,如以下屏幕截图所示。

  6. 现在资源库已安装,你可以创建流程。 你可以输入以下命令,查看已安装的资源库:
    1. >haxe
    2. >haxelib
    3. >openfl
    4. >neko

    例如,如果输入 haxe,屏幕将显示以下内容:

创建流程

创建示例应用 (OpenFL)

示例 OpenFL 应用可通过以下命令创建:

>haxelib run openfl create DisplayingABitmap

上述命令可创建示例项目。

针对 Android 创建面向 x86 的应用

应使用以下命令针对 Android 创建/清空面向 x86 的 haxe OpenFL 应用:

>haxelib run openfl build android –DHXCPP_X86 –verbose
>haxelib run openfl clean android –DHXCPP_X86 –verbose

配置 Haxe OpenFL for x86 for Android

以下文件可添加面向 Android 的 x86 配置设置:

  • haxe/lib/hxlibc/1,0,0/build-tool/gcc-toolchain.xml
  • haxe/lib/hxlibc/1,0,0/build-tool/android-toolchain.xml
  • haxe/lib/hxtools/1,1,3/src/platforms/AndroidPlatform.hx
  • haxe/lib/hxtools/1,1,3/project/HXProject.hx
  • openfl-native/1,1,1/project/Build.xml to get -x86 suffix

输入或二进制程序

最终的二进制程序生成至

<projectDir>/Export/android/obj/libApplicationMain.so

二进制程序生成至

<projectDir>\Export\android\bin\libs\x86

已知问题或其他信息

  • 安装程序包失败。 例如: haxelib install openfl 失败,提示
    • “Error Connect/Blocking”
    • 解决方法: 如果使用面向网络的代理程序,请确认已完成代理程序设置;例如:haxelib proxy
  • openfl build android 失败,提示
    • ANT/...build.xml , target 16/XX not found
    • 解决方法: 在面向 OpenFL 项目的 project.xml 中添加以下内容: <android target-sdk-version="19" /> // where 19 is one of the available SDKs.

资源

http://haxe.org/

https://github.com/HaxeFoundation/haxe

关于作者

Praveen Kundurthy 任职于英特尔® 软件和服务事业部。 他拥有计算机工程硕士学位。 他主要专注于移动技术、Microsoft Windows* 和游戏开发领域。

有关编译器优化的更完整信息,请参阅优化通知