什么是 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 Proposal 提交,请参阅 此文档。
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 网站的指南。
如果您看到一个错误,请在相应的仓库中发布一个问题。在继续之前,请查看 贡献指南。如果您需要一般性帮助或还有其他问题,您可以在 SDL Slack 上注册,并与其他开发者以及项目的维护者聊天。
示例应用
此库仓库包含两个示例应用:一个用 Objective-C 编写,一个用 Swift 编写。如果您已安装 CocoaPods,可以通过在终端中执行 pod try SmartDeviceLink
来轻松运行其中一个示例应用。或者,您可以克隆或下载项目,但在尝试构建和运行示例应用之前,您必须遵循 安装步骤。
在示例组织 中还有其他示例应用,这些需要 CocoaPods 来安装依赖项。
向项目贡献力量
我们欢迎对项目做出贡献,但了解项目的组织方式会有所帮助。
- 所有 Pull Requests 必须 解决一个问题。在为错误或功能创建 Pull Request 之前,请确保对此问题有一个已开放的 issue。如果没有,请打开一个 issue!
- 我们建议您告知项目负责人您打算为该问题提交一个_PULL REQUEST_(PR)。这使我们能够跟踪将要提交的PR,并规划时间来审查您的PR。此外,由于各种原因,我们可能会要求您不要为该问题工作(请参见下文)。
- 欢迎提交改进bug的PR!如果已经确认了某个软件缺陷问题,我们将欢迎您的修复。在合并之前,修改后的代码需要项目负责人进行审查。
- 功能PR需要额外的规划。在提交一个问题时,功能必须通过SDLC使用进化的流程进行批准。此外,只有在SDLC批准以发布版本开发的功能后,才能为PR打开。最后,如果在所有相关项目的PR都已准备好审查之前,底层功能需要或应跨多个项目进行对齐,则PR无法合并。
为开发做准备
为了准备开发该库,您需要进行以下步骤
创建或更新RPC
在创建或更新RPC时,您需要安装并使用RPC生成器。必须使用生成器来确保内容的正确性。要使用生成器,必须更新
运行测试
要运行测试,您需要启动Carthage测试库。首先,您需要安装Carthage。
然后,从根项目目录中运行
carthage bootstrap --use-xcframeworks --platform ios
此时,您可以从Xcode运行测试,或者,如果您希望以CI服务器上运行测试的方式运行测试,请参阅描述这些测试的YAML文档。您还可以查看先前运行的CI测试以了解它们当前是如何运行的。