• Stars
    star
    186
  • Rank 207,316 (Top 5 %)
  • Language
    Java
  • License
    BSD 3-Clause "New...
  • Created about 10 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SmartDeviceLink libraries for Android, Java SE, and Java EE

Build Status codecov Slack Status

SmartDeviceLink (SDL)

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 Core component is the software which Vehicle Manufacturers (OEMs) implement in their vehicle head units. Integrating this component into their head unit and HMI based on a set of guidelines and templates enables access to various smartphone applications.
  • The optional SDL Server can be used by Vehicle OEMs to update application policies and gather usage information for connected applications.
  • The App Libraries - Android, iOS, JavaScript, JavaSE (Embedded), and JavaEE (Cloud) - are implemented by app developers into their applications to enable command and control of a connected head unit.

Pull Requests Welcome!

To understand if a contribution should be entered as a Java Suite Pull Request (or issue), or an SDL Evolution Proposal, please reference this document.

SmartDeviceLink

App Library

The app library component of SDL is meant to run on the end userโ€™s smart-device from within SDL enabled apps, as an embedded app, or connected to the cloud. App libraries allow the apps to connect to SDL enabled head-units and hardware through bluetooth, USB, and TCP for Android, and cloud and embedded apps can connect through web sockets, Java Beans, and other custom transports. Once the library establishes a connection between the smart device and head-unit through the preferred method of transport, the two components 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.

SmartDeviceLink Java Suite

You can find guides and API Reference Documentation specific to SDL Android, JavaSE, and JavaEE libraries on smartdevicelink.com.

Contents and timing for SDL Java Suite releases can be tracked on the GitHub Projects page.

Additional information about recent and upcoming SDL Releases can be found in the SDL Evolution README.

SmartDeviceLink Android

Maven Central

Installation

Dependency Managers

To compile with the latest release of SDL Android, include the following in your app's build.gradle file,

repositories {
    mavenCentral()
}
dependencies {
    implementation 'com.smartdevicelink:sdl_android:5.+'
}

For Maven or Ivy snippets please look at Maven Central

Manually

If you prefer not to use any of the aforementioned dependency managers, you can integrate SDL Android into your project manually.

Proguard Rules

Developers using Proguard to shrink and obfuscate their code should be sure to include the following lines in their proguard-rules.pro file:

-keep class com.smartdevicelink.** { *; }
-keep class com.livio.** { *; }
# Video streaming apps must add the following line
-keep class ** extends com.smartdevicelink.streaming.video.SdlRemoteDisplay { *; }

SmartDeviceLink Java

JavaSE

Maven Central

The JavaSE project is meant to allow SDL compatibility for embedded applications.

Dependency Managers

To compile with the latest release of SDL JavaSE, include the following in your app's build.gradle file,

repositories {
    mavenCentral()
}
dependencies {
    implementation 'com.smartdevicelink:sdl_java_se:5.+'
}

JavaEE

Maven Central

The JavaEE project is meant to allow SDL compatibility for web applications.

Dependency Managers

To compile with the latest release of SDL JavaEE, include the following in your app's build.gradle file,

repositories {
    mavenCentral()
}
dependencies {
    implementation 'com.smartdevicelink:sdl_java_ee:5.+'
}

Manually building a JAR

If you prefer making a JAR, simply call:

gradle build

from within the project (JavaSE or JavaEE) and a JAR should be generated in the build/libs folder

Java Suite Repo Structure

Java Suite Folder Structure

base Folder

The base folder contains the source set that is shared between all of the compilable projects. This folder does not contain a compilable project.

android Folder

The android folder contains the SDL Android library as well as the sample project for Android. Both of those are compilable projects.

javaSE

The javaSE folder contains the SDL JavaSE Library. The base folder source set is added as a dependency. This project can be used for embedded or remote SDL applications. It uses a web socket transport by default but can be made to work with other transports via the CustomTransport.

JavaSE Sample App

The JavaSE sample app is in the hello_sdl_java folder. It demonstrates an efficient way to structure a Java app using the JavaSE library.

javaEE

The javaEE folder contains the SDL JavaEE library. The JavaSE folder is used as a source set and added as a dependency. This library is based off the JavaSE library and will contain specifics for the JavaEe platform.

JavaEE Sample App

The JavaEE sample app is in the hello_sdl_java_ee folder. Most of the code is commented out since the library and sample app do not include the dependencies of JavaEE due to licensing issues. However, the commented out code demonstrates how to build a Java based app into the JavaEE bean architecture.

More Repositories

1

sdl_core

SmartDeviceLink In-Vehicle Software and Sample HMI
C++
241
star
2

sdl_ios

Get your app connected to the ๐Ÿš™, make your users feel like a ๐ŸŒŸ
Objective-C
169
star
3

sdl_evolution

Tracking and proposing changes to SDL's public APIs.
Objective-C
33
star
4

sdl_server

The SmartDeviceLink (SDL) server handles authentication, data collection, and basic configurations for SDL connected vehicles.
JavaScript
20
star
5

sdl_app_library_guides

DocDown Guide Content for
16
star
6

sdl_javascript_suite

SmartDeviceLink library for applications developed in JavaScript
JavaScript
15
star
7

rpc_spec

Spec for RPC messages
Python
15
star
8

protocol_spec

Describes the communication protocol between a smartdevicelink enabled head unit and mobile application
14
star
9

sdl_hmi

JavaScript
14
star
10

rpc_builder_app_ios

App designed to allow free testing of the SDL Interface during development
Objective-C
13
star
11

relay_app_ios

Objective-C
13
star
12

sdl_hmi_integration_guidelines

Integration Guidelines for SDL Core into the vehicle HMI
12
star
13

generic_hmi

A sample HMI to use with sdl_core
JavaScript
8
star
14

sdl_core_docker

Docker build for SDL Core
Shell
7
star
15

manticore

Dynamically provision SDL Core and SDL HMI instances in the cloud
JavaScript
6
star
16

sdl_atf

Automated Tests for SmartDeviceLink
Lua
5
star
17

sdl_core_guides

3
star
18

rpc_builder_app_android

RPC builder for Android
Java
3
star
19

sdl_core_documentation

Software Architecture Documentation for SDL Core
3
star
20

sdl_security_ios

A TLS based security library built to interact with sdl_ios and provide TLS certificate authentication and encryption / decryption
Objective-C
3
star
21

sdl_requirements

Collection of requirements/technical tasks for new sdl_core features
2
star
22

sdl_markdown_spec

Specification writing documentation in DocDown
2
star
23

sdl_security_java_suite

Open Source TLS Based Security Library for SDL Java Suite
C
2
star
24

sdl_overview_guides

Python
2
star
25

sdl_atf_test_scripts

Test scripts for sdl_atf
Lua
2
star
26

sdl_whitepaper

Technical overview whitepaper markdown repository
1
star
27

SHAIDkit_js

A Javascript API wrapper for SHAID
JavaScript
1
star
28

hardwarevalidator_android

Hardware Validator - Android
1
star
29

sdl_server_guides

Documentation for the sdl_server
1
star
30

manticore-images

A repository of the code used to construct images for use by Manticore
JavaScript
1
star
31

sdl_shaid_docs

Documentation in DocDown for SHAID.
1
star
32

bson_c_lib

Library for converting a map to and from BSON format
Shell
1
star
33

sdl_broker

JavaScript
1
star
34

sdl_ci

Documentation and configurations for Jenkins CI projects tied to sdl_core
1
star
35

sdl_core_ci

Repository for housing continuous integration related scripts and files for SDL Core
Shell
1
star