SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
www.luxoft.com
Java and Swift: How to Create
Applications for Automotive Head
Units
Zhdanov Pavlo
www.luxoft.com 2www.luxoft.com
About me
• Master degree Radiophysics and electronics
• Master degree Robotics
• Publication in CVPR conference - Human action
recognition
• More than 6 years experience as C++ software developer
• More than 7 years experience in teaching
• 2 years experience in entrepreneurship
• 2 years experience in machine learning
www.luxoft.com
OVERVIEW
● What is SDL
● Integrations on JAVA
● Integrations on SWIFT
● Where can I take SDL SDK
www.luxoft.com
SECTION 1:
What is SDL?
www.luxoft.com 5www.luxoft.com
www.luxoft.com 6www.luxoft.com
www.luxoft.com
SECTION 2:
Integrations on Java
www.luxoft.com
SmartDeviceLink Service
www.luxoft.com 9www.luxoft.com
public class SdlService extends Service {
//...
}
Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com 10www.luxoft.com
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.mySdlApplication">
<application>
<service
android:name=".SdlService"
android:enabled="true"/>
</application>
</manifest>
Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com
SmartDeviceLink Manager
www.luxoft.com 12www.luxoft.com
public class SdlService extends Service {
//The manager handles communication between the application and SDL
private SdlManager sdlManager = null;
//...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (sdlManager == null) {
MultiplexTransportConfig transport = new MultiplexTransportConfig(this, APP_ID, MultiplexTransportConfig.FLAG_MULTI_SECURITY_OFF);
// The app type to be used
Vector<AppHMIType> appType = new Vector<>();
appType.add(AppHMIType.MEDIA);
// The manager listener helps you know when certain events that pertain to the SDL Manager happen
SdlManagerListener listener = new SdlManagerListener() { … };
// Create App Icon, this is set in the SdlManager builder
SdlArtwork appIcon = new SdlArtwork(ICON_FILENAME, FileType.GRAPHIC_PNG, R.mipmap.ic_launcher, true);
// The manager builder sets options for your session
SdlManager.Builder builder = new SdlManager.Builder(this, APP_ID, APP_NAME, listener);
builder.setAppTypes(appType);
builder.setTransportType(transport);
builder.setAppIcon(appIcon);
sdlManager = builder.build();
sdlManager.start();
}
} Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com 13www.luxoft.com
public class SdlService extends Service {
//The manager handles communication between the application and SDL
private SdlManager sdlManager = null;
//...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (sdlManager == null) {
MultiplexTransportConfig transport = new MultiplexTransportConfig(this, APP_ID, MultiplexTransportConfig.FLAG_MULTI_SECURITY_OFF);
// The app type to be used
Vector<AppHMIType> appType = new Vector<>();
appType.add(AppHMIType.MEDIA);
// The manager listener helps you know when certain events that pertain to the SDL Manager happen
SdlManagerListener listener = new SdlManagerListener() { … };
// Create App Icon, this is set in the SdlManager builder
SdlArtwork appIcon = new SdlArtwork(ICON_FILENAME, FileType.GRAPHIC_PNG, R.mipmap.ic_launcher, true);
// The manager builder sets options for your session
SdlManager.Builder builder = new SdlManager.Builder(this, APP_ID, APP_NAME, listener);
builder.setAppTypes(appType);
builder.setTransportType(transport);
builder.setAppIcon(appIcon);
sdlManager = builder.build();
sdlManager.start();
}
} Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com 14www.luxoft.com
// The manager listener helps you know when certain events that pertain to the SDL Manager happen
SdlManagerListener listener = new SdlManagerListener() {
@Override
public void onStart() {
// After this callback is triggered the SdlManager can be used to interact with the connected SDL
session (updating the display, sending RPCs, etc)
}
@Override
public void onDestroy() {
SdlService.this.stopSelf();
}
@Override
public void onError(String info, Exception e) {
}
};
Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com
Listening RPC notification and
events
www.luxoft.com 16www.luxoft.com
Map<FunctionID, OnRPCNotificationListener> onRPCNotificationListenerMap = new HashMap<>();
onRPCNotificationListenerMap.put(FunctionID.ON_HMI_STATUS, new
OnRPCNotificationListener() {
@Override
public void onNotified(RPCNotification notification) {
OnHMIStatus onHMIStatus = (OnHMIStatus) notification;
if (onHMIStatus.getHmiLevel() == HMILevel.HMI_FULL && onHMIStatus.getFirstRun()){
// first time in HMI Full
}
}
});
builder.setRPCNotificationListeners(onRPCNotificationListenerMap);
Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com
SmartDeviceLink Router
Service
www.luxoft.com 18www.luxoft.com
public class SdlRouterService extends
com.smartdevicelink.transport.SdlRouterService {
//Nothing to do here
}
Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com
SmartDeviceLink Broadcast
Receiver
www.luxoft.com 20www.luxoft.com
public class SdlReceiver extends SdlBroadcastReceiver {
@Override
public void onSdlEnabled(Context context, Intent intent) {
//Use the provided intent but set the class to the SdlService
intent.setClass(context, SdlService.class);
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
context.startService(intent);
}else{
context.startForegroundService(intent);
}
}
@Override
public Class<? extends SdlRouterService> defineLocalSdlRouterClass() {
//Return a local copy of the SdlRouterService located in your project
return com.company.mySdlApplication.SdlRouterService.class;
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
//your code here
}
}
Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com
MainActivity
www.luxoft.com 22www.luxoft.com
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//If we are connected to a module we want to start our SdlService
SdlReceiver.queryForConnectedService(this);
}
}
Reference: https://www.smartdevicelink.com/en/guides/android/getting-started/integration-basics/
www.luxoft.com
SECTION 3:
Integrations on Swift
www.luxoft.com
Proxy manager
www.luxoft.com 25www.luxoft.com
import SmartDeviceLink
class ProxyManager: NSObject {
// Singleton
static let sharedManager = ProxyManager()
private override init() {
super.init()
}
}
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com 26www.luxoft.com
import SmartDeviceLink
class ProxyManager: NSObject {
// Manager
fileprivate var sdlManager: SDLManager!
// Singleton
static let sharedManager = ProxyManager()
private override init() {
super.init()
}
}
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
Lifecircle configuration
www.luxoft.com 28www.luxoft.com
Connections
• TCP - WiFi
• iAP - USB, Bluetooth
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
IAP
www.luxoft.com 30www.luxoft.com
let lifecycleConfiguration = SDLLifecycleConfiguration(
appName:"<#App Name#>",
fullAppId: "<#App Id#>"
)
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
TCP
www.luxoft.com 32www.luxoft.com
let lifecycleConfiguration = SDLLifecycleConfiguration(
appName: "<#App Name#>",
fullAppId: "<#App Id#>",
ipAddress: "<#IP Address#>",
port: <#Port#>
)
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
Short Application name
www.luxoft.com 34www.luxoft.com
lifecycleConfiguration.shortAppName = "<#Shortened App Name#>"
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
Application Icon
www.luxoft.com 36www.luxoft.com
if let appImage = UIImage(named: "<#AppIcon Name#>") {
let appIcon = SDLArtwork(
image: appImage,
name: "<#Name to Upload As#>",
persistent: true, as: .JPG /* or .PNG */)
lifecycleConfiguration.appIcon = appIcon
}
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
Application Type
www.luxoft.com 38www.luxoft.com
lifecycleConfiguration.appType = .media
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
Implementation of Proxy class
www.luxoft.com 40www.luxoft.com
class ProxyManager: NSObject {
…
private override init() {
super.init()
// Used for USB Connection
let lifecycleConfiguration = SDLLifecycleConfiguration(appName: appName, fullAppId: appId)
// App icon image
if let appImage = UIImage(named: "<#AppIcon Name#>") {
let appIcon = SDLArtwork(image: appImage, name: "<#Name to Upload As#>", persistent: true, as: .JPG)
lifecycleConfiguration.appIcon = appIcon
}
lifecycleConfiguration.shortAppName = "<#Shortened App Name#>"
lifecycleConfiguration.appType = .media
let configuration = SDLConfiguration(lifecycle: lifecycleConfiguration,
lockScreen: .enabled(),
logging: .default(),
fileManager: .default())
sdlManager = SDLManager(configuration: configuration, delegate: self)
}
…
} Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
Start the SDLManager
www.luxoft.com 42www.luxoft.com
class ProxyManager: NSObject {
…
func connect() {
// Start watching for a connection with a SDL Core
sdlManager.start { (success, error) in
if success {
// Your app has successfully connected with the SDL Core
}
}
}
…
}
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com 43www.luxoft.com
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Initialize and start the proxy
ProxyManager.sharedManager.connect()
return true
}
}
Reference: https://www.smartdevicelink.com/en/guides/iOS/getting-started/integration-basics/
www.luxoft.com
SECTION 3:
Where can I take SDL SDK?
www.luxoft.com
www.smartdevicelink.com
www.luxoft.com
Thanks for attention
Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

Guice tutorial
Guice tutorialGuice tutorial
Guice tutorial
Anh Quân
 
UIViewControllerのコーナーケース
UIViewControllerのコーナーケースUIViewControllerのコーナーケース
UIViewControllerのコーナーケース
Katsumi Kishikawa
 
Google Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleGoogle Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification Google
Mathias Seguy
 
Migrating to Angular 2
Migrating to Angular 2Migrating to Angular 2
Migrating to Angular 2
FITC
 

Was ist angesagt? (20)

Guice tutorial
Guice tutorialGuice tutorial
Guice tutorial
 
UIViewControllerのコーナーケース
UIViewControllerのコーナーケースUIViewControllerのコーナーケース
UIViewControllerのコーナーケース
 
Rohit android lab projects in suresh gyan vihar
Rohit android lab projects in suresh gyan viharRohit android lab projects in suresh gyan vihar
Rohit android lab projects in suresh gyan vihar
 
Migrating an application from Angular 1 to Angular 2
Migrating an application from Angular 1 to Angular 2 Migrating an application from Angular 1 to Angular 2
Migrating an application from Angular 1 to Angular 2
 
Google Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleGoogle Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification Google
 
Dependency injection in iOS
Dependency injection in iOSDependency injection in iOS
Dependency injection in iOS
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
 
What's new in Android P @ I/O Extended Bangkok 2018
What's new in Android P @ I/O Extended Bangkok 2018What's new in Android P @ I/O Extended Bangkok 2018
What's new in Android P @ I/O Extended Bangkok 2018
 
Migrating to Angular 2
Migrating to Angular 2Migrating to Angular 2
Migrating to Angular 2
 
Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!
 
Code migration from Angular 1.x to Angular 2.0
Code migration from Angular 1.x to Angular 2.0Code migration from Angular 1.x to Angular 2.0
Code migration from Angular 1.x to Angular 2.0
 
A gently introduction to AngularJS
A gently introduction to AngularJSA gently introduction to AngularJS
A gently introduction to AngularJS
 
Capture image on eye blink
Capture image on eye blinkCapture image on eye blink
Capture image on eye blink
 
Angular modules in depth
Angular modules in depthAngular modules in depth
Angular modules in depth
 
Getting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautGetting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and Micronaut
 
AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014
 
Five android architecture
Five android architectureFive android architecture
Five android architecture
 
Exploring CameraX from JetPack
Exploring CameraX from JetPackExploring CameraX from JetPack
Exploring CameraX from JetPack
 
Data Flow Patterns in Angular 2 - Sebastian Müller
Data Flow Patterns in Angular 2 -  Sebastian MüllerData Flow Patterns in Angular 2 -  Sebastian Müller
Data Flow Patterns in Angular 2 - Sebastian Müller
 
Angular Dependency Injection
Angular Dependency InjectionAngular Dependency Injection
Angular Dependency Injection
 

Ähnlich wie Pavlo Zhdanov "Java and Swift: How to Create Applications for Automotive Head Units"

Ähnlich wie Pavlo Zhdanov "Java and Swift: How to Create Applications for Automotive Head Units" (20)

React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applications
 
RL2 Dot Brighton
RL2 Dot BrightonRL2 Dot Brighton
RL2 Dot Brighton
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
 
Mean stack Magics
Mean stack MagicsMean stack Magics
Mean stack Magics
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
 
MuleSoft Surat Live Demonstration Virtual Meetup#3 - Building JWT OAuth 2.0 C...
MuleSoft Surat Live Demonstration Virtual Meetup#3 - Building JWT OAuth 2.0 C...MuleSoft Surat Live Demonstration Virtual Meetup#3 - Building JWT OAuth 2.0 C...
MuleSoft Surat Live Demonstration Virtual Meetup#3 - Building JWT OAuth 2.0 C...
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
React: JSX and Top Level API
React: JSX and Top Level APIReact: JSX and Top Level API
React: JSX and Top Level API
 
Mini project final presentation
Mini project final presentationMini project final presentation
Mini project final presentation
 
Micronaut Launchpad
Micronaut LaunchpadMicronaut Launchpad
Micronaut Launchpad
 
Workshop 13: AngularJS Parte II
Workshop 13: AngularJS Parte IIWorkshop 13: AngularJS Parte II
Workshop 13: AngularJS Parte II
 
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay ScreensLiferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
 
From Zero to Cloud in 12 Easy Factors
From Zero to Cloud in 12 Easy FactorsFrom Zero to Cloud in 12 Easy Factors
From Zero to Cloud in 12 Easy Factors
 
OGCE Project Overview
OGCE Project OverviewOGCE Project Overview
OGCE Project Overview
 
Griffon Presentation
Griffon PresentationGriffon Presentation
Griffon Presentation
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
 
Android应用开发简介
Android应用开发简介Android应用开发简介
Android应用开发简介
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...
 

Mehr von LogeekNightUkraine

Mehr von LogeekNightUkraine (20)

Face recognition with c++
Face recognition with c++ Face recognition with c++
Face recognition with c++
 
C++20 features
C++20 features C++20 features
C++20 features
 
Autonomous driving on your developer pc. technologies, approaches, future
Autonomous driving on your developer pc. technologies, approaches, futureAutonomous driving on your developer pc. technologies, approaches, future
Autonomous driving on your developer pc. technologies, approaches, future
 
Orkhan Gasimov "High Performance System Design"
Orkhan Gasimov "High Performance System Design" Orkhan Gasimov "High Performance System Design"
Orkhan Gasimov "High Performance System Design"
 
Vitalii Korzh "Managed Workflows or How to Master Data"
Vitalii Korzh "Managed Workflows or How to Master Data" Vitalii Korzh "Managed Workflows or How to Master Data"
Vitalii Korzh "Managed Workflows or How to Master Data"
 
Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"
 
Oleksii Kuchuk "Reading gauge values with open cv imgproc"
Oleksii Kuchuk "Reading gauge values with open cv imgproc"Oleksii Kuchuk "Reading gauge values with open cv imgproc"
Oleksii Kuchuk "Reading gauge values with open cv imgproc"
 
Oleksandr Kutsan "Using katai struct to describe the process of working with ...
Oleksandr Kutsan "Using katai struct to describe the process of working with ...Oleksandr Kutsan "Using katai struct to describe the process of working with ...
Oleksandr Kutsan "Using katai struct to describe the process of working with ...
 
Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"
 
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"
Serhii Zemlianyi "Error Retries with Exponential Backoff Using RabbitMQ"
 
Iurii Antykhovych "Java and performance tools and toys"
Iurii Antykhovych "Java and performance tools and toys"Iurii Antykhovych "Java and performance tools and toys"
Iurii Antykhovych "Java and performance tools and toys"
 
Eugene Bova "Dapr (Distributed Application Runtime) in a Microservices Archit...
Eugene Bova "Dapr (Distributed Application Runtime) in a Microservices Archit...Eugene Bova "Dapr (Distributed Application Runtime) in a Microservices Archit...
Eugene Bova "Dapr (Distributed Application Runtime) in a Microservices Archit...
 
Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"
 
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"
Yevhen Tatarynov "My .NET Application Allocates too Much Memory. What Can I Do?"
 
Alexandr Golyak, Nikolay Chertkov "Automotive Testing vs Test Automatio"
Alexandr Golyak, Nikolay Chertkov  "Automotive Testing vs Test Automatio"Alexandr Golyak, Nikolay Chertkov  "Automotive Testing vs Test Automatio"
Alexandr Golyak, Nikolay Chertkov "Automotive Testing vs Test Automatio"
 
Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"
 
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"
Kolomiyets Dmytro "Dealing with Multiple Caches, When Developing Microservices"
 
Shestakov Illia "The Sandbox Theory"
Shestakov Illia "The Sandbox Theory"Shestakov Illia "The Sandbox Theory"
Shestakov Illia "The Sandbox Theory"
 
Dmytro Kochergin “Autotest with CYPRESS”
Dmytro Kochergin “Autotest with CYPRESS”Dmytro Kochergin “Autotest with CYPRESS”
Dmytro Kochergin “Autotest with CYPRESS”
 
Ivan Dryzhyruk “Ducks Don’t Like Bugs”
Ivan Dryzhyruk “Ducks Don’t Like Bugs”Ivan Dryzhyruk “Ducks Don’t Like Bugs”
Ivan Dryzhyruk “Ducks Don’t Like Bugs”
 

Kürzlich hochgeladen

Call Now ≽ 9953056974 ≼🔝 Call Girls In Shankar vihar ≼🔝 Delhi door step delev...
Call Now ≽ 9953056974 ≼🔝 Call Girls In Shankar vihar ≼🔝 Delhi door step delev...Call Now ≽ 9953056974 ≼🔝 Call Girls In Shankar vihar ≼🔝 Delhi door step delev...
Call Now ≽ 9953056974 ≼🔝 Call Girls In Shankar vihar ≼🔝 Delhi door step delev...
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Girls Kanakapura Road Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Kanakapura Road Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Kanakapura Road Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Kanakapura Road Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
amitlee9823
 
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp NumberVip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
kumarajju5765
 
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
dollysharma2066
 
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
ezgenuh
 
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
ezgenuh
 
Bangalore Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore E...
Bangalore Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore E...Bangalore Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore E...
Bangalore Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore E...
amitlee9823
 
Call Girls in Shri Niwas Puri Delhi 💯Call Us 🔝9953056974🔝
Call Girls in  Shri Niwas Puri  Delhi 💯Call Us 🔝9953056974🔝Call Girls in  Shri Niwas Puri  Delhi 💯Call Us 🔝9953056974🔝
Call Girls in Shri Niwas Puri Delhi 💯Call Us 🔝9953056974🔝
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Business Bay Escorts $#$ O56521286O $#$ Escort Service In Business Bay Dubai
Business Bay Escorts $#$ O56521286O $#$ Escort Service In Business Bay DubaiBusiness Bay Escorts $#$ O56521286O $#$ Escort Service In Business Bay Dubai
Business Bay Escorts $#$ O56521286O $#$ Escort Service In Business Bay Dubai
AroojKhan71
 
Sanjay Nagar Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalor...
Sanjay Nagar Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalor...Sanjay Nagar Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalor...
Sanjay Nagar Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalor...
amitlee9823
 
Tata_Nexon_brochure tata nexon brochure tata
Tata_Nexon_brochure tata nexon brochure tataTata_Nexon_brochure tata nexon brochure tata
Tata_Nexon_brochure tata nexon brochure tata
aritradey27234
 
Vip Mumbai Call Girls Mumbai Call On 9920725232 With Body to body massage wit...
Vip Mumbai Call Girls Mumbai Call On 9920725232 With Body to body massage wit...Vip Mumbai Call Girls Mumbai Call On 9920725232 With Body to body massage wit...
Vip Mumbai Call Girls Mumbai Call On 9920725232 With Body to body massage wit...
amitlee9823
 

Kürzlich hochgeladen (20)

John Deere 7430 7530 Tractors Diagnostic Service Manual W.pdf
John Deere 7430 7530 Tractors Diagnostic Service Manual W.pdfJohn Deere 7430 7530 Tractors Diagnostic Service Manual W.pdf
John Deere 7430 7530 Tractors Diagnostic Service Manual W.pdf
 
Chapter-1.3-Four-Basic-Computer-periods.pptx
Chapter-1.3-Four-Basic-Computer-periods.pptxChapter-1.3-Four-Basic-Computer-periods.pptx
Chapter-1.3-Four-Basic-Computer-periods.pptx
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In Shankar vihar ≼🔝 Delhi door step delev...
Call Now ≽ 9953056974 ≼🔝 Call Girls In Shankar vihar ≼🔝 Delhi door step delev...Call Now ≽ 9953056974 ≼🔝 Call Girls In Shankar vihar ≼🔝 Delhi door step delev...
Call Now ≽ 9953056974 ≼🔝 Call Girls In Shankar vihar ≼🔝 Delhi door step delev...
 
Call Girls Kanakapura Road Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Kanakapura Road Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Kanakapura Road Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Kanakapura Road Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
 
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp NumberVip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
 
design a four cylinder internal combustion engine
design a four cylinder internal combustion enginedesign a four cylinder internal combustion engine
design a four cylinder internal combustion engine
 
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
 
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...
 
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
 
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
 
Bangalore Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore E...
Bangalore Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore E...Bangalore Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore E...
Bangalore Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore E...
 
Stay Cool and Compliant: Know Your Window Tint Laws Before You Tint
Stay Cool and Compliant: Know Your Window Tint Laws Before You TintStay Cool and Compliant: Know Your Window Tint Laws Before You Tint
Stay Cool and Compliant: Know Your Window Tint Laws Before You Tint
 
Call Girls in Shri Niwas Puri Delhi 💯Call Us 🔝9953056974🔝
Call Girls in  Shri Niwas Puri  Delhi 💯Call Us 🔝9953056974🔝Call Girls in  Shri Niwas Puri  Delhi 💯Call Us 🔝9953056974🔝
Call Girls in Shri Niwas Puri Delhi 💯Call Us 🔝9953056974🔝
 
ENJOY Call Girls In Okhla Vihar Delhi Call 9654467111
ENJOY Call Girls In Okhla Vihar Delhi Call 9654467111ENJOY Call Girls In Okhla Vihar Delhi Call 9654467111
ENJOY Call Girls In Okhla Vihar Delhi Call 9654467111
 
What Could Cause Your Subaru's Touch Screen To Stop Working
What Could Cause Your Subaru's Touch Screen To Stop WorkingWhat Could Cause Your Subaru's Touch Screen To Stop Working
What Could Cause Your Subaru's Touch Screen To Stop Working
 
Business Bay Escorts $#$ O56521286O $#$ Escort Service In Business Bay Dubai
Business Bay Escorts $#$ O56521286O $#$ Escort Service In Business Bay DubaiBusiness Bay Escorts $#$ O56521286O $#$ Escort Service In Business Bay Dubai
Business Bay Escorts $#$ O56521286O $#$ Escort Service In Business Bay Dubai
 
Sanjay Nagar Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalor...
Sanjay Nagar Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalor...Sanjay Nagar Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalor...
Sanjay Nagar Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalor...
 
Tata_Nexon_brochure tata nexon brochure tata
Tata_Nexon_brochure tata nexon brochure tataTata_Nexon_brochure tata nexon brochure tata
Tata_Nexon_brochure tata nexon brochure tata
 
Vip Mumbai Call Girls Mumbai Call On 9920725232 With Body to body massage wit...
Vip Mumbai Call Girls Mumbai Call On 9920725232 With Body to body massage wit...Vip Mumbai Call Girls Mumbai Call On 9920725232 With Body to body massage wit...
Vip Mumbai Call Girls Mumbai Call On 9920725232 With Body to body massage wit...
 
John Deere 335 375 385 435 Service Repair Manual
John Deere 335 375 385 435 Service Repair ManualJohn Deere 335 375 385 435 Service Repair Manual
John Deere 335 375 385 435 Service Repair Manual
 

Pavlo Zhdanov "Java and Swift: How to Create Applications for Automotive Head Units"