Greg Shackles - June 12, 2012
description
Transcript of Greg Shackles - June 12, 2012
![Page 1: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/1.jpg)
Greg Shackles - June 12, 2012
Cross-platform mobile
development with c#
![Page 2: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/2.jpg)
About MeGreg
ShacklesSenior Software Engineer
OLO Online Ordering
twitter@gshackles
githubgithub.com/gshackles
bloggregshackles.com
Slidesspeakerdeck.com/u/gshackles
![Page 3: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/3.jpg)
the Bookoreil.ly/Lp5smR
Discount Code: AUTHDPrint Book: 40% OffE-Book: 50% Off
![Page 4: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/4.jpg)
Market Share (US): April 2012
50.8% Android31.4% Apple11.8% RIM 4.0% Microsoft
Source: comScore
![Page 5: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/5.jpg)
native platform Languages
Objective-C
Java
C#
![Page 6: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/6.jpg)
Write once, run anywhere
![Page 7: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/7.jpg)
platform differences
!= !=
![Page 8: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/8.jpg)
c# Everywhere
MonoTouch
Mono for Android
Native
![Page 9: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/9.jpg)
The Power of C#•Base Class Library•LINQ•Parallel LINQ•Memory Management•Task Parallel Library•Dynamic
![Page 10: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/10.jpg)
xamarin Tools
xamarin.com
•Access to full platform SDKs•100% Native•Linker•frequent releases•active community•Improved API
![Page 11: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/11.jpg)
C#
CFStringRef keys[] = { kCTFontAttributeName, kCTForegroundColorAttributeName};
CFTypeRef bval[] = { cfListLineCTFontRef, CGColorGetConstantColor(kCGColorBlack)};
attr = CFDictionaryCreate ( kCFAllocatorDefault, (const void **) &keys, (const void **) &bval, sizeof(keys) / sizeof(keys[0]), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
astr = CFAttributedStringCreate(kCFAllocatorDefault, CFSTR("Hello World"), attr);
obj-c
var attrs = new CFStringAttributes { Font = listLineCTFont, ForegroundColor = UIColor.Black.CGColor}; var astr = new NSAttributedString ("Hello World", attrs);
![Page 12: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/12.jpg)
C#
<activity android:name=".SampleActivity“ android:label="@string/app_name"><intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
findViewById(R.id.button).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) {
// handle click}
});
Java
[Activity(Label="@string/AppName", MainLauncher=true)]
FindViewById<Button>(Resource.Id.Button).Click += delegate {
// handle click};
![Page 13: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/13.jpg)
Environment: iOS
Mac OS X MonoDevelopXcode
Integration
![Page 14: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/14.jpg)
Environment: android
Mac OS X
Windows
MonoDevelop
Visual Studio
![Page 15: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/15.jpg)
UI Designer: MonoDevelop and Visual Studio
Environment: android
![Page 16: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/16.jpg)
Environment: windows phone
Windows Visual Studio
![Page 17: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/17.jpg)
Some Apps
...and many more!
icircuit rdio gmusic c# to go
infinite flight mwc 2012
![Page 18: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/18.jpg)
•Powerful and mature language•Skill reuse•Native apps•Code reuse across platforms
Benefits
even non-mobile platforms!
![Page 19: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/19.jpg)
app Architecture
![Page 20: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/20.jpg)
What code can be shared?
* with some limitations
•Most non-UI or platform code•Core application logic•Entities•LINQ (objects, XML)•Network access•File / Database Access *
![Page 21: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/21.jpg)
sharing techniques
* currently in development
•File Linking•Abstraction•Observer Pattern•Partial Classes and Methods•Conditional Compilation•portable class libraries *
![Page 22: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/22.jpg)
library: xamarin.mobile
Supports iOS, Android and Windows Phone
xamarin.com/mobileapi
![Page 23: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/23.jpg)
Demo Time
![Page 24: Greg Shackles - June 12, 2012](https://reader036.fdocuments.net/reader036/viewer/2022062322/56814499550346895db1405e/html5/thumbnails/24.jpg)
Questions?