JXUGC #13 東京 緊急開催 Xamarin のすべて! - http://jxug.connpass.com/event/29734/ の発表資料です。
DroidKaigi2016ΞϓϦΛXamarin ʹҠ২ͨ͠ɹɹɹɹ- 2016/05/07 #JXUG 13- @amay0771 © @amay077 , 2016
View Slide
ࣗݾհ• OKUYAMA Hironobu(@amay077)• Toyohashi, Aichi• Geospatial Engineer• VB/VC('00-), C#('05-), Android/iOS('11-), Xamarin('13-)• BUILD Insider - XamarinٯҾ͖Tips2 © @amay077 , 2016
DroidKaigi2016 ͷެࣜΞϓϦΛXamarin.Android Ҡ২ͨ͠Λ͠·͢• Android SDKͷബ͍ϥούʔ XamarinωΠςΟϒ ͷͰ͢• Xamarin.Forms Ͱ͋Γ·ͤΜ• MVVM ͱ͔ɺiOSଞͱͷڞ௨Խͷ͠·ͤΜ• ࠷৽ͷ Android ΞϓϦ͕Ͳ͜·Ͱ Xamarin Ͱ։ൃՄೳ͔ʁ3 © @amay077 , 2016
DroidKaigi2016 ͱ• droidkaigi.github.io• ΤϯδχΞ͕ओͷAndroidΧϯϑΝϨϯε• 2/18-19ɺ౦ژۀେֶ• ࢀՃऀ600ਓ(2Ͱച)ɺ45ηογϣϯࠃAndroidΞϓϦ։ൃऀඞௌඞݟͷษڧձ4 © @amay077 , 2016
DroidKaigi2016ެࣜΞϓϦ ͱ• github.com/xamarinhq/app-evolve• εϐʔΧʔ/ελοϑͷ @konifar ͞Μ͕ओಋ͠༗ࢤʢ 40໊ʂ ʣʹΑΓ։ൃ• ։ൃظؒɿ1/11ʙ2/12ʙ now• 6ը໘ɺ70Ϋϥεɺ4200ߦ(2/18࣌)Androidք۾ͷτοϓΤϯδχΞୡ͕࡞ͨ͠ݟͷմʂ5 © @amay077 , 2016
AndroidΞϓϦΛ Xamarin.Android Ҡ২͢Δํ๏• ը໘• ॲཧ(Java)• ϥΠϒϥϦ6 © @amay077 , 2016
ը໘• ը໘ϨΠΞτɺը૾ɺจࣈྻϦιʔεͦͷ··ྲྀ༻Մೳ• activitymain.xml -> activitymain.axml• Android Data Binding ͷ ͳͲɺ৽͍͠λάআ͕ඞཁ7 © @amay077 , 2016
ࠨ:Java ӈ:Cˌ8 © @amay077 , 2016
AndroidManifest.xmlXamarin.Android ʹ͓͍ͯɺը໘ͷ AndroidManifest.xml ͷఆٛෆཁ• ͷఆٛɺ XXXActivity Ϋϥεͷଐੑ• ͷఆٛɺ XXXApplication Ϋϥεͷଐੑ• ݖݶͷఆٛ AndroidManifest.xml ʹ͢Δ͕ Xamarin Studio/Visual Studio ͷઃఆը໘͔Βߦ͑Δ9 © @amay077 , 2016
// [BEFORE]AndroidManifest.xml in Javaandroid:name=".MainApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme">android:name=".activity.MainActivity"android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"android:label="@string/app_name"android:theme="@style/AppTheme.NoActionBar">10 © @amay077 , 2016
// [AFTER]MainActivity.cs[Activity(ConfigurationChanges = ConfigChanges.Keyboard| ConfigChanges.KeyboardHidden| ConfigChanges.ScreenLayout| ConfigChanges.ScreenSize| ConfigChanges.Orientation,Label = "@string/app_name",Theme = "@style/AppTheme.NoActionBar",MainLauncher = true)][IntentFilter (new []{ Intent.ActionMain },Categories = new []{ Intent.CategoryDefault })]public class MainActivity : AppCompatActivity{// ...}11 © @amay077 , 2016
// [AFTER]MainApplication.cs[Android.App.Application(AllowBackup=true,Icon="@mipmap/ic_launcher",Theme="@style/AppTheme")][MetaData("com.google.android.gms.version",Value = "@integer/google_play_services_version")][MetaData("com.google.android.maps.v2.API_KEY",Value = "{your google maps api key}")]public class MainApplication : Android.App.Application{// ...}12 © @amay077 , 2016
ॲཧ• جຊతʹॻ͖͠• ߏจࣅͯΔͷͰίϐϖͯ͠ΤϥʔΛফͯ͘͠• Sharpen ͱ͍͏πʔϧ https://blog.xamarin.com/android-in-c-sharp/ ͋Δ͚ͲࠓͰ͑Δͷ͔ͳʁ• ໘ͩͬͨΒػೳ୯ҐͰ Jar Խͯ͠ɺBinding ܦ༝Ͱ༻ͨ͠ํ͕Α͍͔13 © @amay077 , 2016
ϥΠϒϥϦ• Android ΞϓϦ։ൃʹ(ओʹΦʔϓϯιʔεͷ)ϥΠϒϥϦͷ༻ෆՄܽ• Android StudioҎ߱ɺgradle ʹΑΓϥΠϒϥϦͷ༻ɾཧ͕खܰʹʢnugetΈ͍ͨͳΜʣDroidKaigiΞϓϦͰ 27 ͷϥΠϒϥϦΛ༻Xamarin.AndroidԽʹ͓͚Δ Ұ൪ͷน14 © @amay077 , 2016
ϥΠϒϥϦҠߦͷબࢶ1. ಉػೳΛ࣋ͭ .NETͷϥΠϒϥϦ Λ୳͢2. ಉ໊ͷ BindingϥΠϒϥϦ Λ୳͢3. ಉػೳΛ࣋ͭ BindingϥΠϒϥϦ Λ࡞Δ4. ಉػೳΛ࣋ͭ .NETͷϥΠϒϥϦ Λ࡞Δ5. ಉػೳΛ͖͋ΒΊΔ15 © @amay077 , 2016
.NETͷϥΠϒϥϦ Λ୳͢• Gson → JSON.NET• RxJava → Reactive Extensions• Dagger2 → Stiletto• Retrofit2 → Refit୳͢ͱ݁ߏ͋Δtwitter teratail, Stackoverflow.jp ͳͲͰฉ͍ͯΈΑ͏حಛͳਓ͕୳ͯ͘͠ΕΔ͔͠Εͳ͍ ʛш´)ŧŽŕ16 © @amay077 , 2016
ಉ໊ͷ BindingϥΠϒϥϦ Λ୳͢• Android Support Library / Google Play services• Picasso → Square.Picasso• AndroidFlowLayout → AndroidFlowLayoutɹஶ໊ͳϥΠϒϥϦͳΒطʹ XamarinରԠͷnugetύοέʔδ͕༻ҙ͞Ε͍ͯΔʢಛʹViewؔ࿈Binding͔͠બࢶ͕ͳ͍ͷͰʣAndroid Support Library ؔ࿈ҰඞͣϋϚΔͷͰམͪண͍ͯ17 © @amay077 , 2016
BindingϥΠϒϥϦ Λ࡞Δ• gradle Ͱऔಘ͞ΕͨϥΠϒϥϦ͔Β xxx.jar Λൈ͖ग़͠ɺXamarin.Android ͷ BindingϓϩδΣΫτʹΈࠐΜͰϏϧυ͢Δ18 © @amay077 , 2016
ಉػೳΛ࣋ͭ .NETͷϥΠϒϥϦ Λ࡞Δ• ཧܥ͚ͩͲ࠷ऴखஈ• جຊతͳػೳͳΒʢJSON.NET ͷΑ͏ʹʣطʹଘࡏ͢ΔͩΖ͏͠• Binding Θͳ͍ͱ͍͏͜ͱɺϚϧνϓϥοτϑΥʔϜΛҙࣝͯ͠ͷબͩΖ͏͠ɺқ૬ߴ͍• ʮҠ২͚ͩʯͷ༧ࢉͰ͍͠ͱࢥ͏• ClosedXML, EPPlus Έ͍ͨͳͷΛ Xamarin ରԠ͢Δͷχʔζ͋Δͱࢥ͏ʢΓқߴ͍ʣ19 © @amay077 , 2016
ಉػೳΛ͖͋ΒΊΔ͝ར༻ܭըతʹ• Android-ORM - ORMϥΠϒϥϦ• ସϥΠϒϥϦͱͯ͠ SQLite.NET ORM ͕͋Δ͕ɺ͍ํ͕໘ͩͬͨͷͰɺKey-Value ετΞͰ͋Δ Akavache Λ༻• parceler - ը໘ؒ௨৴σʔλͷγϦΞϥΠζΛॿ͚ΔϥΠϒϥϦ• ସϥΠϒϥϦ͕ݟ͔ͭΒͳ͔ͬͨͷͰɺը໘ؒͷ௨৴σʔλ JSON(JSON.NET) ʹͨ͠20 © @amay077 , 2016
Android DataBinding ʹ͍ͭͯ• Android Studio/gradle ͕ɺ ͰғΜͩൣғͷUIཁૉͷมΛࣗಈίʔυੜ• ͍ΘΏΔ MainForm.designer.cs తͳ• Xamarin.Android ͰະରԠͳͷͰ λά͕Τϥʔʹ• Λআ͠ɺಓʹ FindViewById ͨ͠21 © @amay077 , 2016
Ҡ২ͷ݁Ռ• github.com/amay077/DroidKaigi2016Xamarin• 2/11 - 2/23ʢਖ਼ຯ̒ؒ͘Β͍ʣ• ຊՈͷ։ൃεϐʔυ͕ૣ͗ͯ͢࠷৽ػೳͷ࣮·Ͱ͍͚ͭͣ• buggy...Xamarin ͰϞμϯͳ AndroidΞϓϦ͕։ൃͰ͖Δ͜ͱ͕֬ೝͰ͖ͨ22 © @amay077 , 2016
·ͱΊ• ը໘ͱॲཧ• ྗٕͰҠ২Մೳ• ϥΠϒϥϦ• ཁ݅ʹԠͨ͡બ͕ඞཁ͍ͣΕʹͯ͠ Android ΞϓϦ։ൃͷࣝඞਢ23 © @amay077 , 2016
ͭ·ΓٻΊΒΕΔͷ…24 © @amay077 , 2016
εʔύʔXamarinਓࡐʂ25 © @amay077 , 2016
26 © @amay077 , 2016
ʲ͓·͚ʳ͞·͟·ͳΧϯϑΝϨϯεΞϓϦ27 © @amay077 , 2016
Google I/O 2015 App• github.com/google/iosched• Android ͷΈରԠ• I/O 2016 App ͦͷ͏ͪ͘Δʁ28 © @amay077 , 2016
try! Swift App• github.com/tryswift/trySwiftApp• iOS ͷΈରԠ• 3/2-4 ʹ։࠵͞ΕͨiOS/Swiftσϕϩούʔ͚ΠϕϯτͷެࣜΞϓϦ29 © @amay077 , 2016
Xamarin Evolve 2016 App• github.com/xamarinhq/app-evolve• Android / iOS/ Windows ରԠɺ࠷ڧײ͋Δ30 © @amay077 , 2016