SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Jeden kód, co vládne všem?
Android i iOS bez problémů
@pavelcvetler
Obsah
● Dema a zkušenosti
● Vývoj Android
● Vývoj iOS
● Jde to skloubit?
Vývoj Android app
● Android Studio
● Java
● XML
● Kotlin
● Gradle
Vývoj iOS app
● Xcode
● Obj-C
● Swift
● xib/storyboard
● xcode-build
Dva odlišné světy
● Odlišnosti:
○ programovací jazyk
○ lifecycle
○ UI
● Co mají ale společné?
○ business logiku
○ proč ji tedy psát dvakrát?
Znáte nějaké
nástroje?
● Xamarin
● Alpha Anywhere
● PhoneGap
● Sencha
● Unity 3D
● Cocos
● Corona
● … a další
j2objc
● Co to je?
○ Nástroj pro převod Java kódu do Obj-C
○ Cílem je psát aplikační logiku a data modely jednou
● Co není?
○ Neumí převést komplet android binárku
○ Neslouží jako platformově nezávislý nástroj pro vývoj
○ Je třeba části app přímo v Obj-C/Swiftu
Kde se j2objc
vzal?
● Je to opensource command line tool od Google
● Google s jeho využitím napsal Inbox
○ Sdílení cca 70% business logiky
DEMO
command line
Jako demo pěkné,
ale co s tím?
● Převod Java kódu a jeho následné použití v Obj-C
● Použití např v iOS aplikaci
Jak to dostat do
aplikace?
● Převedu zdrojáky a pak je hodím do projektu
○ Ruční kopírování kódu není pohodlné
● Vlastní skript na kopírování?
DEMO
App - xcode build rule
Tak a je to bez
starostí. Nebo ne?
● Dlouhý build time - každý soubor zvlášť
○ j2objc transpiluje rychleji, stejně jako javac
● Rebuild
A co třeba Make?
● Určený ke kompilování
● Automaticky řeší závislosti (podle definice)
● Automaticky kešuje nezměněné závislosti
DEMO
App - make build
A co package?
● Dlouhé názvy reflektující package
○ com.cvetler.android.sharedlib.Hello ->
ComCvetlerAndroidSharedlibHello
● Možnost strip package
○ Vznikají kolize
● Použití anotací
○ @ObjectiveCName
DEMO
package @ObjectiveCName
A co swift?
● Můžeme využít standartní způsoby
použití Obj-C ve swiftu
○ bridging/umbrella header
DEMO
Swift
BONUS: Debugging + Testing
Možnosti použití
ve Swiftu
● Automaticky generovaný headerfile
○ recompilace při každé změně i nepoužívaného kódu
● Ručně přidané header soubory
● Ideálně více targetů podle částí aplikace
Co dál?
● Použití gradle místo make
● Menší knihovny které se převádí po částech
● Kotlin native
● https://github.com/JetBrains/kotlin-native/releases
O čem to bylo?
● Základy použití j2objc
● Několik možných způsobů využití
● Testy
● Debugging
● Použití ve swiftu
Děkuji za pozornost
@pavelcvetler
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS

Más contenido relacionado

Similar a Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS

Zonky QA Meetup
Zonky QA MeetupZonky QA Meetup
Zonky QA Meetupdamovsky
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automationOndřej Machulda
 
Dotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyDotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyINTERES - KISK
 
Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?Radim Klaška
 
PhoneGap Školení #1
PhoneGap Školení #1PhoneGap Školení #1
PhoneGap Školení #1Martin Kaše
 
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesČtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesCtvrtkoncz
 
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...Vojtěch Kusý
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Tomáš Kukol
 
Závislosti, injekce a vůbec
Závislosti, injekce a vůbecZávislosti, injekce a vůbec
Závislosti, injekce a vůbecDavid Grudl
 
Tipy a triky, best practices, deployment, testování
Tipy a triky, best practices, deployment, testováníTipy a triky, best practices, deployment, testování
Tipy a triky, best practices, deployment, testováníRadim Klaška
 
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o cenyInternship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o cenyDavid Vávra
 
Skiper - vizualizační nástroj
Skiper - vizualizační nástrojSkiper - vizualizační nástroj
Skiper - vizualizační nástrojSkipper18
 
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Vašek Purchart
 
Design android-aplikaci-z-pohledu-programatora
Design android-aplikaci-z-pohledu-programatoraDesign android-aplikaci-z-pohledu-programatora
Design android-aplikaci-z-pohledu-programatoraTomáš Vondráček
 
Generátory statických webů
Generátory statických webůGenerátory statických webů
Generátory statických webůMichal Doležel
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)almadcz
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryDevelcz
 
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuVývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuJindra Parus
 

Similar a Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS (20)

Zonky QA Meetup
Zonky QA MeetupZonky QA Meetup
Zonky QA Meetup
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automation
 
Dotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyDotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatiky
 
Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?
 
PhoneGap Školení #1
PhoneGap Školení #1PhoneGap Školení #1
PhoneGap Školení #1
 
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesČtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
 
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]
 
Zaverecny ukol
Zaverecny ukolZaverecny ukol
Zaverecny ukol
 
Závislosti, injekce a vůbec
Závislosti, injekce a vůbecZávislosti, injekce a vůbec
Závislosti, injekce a vůbec
 
Tipy a triky, best practices, deployment, testování
Tipy a triky, best practices, deployment, testováníTipy a triky, best practices, deployment, testování
Tipy a triky, best practices, deployment, testování
 
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o cenyInternship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
 
Skiper - vizualizační nástroj
Skiper - vizualizační nástrojSkiper - vizualizační nástroj
Skiper - vizualizační nástroj
 
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
 
Úvod do XAML
Úvod do XAMLÚvod do XAML
Úvod do XAML
 
Design android-aplikaci-z-pohledu-programatora
Design android-aplikaci-z-pohledu-programatoraDesign android-aplikaci-z-pohledu-programatora
Design android-aplikaci-z-pohledu-programatora
 
Generátory statických webů
Generátory statických webůGenerátory statických webů
Generátory statických webů
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featury
 
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuVývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
 

Más de mdevtalk

Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftumdevtalk
 
Jarda Machaň: Proč je dobré míti Developer Evangelistu
Jarda Machaň: Proč je dobré míti Developer EvangelistuJarda Machaň: Proč je dobré míti Developer Evangelistu
Jarda Machaň: Proč je dobré míti Developer Evangelistumdevtalk
 
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...mdevtalk
 
Michal Havryluk: How To Speed Up Android Gradle Builds
Michal Havryluk: How To Speed Up Android Gradle BuildsMichal Havryluk: How To Speed Up Android Gradle Builds
Michal Havryluk: How To Speed Up Android Gradle Buildsmdevtalk
 
Vladislav Iliushin: Dark side of IoT
Vladislav Iliushin: Dark side of IoTVladislav Iliushin: Dark side of IoT
Vladislav Iliushin: Dark side of IoTmdevtalk
 
Georgiy Shur: Bring onboarding to life
Georgiy Shur: Bring onboarding to lifeGeorgiy Shur: Bring onboarding to life
Georgiy Shur: Bring onboarding to lifemdevtalk
 
David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?mdevtalk
 
Maxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationMaxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationmdevtalk
 
Nikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsNikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsmdevtalk
 
Milan Oulehla: Bezpečnost mobilních aplikací na Androidu
Milan Oulehla: Bezpečnost mobilních aplikací na AndroiduMilan Oulehla: Bezpečnost mobilních aplikací na Androidu
Milan Oulehla: Bezpečnost mobilních aplikací na Androidumdevtalk
 
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůTomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůmdevtalk
 
David Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPDavid Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPmdevtalk
 
Adam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewAdam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewmdevtalk
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncmdevtalk
 
Charles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX DesignCharles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX Designmdevtalk
 
Honza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package ManagerHonza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package Managermdevtalk
 
David Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a AzureDavid Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a Azuremdevtalk
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatmdevtalk
 
Jiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSJiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSmdevtalk
 
Petr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémPetr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémmdevtalk
 

Más de mdevtalk (20)

Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
 
Jarda Machaň: Proč je dobré míti Developer Evangelistu
Jarda Machaň: Proč je dobré míti Developer EvangelistuJarda Machaň: Proč je dobré míti Developer Evangelistu
Jarda Machaň: Proč je dobré míti Developer Evangelistu
 
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
 
Michal Havryluk: How To Speed Up Android Gradle Builds
Michal Havryluk: How To Speed Up Android Gradle BuildsMichal Havryluk: How To Speed Up Android Gradle Builds
Michal Havryluk: How To Speed Up Android Gradle Builds
 
Vladislav Iliushin: Dark side of IoT
Vladislav Iliushin: Dark side of IoTVladislav Iliushin: Dark side of IoT
Vladislav Iliushin: Dark side of IoT
 
Georgiy Shur: Bring onboarding to life
Georgiy Shur: Bring onboarding to lifeGeorgiy Shur: Bring onboarding to life
Georgiy Shur: Bring onboarding to life
 
David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?
 
Maxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationMaxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisation
 
Nikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsNikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutions
 
Milan Oulehla: Bezpečnost mobilních aplikací na Androidu
Milan Oulehla: Bezpečnost mobilních aplikací na AndroiduMilan Oulehla: Bezpečnost mobilních aplikací na Androidu
Milan Oulehla: Bezpečnost mobilních aplikací na Androidu
 
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůTomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
 
David Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPDavid Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVP
 
Adam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewAdam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerView
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & sync
 
Charles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX DesignCharles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX Design
 
Honza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package ManagerHonza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package Manager
 
David Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a AzureDavid Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a Azure
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
 
Jiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSJiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOS
 
Petr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémPetr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkém
 

Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS

  • 1.
  • 2. Jeden kód, co vládne všem? Android i iOS bez problémů @pavelcvetler
  • 3. Obsah ● Dema a zkušenosti ● Vývoj Android ● Vývoj iOS ● Jde to skloubit?
  • 4. Vývoj Android app ● Android Studio ● Java ● XML ● Kotlin ● Gradle
  • 5. Vývoj iOS app ● Xcode ● Obj-C ● Swift ● xib/storyboard ● xcode-build
  • 6. Dva odlišné světy ● Odlišnosti: ○ programovací jazyk ○ lifecycle ○ UI ● Co mají ale společné? ○ business logiku ○ proč ji tedy psát dvakrát?
  • 7. Znáte nějaké nástroje? ● Xamarin ● Alpha Anywhere ● PhoneGap ● Sencha ● Unity 3D ● Cocos ● Corona ● … a další
  • 8. j2objc ● Co to je? ○ Nástroj pro převod Java kódu do Obj-C ○ Cílem je psát aplikační logiku a data modely jednou ● Co není? ○ Neumí převést komplet android binárku ○ Neslouží jako platformově nezávislý nástroj pro vývoj ○ Je třeba části app přímo v Obj-C/Swiftu
  • 9. Kde se j2objc vzal? ● Je to opensource command line tool od Google ● Google s jeho využitím napsal Inbox ○ Sdílení cca 70% business logiky
  • 11. Jako demo pěkné, ale co s tím? ● Převod Java kódu a jeho následné použití v Obj-C ● Použití např v iOS aplikaci
  • 12. Jak to dostat do aplikace? ● Převedu zdrojáky a pak je hodím do projektu ○ Ruční kopírování kódu není pohodlné ● Vlastní skript na kopírování?
  • 13. DEMO App - xcode build rule
  • 14. Tak a je to bez starostí. Nebo ne? ● Dlouhý build time - každý soubor zvlášť ○ j2objc transpiluje rychleji, stejně jako javac ● Rebuild
  • 15. A co třeba Make? ● Určený ke kompilování ● Automaticky řeší závislosti (podle definice) ● Automaticky kešuje nezměněné závislosti
  • 17. A co package? ● Dlouhé názvy reflektující package ○ com.cvetler.android.sharedlib.Hello -> ComCvetlerAndroidSharedlibHello ● Možnost strip package ○ Vznikají kolize ● Použití anotací ○ @ObjectiveCName
  • 19. A co swift? ● Můžeme využít standartní způsoby použití Obj-C ve swiftu ○ bridging/umbrella header
  • 21. Možnosti použití ve Swiftu ● Automaticky generovaný headerfile ○ recompilace při každé změně i nepoužívaného kódu ● Ručně přidané header soubory ● Ideálně více targetů podle částí aplikace
  • 22. Co dál? ● Použití gradle místo make ● Menší knihovny které se převádí po částech ● Kotlin native ● https://github.com/JetBrains/kotlin-native/releases
  • 23. O čem to bylo? ● Základy použití j2objc ● Několik možných způsobů využití ● Testy ● Debugging ● Použití ve swiftu