什么是 SmartDeviceLink (SDL)
SmartDeviceLink (SDL) 是一系列协议和消息集合,可以将智能手机上的应用程序连接到车载主机。这些消息允许消费者使用通用的车载接口,如触摸屏显示、嵌入式语音识别、方向盘控制和各种车辆旋钮和按钮,与他们的应用程序进行交互。SDL 生态系统由三个主要组件组成。
- 核心 组件是在车载主机中实施软件,由车辆制造商(OEM)实现。将此组件集成到其主机单元和 HMI 中,基于一系列准则和模板,可以访问各种智能手机应用。
- 可选的 SDL 服务器 可以由车辆 OEM 使用来更新应用程序策略并收集连接应用程序的使用信息。
- iOS、Android / Java Suite 和 JavaScript 库由应用开发者实现到他们的应用程序中,以便通过连接的主机实现命令和控制。
- 要为 SDL 建议新功能,包括 iOS 库,请访问 SDL Evolution GitHub 项目。
- 要了解是否应将贡献记录为 iOS Pull Request 或 Issue 或 SDL Evolution 议案,请参考 本文件。
SDL iOS App Library
SDL的移动库组件旨在在终端用户的智能设备上的SDL启用应用程序中运行。此库允许应用程序通过蓝牙、USB和TCP连接到SDL启用的大脑单元和硬件。一旦库通过首选传输方法在智能设备和大脑单元之间建立连接,这两个设备就能够使用SDL定义的协议进行通信。然后,集成该库项目的应用程序能够通过文本、媒体和其他交互元素将其功能展示给大脑单元。
您可以在SmartDeviceLink网站上找到有关如何使用此库的指南和文档。您可以在SDL Evolution Github上找到即将发布的路线图。
安装
要将此库作为框架安装到您的应用程序中,请参阅安装指南。其中包含了如何使用依赖关系管理器Accio、Carthage、CocoaPods和Swift Package Manager进行安装的说明,以及如何手动安装库框架的说明。
添加动态框架
我们的发行版附带的动态框架文件可以被拖放到应用程序中。动态框架被支持在iOS 8+上。**警告:您不能直接将框架提交到应用商店。您必须首先移除框架的模拟器部分。先移除x64和i386部分,如下所示:**
lipo -remove i386 -remove x86_64 -o SmartDeviceLink.framework/SmartDeviceLink SmartDeviceLink.framework/SmartDeviceLink
您可以通过以下方式检查当前架构
lipo -info SmartDeviceLink.framework/SmartDeviceLink
获取帮助
如果您有问题,请首先查看我们网站上的指南 SmartDeviceLink网站。
如果您发现了bug,请在相应的仓库中发布一个issue。在继续之前,请参阅贡献指南。如果您需要一般性帮助或有其他问题,您可以通过 注册 加入SDL Slack,与其他开发者以及项目的维护者进行聊天。
示例应用
这个库仓库包含两个示例应用:一个用Objective-C编写的,另一个用Swift编写的。如果您已安装CocoaPods,您可以通过在您的终端中执行 pod try SmartDeviceLink
来轻松运行其中一个示例应用。或者,您也可以克隆或下载项目,但在尝试构建和运行示例应用之前,您必须遵循安装步骤。
还有其他示例应用可用在示例组织中,这些需要CocoaPods来安装依赖项。
为项目做贡献
我们欢迎对该项目做出贡献,但在了解项目组织方式后会有所帮助。
- 所有的Pull Requests 必须修复一个问题。在创建用于bug或功能的PR之前,确保已经存在一个相关的开放issue。如果没有,请打开一个!
- 我们建议您告知项目维护者您打算为该issue贡献一个PR。这允许我们内部跟踪将要贡献的PR,并为审查您的PR安排时间。此外,我们可能因为各种原因要求您不要为该issue的PR工作(见下文)。
- 我们欢迎提交修复bug的PR!如果有已确认的bug问题,我们欢迎提交修复。PR合并前需要项目维护者进行审查。
- 功能的PR需要额外的规划。在可以创建问题之前,功能必须使用Evolution过程得到SDLC的批准。此外,在可以打开PR之前,功能必须在SDLC批准后开始开发。最后,如果有底层功能需要在多个项目中具有或应该具有一致性,直到所有这些项目的PR都准备好审查,否则PR无法合并。
开发准备
为准备库开发,你需要执行几个步骤
创建或更新RPC
在创建或更新RPC时,你需要安装并使用RPC生成器。生成器必须用于确保内容正确。要使用生成器,需要更新RPC规范存储库中的RPC。
运行测试
要运行测试,你需要启动Carthage测试库。首先,请安装Carthage。
然后,从项目根目录运行
carthage bootstrap --use-xcframeworks --platform ios
在这一点上,您可以运行 Xcode 中的测试,或者如果您想以 CI 服务器上运行测试的方式运行测试,请参阅描述这些测试的 YAML 文档。您还可以查看 以前运行的 CI 测试,以了解它们当前如何运行。