Skip to content

An Introduction To Egret Native Solution

WanderWang edited this page Jun 13, 2014 · 8 revisions

高性能JS-C Binding 原生支持架构

Egret选择在1.0 beta版本推出之时也一并发布了Egret原生打包对于Android系统的支持方案(具体的架构可以参考下图),我们主要可以为开发者提供一个使用TypeScript语言进行游戏逻辑的高级编写后,只用这一套代码就能通过2种方式分别对Web浏览器和原生提供支持。

架构设计

原生支持主要是我们在打包方案里封装了一个对于JavaScript逻辑进行解释的SpiderMonkey模块,同时还将渲染,事件,声音原本浏览器完成的环节做了一个对于系统层的映射驱动封装,项目中具体体现为一个封装好的库供打包时调用,通过这个驱动层,就实现了从浏览器Canvas绘制到系统底层硬件加速绘制的一个映射关系。开发者只需要按照我们的Egret Android打包支持规范即可将自己的游戏脚本与我们封装好的Lib库进行原生编译和打包,从而生成原生应用类型。

部署步骤

步骤一:安装 apktool

  • 下载apktool
  • 将其添加至环境变量的PATH变量
  • 在命令行执行 apktool,确认安装成功

步骤二:安装 Android SDK(可选)

此步骤非必须,安装 Android SDK 主要是为了实现输出调试日志以及自动安装 apk文件到手机上

  • 下载 Android SDK
  • 将 {Android SDK}/platform-tools/添加至环境变量的PATH变量(可选)
  • 在命令行执行 adb,确认安装成功

步骤三:下载 Egret Android Packager

  • 这里 下载 Egret Android Packager , 其中包含 EgretFrameworkNative文件夹,下述步骤需要此文件夹路径

步骤四:生成一个 Android应用签名

  • 安装 java jdk
  • 执行 keytool -genkey生成一个签名

步骤四:创建新项目

egret create HelloEgret --runtime native

步骤五:部署打包

  • 执行以下脚本,生成配置文件

egret package_to_native -config

上述脚本会在当前文件夹生成一个 package_to_native.config 文件,请在其中填写 项目路径、签名文件路径、签名密码、EgretFrameworkNative文件夹路径。

注意

  • 签名文件需要放在脚本执行当前目录
  • 配置文件中的 egret-native 字段指的是 egret-android-support 项目中的 EgretFrameworkNative 文件夹,其中应包括一个 apktool.yml 文件

执行以下脚本 egret package_to_native package_to_native.config

如果您已经安装了 Android SDK,并确认您的Android设备与PC相连并打开了USB调试,您的应用会被自动安装进手机中,否则将会在当前目录下生成 apk 文件。

注意:如果在设备调试时不能安装到手机中,可能是您的egret版本过低,请查看下 egret_core/tools/lib/tools/package_to_native.js文件的第17行,如果是keyfile请手动改成keystore并重新安装下egret。)

开发规范与注意事项

  • 请勿在业务逻辑中调用任何与浏览器或 DOM 相关的API,如 window , document , canvas.drawImage() 等,而是应该通过 Egret 提供的各个 Context 来进行调用

路线图

  • Egret Native 解决方案目前提供的是暂不开源的社区版本。主要是考虑到目前 Native版本还处于相对早期的阶段,未来部分代码可能会有较大幅度的变化和API修改,考虑到为了降低开发者进行手工版本升级、解决向下兼容问题的的门槛,Egret团队决定暂时将此版本由核心团队维护和演化,并在合适的时机调整下一步策略。
  • 目前社区版本由于暂不开源,如果开发者有需求将使用 Egret 制作的产品运营于商业平台,并存在第三方SDK接入等问题,请与 Egret 核心团队联系,我们将提供源代码级别的技术支持或联合开发。
  • 未来的版本我们会逐步支持 iOS 与 Windows Phone 8 的原生部署

第三方库版权信息