Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cross platform mobile development with Xamarin
Search
Marcin Kuptel
June 18, 2015
Programming
0
28
Cross platform mobile development with Xamarin
A talk I gave at CocoaHeads Copenhagen in June 2015.
Marcin Kuptel
June 18, 2015
Tweet
Share
Other Decks in Programming
See All in Programming
Patterns of Patterns
denyspoltorak
0
1.4k
CSC307 Lecture 04
javiergs
PRO
0
660
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
360
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.4k
Data-Centric Kaggle
isax1015
2
780
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
100
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
590
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
130
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
180
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.3k
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
54
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
250
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
Everyday Curiosity
cassininazir
0
130
Navigating Weather and Climate Data
rabernat
0
110
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
CROSS PLATFORM MOBILE DEVELOPMENT WITH XAMARIN MARCIN KUPTEL
None
NOT IDEAL ▸ Double the amount of work ▸ More
developers required ▸ Changes need to be made in multiple places
CAN WE DO BETTER?
None
None
XAMARIN STUDIO
BUT WHAT ABOUT THE UI? ▸ Either use Xamarin Designer
▸ Or stick with Interface Builder!
PROFILING TOOLS ▸ HeapShot - Xamarin's own memory and performance
tool ▸ Xamarin Profiler
C# ▸ generics ▸ lambda expressions ▸ optionals
C# USES GARBAGE COLLECTION
HOW DO C# AND OBJECTIVE C WORK TOGETHER?
GOTCHA NO. 1 UIIMAGE
THE DISPOSE PATTERN
IOS C# ➡ ARM ASSEMBLY ANDROID C# ➡ IL ➡
ASSEMBLY AT RUNTIME
All IOS FRAMWORKS ARE AVAILABLE
... WITH A FEW DIFFERENCES ▸ Strongly typed arrays instead
of NSArray ▸ Delegate methods exposed through events and properties ▸ NSString becomes string
GOTCHA NO. 2 UITableViewDelegate and UITableViewDataSource are classes
THIRD PARTY LIBRARIES ▸ NuGet is a package manager built
into Xamarin Studio ▸ Over 37,000 libraries ▸ Notifies you when a library has been updated ▸ You can easily publish your own
BINDING PROJECTS
API DEFINITION namespace Cocos2D { [BaseType (typeof (NSObject))] interface Camera
{ [Static, Export ("getZEye")] nfloat ZEye { get; } [Export ("restore")] void Restore (); ... } }
SHARING CODE
SHARED PROJECT #if __IOS__ nsDispatcher.BeginInvokeOnMainThread(NotifyListeners); #elif __ANDROID__ Dispatcher.RunOnUiThread(() => NotifyListeners());
#endif
PORTABLE CLASS LIBRARY
OUR PROJECTS
SHARING ASSETS
CONTINUOUS INTEGRATION /Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool -v build “--configuration:Release|iPhone” app/MyAwesomeApp.sln UNFORTUNATELY IT
IS NOT POSSIBLE TO BUILD WITHOUT CODE-SIGNING security unlock-keychain -pPASSWORD ~/Library/Keychains/login.keychain
NUNIT FOR UNIT TESTING [TestFixture] public class LoginViewModelTests { [Test]
public void TestThatLoginViewModelCanBeCreated() { Mock<IAccountApi> mockAccount = new Mock<IAccountApi>(); Mock<IDialogService> dialogServiceMock = new Mock<IDialogService>(); ... Assert.IsNotNull(viewModel); }
THE VERDICT ! Very easy to share code between platforms
! Good support from Xamarin ! Not enough iOS open source projects ! Xamarin Studio issues
THANKS! @MARCINKUPTEL