はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Xamarin.AndroidやるならJava8とAndroid SDK Build-Tools 25以上で決まりっ!

Android開発はJavaな訳ですが、Android 6.0 (API 23)まではJava7、Android 7.0 (API 24)からはJava8が使えます。

では、Xamarinはというと2016年の夏くらいに、Android SDK Build-Tools 25あたりでちょっといろいろありましたが、今現在では、もう安定しているので、今から始めるならば、JDK8 (x86)をOracleのサイトからダウンロードしてきて、Android SDK Managerで、

と、必要なSDK Platformのインストールしておくといい感じですね。

 

 

Xamarin.Forms Androidで画面をスリープ状態にしないためには

Androidのアプリなどでロックスクリーン状態でも画面表示されているやつがあると思います。あれをXamarin.Formsでやろうとしたらどうするのか。

Androidアプリの普通のノウハウがそのまま使えます。

 

Xamarin.Forms (Android) でスリープ状態にさせないためには

 

Xamarinで始めるAndroidアプリ作成(その3)

Xamarin.FormsがサポートしているAndroidのバージョンをおさらいしてみましょう。

https://developer.xamarin.com/guides/xamarin-forms/getting-started/installation/#android

 

公式ドキュメントによれば

Android 4.0.3、つまり、「Ice Creame Sandwitch」以降をサポートしています。4.0.3は2011年12月16日に提供開始されています。

4.0.3以降ということであれば、世の中にあるAndroidデバイスのほぼ100%(残念ながらそれ以前のバージョンも多少は存在する)をカバーできます。

日本でいえば、ドコモのGalaxy SII SC-02Cなどが4.0.3ですが、2016年時点でキャリア2年縛りはすでに超えていますから、ほぼカバーしていると言っていいでしょう。

 

ただし、素直に4.0.3かといえば、若干違和感があります。

その違和感はXamarin.FormsとXamarin.Android.SupportとAndroid SDKの関係を表にしてみるとはっきりしています。

  Xamarin.Forms Xamarin.Android.Support Android SDK
プロジェクト作成時 v1.3.3.6323 v4.21.0.3 4.0.3 (API1 5)
nuget最新 v2.2.0.31 v4.23.3.0 5.0 (API 21)

このように最新のXamarin.Forms v2.2が要求するXamarin.Android.Supportはv4.23.3.0であり、v4.23.3.0が要求するAndroid SDKは5.0になるのです。

 

それではなぜ、公式ドキュメントには「4.0.3」以上となっているのでしょうか。

答えは同様に公式ドキュメントにあります。

Target

Mini

つまり、ターゲットは最新(または少なくともXamarin.Android.Support.v4.23.3.0が要求する5.0以上)として、Minimum Android versionとして「4.0.3」を指定できることが、Xamarin.Formsの要求仕様がAndroid v4.0.3以上という意味だということです。

 

Visual Studioならプロジェクトのプロパティの[Application]-[Application properties]

 

違和感の原因は、4.0.3以上ということで、では自分たちの作ったアプリも4.0.3以上としようとしたときにターゲットフレームワークを「4.0.3」ではなく「5.0」としてMinimum Android versionで「4.0.3」としていいのかという点にあります。Visual StudioならTarget frameworkが「Complie using Android version」となっているのでさらに不安を感じます。

 

これらのバージョンはどのような意味があるのでしょうか。

注意しないといけないのは、これは、Xamarin固有の話ではなく、Android開発の基本的な話となります。Android StudioJavaで作成したときもbuild.grableに同じように描くことになります。

結論を先に書けばWindowsアプリに比べたらかなりおおざっぱというか、これでいいの?という感じがAndroidアプリ開発なんだなぁと。

Target framework
(targetSdkVersion)
 
Minimum Android version
(minSdkVersion)
指定したバージョン以上にインストールできる宣言

 

これ、トラディショナルジャパニーズカンパニーで開発やっていると、Target framework = Minimum Android versionとして、アプリの動作要件の○○以上とする一番古いバージョンに合わせてコンパイルして、それより上位のOSでも下位互換性確認の意味で動作チェックしてって感覚だと思うのです。

Target frameworkは最新にして、Minimum Android versionにアプリ動作要件の○○以上とするというのがAndroidスタイルだって納得して、きちんとシステムテストで4.0.3 (Ice Cream Sandwich)/4.3 (Jelly bean)/4.4 (KitKat)/5.1 (Lollipop)/6.0 (Marshmallow)とテストするしかないのでしょう。このあたり、Androidで業務アプリを作っていたり、それよりもGoogle Playで人気アプリ配信している個人開発者さんあたりにお話をお聞きしたいですね。ほんと、どうしていらっしゃるのだろうか。

 

まあ、そんなときに心強い味方と言ったら、Xamarin Test Cloudですよね。

例えば、月額249$のBUILDなら、こんな感じにテストができます。

  1. 同時に2つまでデバイスを選んでテスト可能 (2 concurrent devices)
  2. トータル10分かかるテストならば、2多重x10分で合計3時間(3 device hours/day)=毎日90分のテスト時間で18デバイスのテストが可能

 

4.0.3 (Ice Cream Sandwich)/4.3 (Jelly bean)/4.4 (KitKat)/5.1 (Lollipop)/6.0 (Marshmallow)の5バージョンでそれぞれ代表的なデバイスを1つづつテストするのであれば、もう一つ安いSTARTプラン=月額$99でもテストできそうですね。

  1. 同時に1つまでデバイスを選んでテスト可能 (1 concurrent devices)
  2. トータル10分かかるテストならば、1多重x10分で合計1時間(1 device hours/day)=毎日60分のテスト時間で6デバイスまでテスト可能

1日1回しかテストできないの?と思うかもしれませんが、手元の実機やエミュレータでテストしたあとの仕上げテストですから、毎日1回とかで十分と言えるでしょう。

 

そうそう、Visual Studio Enterpirse使っているなら上記の金額から25%引きで利用できますので、さらにお得ですね。

Xamarinで始めるAndroidアプリ作成(その2)

前回のつづきです。

インストールが無事に完了したら、早速、Visual Studioを起動してみましょう。

[ファイル]-[新しいプロジェクト]メニューをクリックすれば言語ごとに作成できるテンプレート一覧が表示されます。

 

image_thumb3

Android / Cross-Platform / iOSあたりがXamarinのテンプレートになります。

[Android]

 Blank App (Android)

 Wear App (Android)

 WebView App (Android)

 OpenGL Game (Android)

 Class Library (Android)

 Bindings Library (Android)

 UI Test App (Xamarin.UITest | Android)

 Unit Test App (Android)

[Cross-Platform]

 Blank App (Native Portable)

 Blank App (Native Shared)

 Blank App (Xamarin.Forms Portable)

 Blank App (Xamarin.Forms Shared)

 Class Library (Xamarin.Forms)

 UI Test App (Xamarin.UITest | Cross-Platform)

[iOS]

 [Apple Watch]

  Watch App (Apple Watch)  

 [Extensions]

  Action Extentions (iOS)

  Document File Provider Extentions (iOS)

  Document Picker Extentions (iOS)

  Photo Editing Extentions (iOS)

  Share Extentions (iOS)

  Today Extentions (iOS)

  Custom Keyboard Extentions (iOS)

 [iPad]

  Blank App (iPad)

  Master-Detail App (iPad)

  OpenGL Game (iPad)

  ScenceKit Game (iPad)

  Signle View App (iPad)

  SpriteKit Game (iPad)

 [iPhone]

  Blank App (iPhone)

  Master-Detail App (iPhone)

  OpenGL Game (iPhone)

  ScenceKit Game (iPhone)

  Signle View App (iPhone)

  SpriteKit Game (iPhone)

 [Universal]

  Blank App (Universal)

  Master-Detail App (Universal)

  OpenGL Game (Universal)

  ScenceKit Game (Universal)

  Signle View App (Universal)

  SpriteKit Game (Universal)

Xamarinだからといって、AndroidiOSの両方作らないといけないかといえばそんなことはありません。

同じコードで書けるのだからせっかくなのでという程度のお話。

なのでAndroidiOSだけのテンプレートでアプリを作るのも楽しいと思います。

 

とはいえ、やっぱり両方一度に作るのがXamarinの醍醐味ですから、[Crass-Platform]の「Blank App (Native Shared)」か「Blank App (Xamarin.Forms Shared)」あたりのテンプレートを選んでみるのがいいでしょう。

PortableじゃなくてSharedなの?という点については、好みの問題ではあるかもしれませんが、Sharedの方が素性がよい気がしています。

  • Portable
    →共通コードはPCLと呼ばれるDLLにします。各OSのプロジェクトではDLLを参照する形で行います。
  • Shared
    →共通コードはSharedプロジェクトに記述します。でもコンパイル自体は各OSのプロジェクトのコードと一緒にコンパイルします。

 

Blank App (Native Shared)

Blank App (Native Shared)は、画面定義は、iOSはStoryBoard、Androidはaxml、WindowsPhone8.1はXAMLとそれぞれネイティブアプリを作成するときの画面定義と同じ定義で画面が作成できるテンプレートです。すでに画面定義があったり各OSの書籍を参考にするときなどに便利です。

 

Blank App (Xamarin.Forms Shared)

Blank App (Xamarin.Forms Shared)は、画面定義もXamarin.Formsという画面定義を使って3OSの画面を(別々に定義でもいいし、同じ定義でもいい)定義します。

定義形式は、XAML形式ですがUWPのXAMLとは要素名などが異なります。このあたりは今後どう統合されていくのか楽しみな部分です。

 

プロジェクトを作成したら

Xamarinは日々進化しています。特にXamarin.Formsの更新速度が速くテンプレートで使われているものよりも最新版がnugetで提供されています。

テンプレートからプロジェクトを作成したら、各プロジェクト名を右クリックして[NuGetパッケージの管理]で[更新プログラム]タブから更新を行ってください。各プロジェクトごとなので合計3回実施します。

image16

Xamarinで始めるAndroidアプリ作成(その1)

build 2016で発表があったようにVisual StudioユーザーであればXamarinは無料で使えます。

例外は、企業ユーザーでVisual Studio Expressを使っている開発者さんだけですね。

個人開発者やOSS開発者であえば、Xamarinのサイトから無償のVisual Studio Community Edition + Xamarinをダウンロードすればよいですし、有償のVisual Studio (EnterpriseとかProfessional)をお使いであれば、XamarinサイトからXamarin for Visual Studioがダウンロードできます。

https://www.xamarin.com/download

 

OSはWindows 7 SP1以上で使えますが、おすすめはもういっそのこと無償アップグレードできるんですからWindows 10に上げてしまうことです。

 

Visual Studio Enterprise 2015だと次のような機能にチェックをつけてインストールするといいでしょう。

  :

  :

■ユニバーサルWindowsアプリ開発ツール

Windows 8.1およびWindows Phone 8.0/8.1ツール

クロスプラットフォームモバイル開発

 ■C#/.NET (Xamarin)

 □HTML/JavaScript (Apache Cordova) Update 8

 □Visual C++ モバイル開発

 ■AndroidMicrosoft Visual Studio エミュレーター (2016年1月)

 □共通ツールおよびソフトウェア開発キット

  ■Androidネイティブ開発キット (R10E, 32ビット)

  □Androidネイティブ開発キット (R10E, 64ビット)

  ■Android SDK

  ■Android SDKセットアップ(API 19および21)

  ■Android SDKセットアップ(API 22)

  ■Android SDKセットアップ(API 23)

  □Android Ant (1.9.3)

  ■Java SE開発キット (7.0.5501.13)

  □Joynet node.js

□共通ツール

 ■Git for Windows

 ■Visual Studio 向け GitHub拡張

 ■Visual Studio 拡張性ツール Update 2

 

このあたりをチェックするとかなりインストールに時間がかかります。

時間の余裕があるときに行うようにしてください。

build 2016 2日目のキーノートでVisual StudioにXamarin無償提供が発表されました。

Xamarin無償提供

//build/ 2016の2日目のキーノートでついにVisual Studio利用者へのXamarin無償提供が発表されました。

  1. Enterprise
  2. Professional
  3. Community

利用者はXamarinを無償で使えるようになります。

すでにXamarinのサイトからはVisual Studio Community Edition with Xamarinのダウンロードが可能になっています。

image

では、すでにEnterpriseやProfessionalを使っている人はどうすればいいかといえば…..

[I use Visual Studio Today]をチェックすれば「Download Xamarin for Visual Studio」に変わりますのでご安心を。

これも、いますぐにでもできますよ。

対象はVisual Studo 2015 Update 2らしいので、Update 2もMSDNからダウンロードしよう!

 

iPhoneエミュレーターWindowsで実行可能

いままでMacがないとできなかったXamarin.iOSのビルドやiPhoneエミュレーターを使ったデバッグWindowsだけでできるようになりました。

仕組みとしては、Visual StudioからビルドマシンのMacにソースを送ってビルドしたものがWindows上のiPhoneシミュレーターで動作するってことですね。

残念ながらまだビルドマシンとしてのMacは必要ですがデバッグ時にMac側の画面やキーボードとかマウスが必要ないのはいいですね。

本当に助かります!

Xamarin Test CloudがVisual Studio Team Foundation Serviceと連携

Androidのテストで必要な多数のデバイスをクラウドで(実際はその向こうに実機がいっぱい)テストできるXamarin Test Cloudの実行毛化をTFSと連携できるようになります。

つまり、コードを書いてチェックインすれば(そしてテスト開始の条件をみたせば)自動的にXamarin Test Cloudが動き、テスト結果をビデオ録画し、成否を記録してくれるわけです。

もう、テストはこうじゃないとね。

Oracle x Xamarin

Cloud Mobile ServiceにXamarin用のSDKが登場しました。
Cloud Mobile Serviceには従来はMAF (Oracle Mobile Application Framework)=Oracle版Cordvaみたいなのしかなかったのですが、デバイス側のSDKとしていろいろなものが一気に登場します。
その一環としてOracle公式のXamarin SDKが登場です。

blog.xamarin.com

Cloud Mobile Serviceは無償評価枠が存在しないのでガチ課金で試すしかない(Oracle ACEであっても!)ので、さてどうしたものか。