Androidのアプリなどでロックスクリーン状態でも画面表示されているやつがあると思います。あれをXamarin.Formsでやろうとしたらどうするのか。
Androidアプリの普通のノウハウがそのまま使えます。
Xamarin.Forms (Android) でスリープ状態にさせないためには
Androidのアプリなどでロックスクリーン状態でも画面表示されているやつがあると思います。あれをXamarin.Formsでやろうとしたらどうするのか。
Androidアプリの普通のノウハウがそのまま使えます。
Xamarin.Forms (Android) でスリープ状態にさせないためには
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」以上となっているのでしょうか。
答えは同様に公式ドキュメントにあります。
つまり、ターゲットは最新(または少なくとも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 StudioでJavaで作成したときも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なら、こんな感じにテストができます。
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回とかで十分と言えるでしょう。
そうそう、Visual Studio Enterpirse使っているなら上記の金額から25%引きで利用できますので、さらにお得ですね。
前回のつづきです。
インストールが無事に完了したら、早速、Visual Studioを起動してみましょう。
[ファイル]-[新しいプロジェクト]メニューをクリックすれば言語ごとに作成できるテンプレート一覧が表示されます。
Android / Cross-Platform / iOSあたりがXamarinのテンプレートになります。
[Android]
Blank App (Android)
Wear App (Android)
WebView App (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)
ScenceKit Game (iPad)
Signle View App (iPad)
SpriteKit Game (iPad)
[iPhone]
Blank App (iPhone)
Master-Detail App (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だからといって、AndroidとiOSの両方作らないといけないかといえばそんなことはありません。
同じコードで書けるのだからせっかくなのでという程度のお話。
なのでAndroidやiOSだけのテンプレートでアプリを作るのも楽しいと思います。
とはいえ、やっぱり両方一度に作るのがXamarinの醍醐味ですから、[Crass-Platform]の「Blank App (Native Shared)」か「Blank App (Xamarin.Forms Shared)」あたりのテンプレートを選んでみるのがいいでしょう。
PortableじゃなくてSharedなの?という点については、好みの問題ではあるかもしれませんが、Sharedの方が素性がよい気がしています。
Blank App (Native Shared)は、画面定義は、iOSはStoryBoard、Androidはaxml、WindowsPhone8.1はXAMLとそれぞれネイティブアプリを作成するときの画面定義と同じ定義で画面が作成できるテンプレートです。すでに画面定義があったり各OSの書籍を参考にするときなどに便利です。
Blank App (Xamarin.Forms Shared)は、画面定義もXamarin.Formsという画面定義を使って3OSの画面を(別々に定義でもいいし、同じ定義でもいい)定義します。
定義形式は、XAML形式ですがUWPのXAMLとは要素名などが異なります。このあたりは今後どう統合されていくのか楽しみな部分です。
Xamarinは日々進化しています。特にXamarin.Formsの更新速度が速くテンプレートで使われているものよりも最新版がnugetで提供されています。
テンプレートからプロジェクトを作成したら、各プロジェクト名を右クリックして[NuGetパッケージの管理]で[更新プログラム]タブから更新を行ってください。各プロジェクトごとなので合計3回実施します。
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 8.1およびWindows Phone 8.0/8.1ツール
□クロスプラットフォームモバイル開発
■C#/.NET (Xamarin)
□HTML/JavaScript (Apache Cordova) Update 8
□Visual C++ モバイル開発
■Android用Microsoft Visual Studio エミュレーター (2016年1月)
□共通ツールおよびソフトウェア開発キット
■Androidネイティブ開発キット (R10E, 32ビット)
□Androidネイティブ開発キット (R10E, 64ビット)
■Android SDKセットアップ(API 19および21)
□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を無償で使えるようになります。
すでにXamarinのサイトからはVisual Studio Community Edition with Xamarinのダウンロードが可能になっています。
では、すでにEnterpriseやProfessionalを使っている人はどうすればいいかといえば…..
[I use Visual Studio Today]をチェックすれば「Download Xamarin for Visual Studio」に変わりますのでご安心を。
これも、いますぐにでもできますよ。
対象はVisual Studo 2015 Update 2らしいので、Update 2もMSDNからダウンロードしよう!
いままでMacがないとできなかったXamarin.iOSのビルドやiPhoneエミュレーターを使ったデバッグがWindowsだけでできるようになりました。
仕組みとしては、Visual StudioからビルドマシンのMacにソースを送ってビルドしたものがWindows上のiPhoneシミュレーターで動作するってことですね。
残念ながらまだビルドマシンとしてのMacは必要ですがデバッグ時にMac側の画面やキーボードとかマウスが必要ないのはいいですね。
本当に助かります!
Androidのテストで必要な多数のデバイスをクラウドで(実際はその向こうに実機がいっぱい)テストできるXamarin Test Cloudの実行毛化をTFSと連携できるようになります。
つまり、コードを書いてチェックインすれば(そしてテスト開始の条件をみたせば)自動的にXamarin Test Cloudが動き、テスト結果をビデオ録画し、成否を記録してくれるわけです。
もう、テストはこうじゃないとね。
Xamarin 4.0 RC0が登場しました。現行のXamarin 3からのメジャーバージョンアップとなります。Microsoft製品のRC版と比べると品質的というか機能的な面でちょっと不安な点もありますが、それはリリースしてから怒涛勢いで治っていくでしょう。
そういった点はとりあえずおいておいて、メジャーバージョンアップによる新しい環境にいち早くなれるためにもRC0を早速入れてみました。
RC0の入手方法は
https://blog.xamarin.com/introducing-our-first-release-candidate/
ここから。
「Be First To Try Our New Release Candidate」
ということなのでやっぱりトライしないとですね。
まずは、Windows版をダウンロードしてインストール。サクッと既存のXamarin 3が置き換わってくれます。もちろん、Visual Studio 2015のAdd-InもOK。
さて次はMac版。あれ?どうやってやるの?
とりあえずダウンロード。imgファイルなのでマウントして中のインストーラーを起動。
さくさくーっと進みます。
さて、Xamarin 4で何が変わったかといえば、Windows上のVisual StudioからMac OSをビルドマシンとしてXamarin.iOSでビルドする時の流れ。
まず、Xamarin.iOSのプロジェクトを開くとビルドマシンとつなぎに行こうとすることがなくなりました。本当に必要最小限の接続になりました。
そして、従来であればMac OS側でアプリを立ち上げておかないといけなかったのが、Xamarin 4からはMac OS側でリモートログインの許可をしておくだけ。
そうしておけば、あとはWindowsからMacへsshでつなぐだけ、ファイアウォール越しでも22番ポートが空いていればいいので、自宅のMacOSをビルドマシンとして外出先でXamarin.iOSアプリを開発することだって可能です。
さて、Mac OS側にXamarinが入ってリモートログインの設定も終わりました。
Windows側でVisual Studioを立ち上げて…あれ……うまくつながりません。
そんな時は、Visual Studioの[ツール]-[オプション]でXamarinの設定を確認してみましょう。
Xamarin Mac Agentに接続先のMacを見つけさせて、Mac上のApple SDKの位置も(大抵は、/Applications/Xcode.app でOK)の位置も設定しましょう。
これが終われば準備完了。
Visual Studioで[ツール]-[iOS]-[Show iOS Simulater]をクリックすると間髪入れずにMac OS側でシミュレータが立ち上がるのは壮観です。
ぜひ、一度お試しください。