我们可以将移动应用程序开发为混合应用程序(HybridWebContainer)。混合应用的优势在于它们可以在应用商店中发布。同时,通过将应用程序代码和SAPUI5库文件嵌入混合容器中,用户只需安装一次文件,无需每次启动应用程序时都下载。但是库的大小变得很重要,因为每个用户都必须安装文件,而在Web应用程序中,库部署在服务器上,用户只需要在运行时下载所需的库部分。要在混合应用程序中包含所需资源,可以使用静态移动运行时包openui5-runtime-mobile*.zip。此包不包含在SAPUI5中,而是包含在开源版本OpenUI5中。这些包的库大小相当小,因为很可能不需要的内容已被删除,例如测试页。一个包包含调试版本以及所有JavaScript文件的优化和缩小版本。因此,该包既可用于生产用途,也可用于调试目的。要在PhoneGap等应用程序包装器中使用此包,请将包解压缩到应用程序开发项目的适当资源位置。然后应用程序包装器构建包含文件并使它们在运行时可用。为了控制文件构建的包文件的大小,它只包含最可能的控件库,而不是所有控件库。根据混合应用程序的不同,可能需要在运行时通过从相应文件夹复制库来添加库,或者删除库以减小包大小,从而减小用户的安装大小。此文件包含以下控件库:sap.fsap.msap.tntsap.ui.coresap.ui.layoutsap.ui.suitesap.ui.unifiedsap.uxap可能没有绝对客观的标准来决定包含或不包含哪些库.它仅基于经验法则,无论如何都需要针对许多应用程序进行调整。此外,移动/混合包不包含通常不需要的某些类型的文件。每个客户的实际应用可能不同,需要根据具体应用的要求添加相应的文件。SAPUI5应用程序中最初设计的library-preload.js包含库中的所有控件。使用此文件加载库可减少HTTP请求的数量。但是SAPUI5的HybridWebContainer不再需要library-preload.js文件,因为library文件是在Hybrid应用的执行环境中从本地加载的,没有任何HTTP延迟。默认情况下,SAPUI5会尝试访问它们,因此您可能会在日志文件或开发人员工具中看到加载它们的失败尝试。但是,这些错误消息没有影响,您可以通过声明不存在此类文件并在SAPUI5引导程序脚本标记中设置以下配置来消除它们:data-sap-ui-preload=""OptimizationofpackagesizedespitestaticpackagesSmall足以包含在混合应用程序中,但仍然可以进一步减小大小并通过删除其他文件来优化特定应用程序的内容。以下列表提供了一些示例:如果不需要相应的控件库,可以删除所有库文件夹。例如,在OpenUI5版本中可以删除suite和unified文件夹。在每个/resources/sap/.../themes文件夹中,可以删除除正在使用的主题文件夹之外的所有主题文件夹。设备就绪事件混合Web容器需要一些时间来初始化。这段时间AJAX请求的发送是阻塞的,也就是说AJAX请求一旦发送,JavaScript代码就停止了,代码执行也就停止了。这会导致UI冻结。SAPUI5中的OData模型在内部使用AJAX请求,因此OData模型初始化必须在混合容器准备好后进行,以避免UI冻结。初始化后,混合Web容器会触发设备就绪事件。为避免UI冻结,请移动创建OData模型并将其绑定到设备就绪事件侦听器的代码。示例:functionappReady(){sap.ui.getCore().setModel(newsap.ui.model.odata.v2.ODataModel(
