SmartDeviceLink (SDL) is a standard set of protocols and messages that connect applications on a smartphone to a vehicle head unit. This messaging enables a consumer to interact with their application using common in-vehicle interfaces such as a touch screen display, embedded voice recognition, steering wheel controls and various vehicle knobs and buttons. There are three main components that make up the SDL ecosystem.
The mobile library component of SDL is meant to run on the end user’s smart-device from within SDL enabled apps. The library allows the apps to connect to SDL enabled head-units and hardware through Bluetooth, USB, and TCP. Once the library establishes a connection between the smart device and head-unit through the preferred method of transport, the two devices are able to communicate using the SDL defined protocol. The app integrating this library project is then able to expose its functionality to the head-unit through text, media, and other interactive elements.
To install this library as a framework in your app, see the Installation Guide. There are instructions on how to install using the dependency managers Accio, Carthage, CocoaPods, and Swift Package Manager, as well as how to install the library framework manually.
Tagged to our releases is a dynamic framework file that can be drag-and-dropped into the application. Dynamic frameworks are supported on iOS 8+. WARNING: You cannot submit your app to the app store with the framework as is. You MUST strip the simulator part of the framework first. Strip the x64 and i386 portions first like so:
lipo -remove i386 -remove x86_64 -o SmartDeviceLink.framework/SmartDeviceLink SmartDeviceLink.framework/SmartDeviceLink
You can check the current architectures like so:
lipo -info SmartDeviceLink.framework/SmartDeviceLink
If you have questions, first view our guides on the SmartDeviceLink website.
If you see a bug, please post an issue on the appropriate repository. Please see the contribution guidelines before proceeding. If you need general assistance, or have other questions, you can sign up for the SDL Slack and chat with other developers and the maintainers of the project.
This library repository contains two example apps: one written in Objective-C and one in Swift. If you have CocoaPods installed, you can easily run one of the example apps by executing
pod try SmartDeviceLink in your terminal. Alternatively, you can clone or download the project, but before attempting to build and run the example apps you must follow the installation steps.
There are additional example apps available in the example organization, these require CocoaPods to install dependencies.
We welcome contributors to the project, but it helps to know a few things about how the project is organized.
To prepare the library for development, you will need to take a few steps:
git submodule initand
git submodule update.
When creating or updating an RPC, you will need to install and use the RPC generator. The generator must be used to ensure that the content is correct. To use the generator, the RPC must be updated on the RPC spec repository.
To run tests, you will need to bootstrap the Carthage testing libraries. To do so, first install Carthage.
Then, from the root project directory, run:
carthage bootstrap --platform ios
At this point, you can run tests from Xcode, or, if you wish to run the tests exactly as they will be run on the CI server, see the YAML document describing those tests. You can also check the previously run CI tests to see how they're currently being run.