业界另一个流行的框架 React Native,构建出的是一个真正的原生移动应用,其使用的基础 UI 组件与用 Object C或 Java 编写的原生移动应用相比并无差异,只不过 React Native 应用里的 UI 组件,是由 Web 开发人员通过 JavaScript 语言和 React 进行操纵,最后被编译器转换成原生组件罢了。
SAP BTP Mobile Service 基于的 NativeScript 框架的工作原理,和 React-Native 又有所不同。React Native 通过 Bridge 概念实现了 JavaScript 和移动操作系统原生 API 的双向交互,而 NativeScript 编写的JavaScript 代码,在一个称之为 NativeScript Runtime 的环境中执行,后者负责 JavaScript 代码同移动平台原生 API 交互。NativeScript Runtime 本质是一个 JavaScript 虚拟机,在 Android 平台上采用 Google V8 引擎实现,在 iOS 上基于 WebKit JavaScriptCore 实现。
我们登录 SAP BTP 控制台,在 Service Marketplace 里找到 Mobile Services,点击 Support 进入服务控制台:
新建一个应用:
维护应用的 ID 和 Name 字段:
给该移动应用分配 Features:
这些 Features 可以理解成 SAP 对企业级移动应用所需满足的最基本功能集合所抽象出的一些最佳实践。根据项目实际需要分配 Features 之后,我们用WebIDE生成的移动应用工程项目,将自动包含对应的模板实现。
其中一个名叫 Mobile Sample OData ESPM 的 Feature,扮演的是类似 UI5 开发中 Mock Server 的角色,可以让移动应用在开发过程中,不需要连接远端的 OData 服务实现。ESPM 即 Enterprise Sales Procurement Model 的缩写, 包含 SalesOrder,Customers,Products 等一系列业务数据的集合。
给移动应用分配好需要的 Features 之后,打开 SAP WebIDE,启用 Mobile Service Development Tools这个扩展:
成功启用后,在 SAP WebIDE 左侧会多出一个 MDK Development 的标签:
创建一个新的 MDK 项目:
在 Application ID 下拉菜单里,选择刚才在 Mobile Service 控制台里创建并分配了 Features 的应用 ID com.sap.jerry.demo:
Mobile Service Development Tools 扩展自动生成的项目如下图所示,其中文件 Application.app 所起的作用,类似 Android原生开发项目中的 manifest.xml 配置文件:
如何将这个 WebIDE 里的移动应用工程,部署到 Android 设备上呢?右键菜单里选择 MDK Deploy and Activate:
WebIDE 控制面板里打印出部署成功的消息:
通过 WebIDE 部署成功后,会生成一个二维码。此时 Android 移动设备上若已安装 SAP Mobile Services Client,扫描该二维码,会自动在 Android 设备上刚刚部署好的应用。