2015年5月6日水曜日

Win10 UWP メモ

Win10 UWP、開発環境が落ち着くまでは色々あるのでメモしておこうという記事です。

Azure VM 上でのテスト・開発環境の作成

(05/23追記)
最近、Win10 Enterprise build10072 がAzure VMで使用可能になりました。
私の環境では、10072 → 10122 への更新も成功しています。


VMのお値段ですが、私の使い方…Standard A3(4コア/7GB) を週末は大体上げっぱなし・平日は夜の使う時間のみにOn、で5000円+α程度?くらいで収まる感じです。



引っかかりやすいところ

  • リモートデスクトップからログインする場合のアカウントは「local\<Azureで設定したユーザー名>」と入力
  • Microsoft Accountに変更する場合、ストアから何かアプリを導入しようとすると直で変更画面に飛ぶので楽
  • Microsoft Accountへの変更がうまくいかない場合、別にアカウントを作成してやってみるといいかも。この場合、作成したアカウントをリモート接続許可に入れておくのを忘れずに
  • 10072→10122 Updateのような大きい更新は再起動してからリモート接続可能になるまでそれなり時間がかかるのでのんびり待つ

注意点



・Windows Phone 8.1 / Win10 Mobile のエミュレータはVM上では使用できません(これらエミュはHyper-V 仮想化を使っており、仮想マシンの上で仮想環境は動かせない)
・恥ずかしい話ですが、僕は10049→10072への更新で仮想マシンを接続不能にしてしまいました(Azure VM PowerShellからの回復作業やってもダメだった…)。ソースはVisual Studio Onlineで管理するなど、いつ飛んでもいいような運用がお勧めです。

UWPでのSQLiteの使用

(05/23追記)

SQLite, VSIXにもNugetにも同じような名前のが沢山あってどれ使えばいいのか判りづらい処なのですが…
これならWin10 Desktop/Mobile 両方で動く!という組み合わせは

VSIX
SQLite for Universal App Platform

Wrapper
SQLite.Net.Async-PCL
SQLite.Net-PCL


またJson.netやSharpDX等のような「ライブラリどれ使うか話」をMSの人がBlog記事にまとめており、参考になります。

Win10 apps in .NET- common library issues



VS2015RCのインストール

https://www.visualstudio.com/downloads/visual-studio-2015-downloads-vs

Win10 SDKはVS2015内のリンクからDLすれとガイドされる。
上手くいかない場合は下↓のページからStandaloneでインストール。
https://dev.windows.com/en-US/downloads/windows-10-developer-tools

(05/09 追記…Release直後はWin10 SDKのInstallでエラー頻発してたのですが、ここ数日?で修正が入ったのか、問題なくInstall終わることが多いです)

※公式では「UWPのBuildにはWin10 IPが必要」という事になっている。が、
現状Win8.1にVS2015を入れた場合、

  • ビルドとリモートマシンへのデプロイ・リモートデバッグは可能。
  • VSのXAMLデザイナは動かない。XAML手書き上等な人向け。
  • リモートデバッグは可能だが、VS2015の超新機能、ライブビジュアルツリーが使えないので残念度は高いです。



ターゲットマシンの開発者モード有効化

これまでの「開発者ライセンス」とは異なり、Win10 UWPでは「モード」を有効にする。

Enable your device for development
https://msdn.microsoft.com/library/windows/apps/xaml/dn706236.aspx
(追記 5/23)Win10 desktop build 10122から、OSの設定メニューで開発者モードを有効にできるようになりました。設定→更新とセキュリティ→開発者向け。

  • Win10 Desktop: ポリシーエディタで手動で変えれ
  • Win10 Mobile: Windows Phone Developer Registration Tool を使え

というお達しが出ているので注意。
(PhoneのRegistrationToolは大体 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Windows Phone SDK 8.1 あたりに入っています)


Win10 MobileへのUWP Deployで蹴られる場合

リモートマシンへのデプロイに必要な準備


  • RemoteToolsのInstallと起動
  • 開発者モードの有効化

を行った後でも、以下のエラーでデプロイに失敗する場合がある。

 Unexpected Error: A Prerequisite for an install could not be satisfied. (Exception from HRESULT: 0x80073CFD)

この場合、Package.AppXManifestのDependency/TargetDeviceFamily の ”MinVersion” を低め…"10.0.1.0"に設定することで解決する場合がある。

※理屈は通っていないので何でこれで通るのかは不明…実機側のメタデータが変なのかもしれない


GetEncodingで落ちる


System.Text.Encoding.GetEncoding()で落ちる。ヒデエ

シフトJISの変換に多用するのでこれが動かないのは結構困る。

※VS2015CTP6で作ったUWPでは、Win10 Mobileでも普通に動いていたので…Phone時代に戻った?というのもちょっと考えにくい。良く分からない。MSDNForumには一応投げたが…
https://social.msdn.microsoft.com/Forums/en-US/c8779cbe-1eda-4a2c-bab8-d0bc0d62ae20/

取り敢えずの回避策としては、(Phoneのように)代替PCLを使う。(ideakiさんに教えてもらいました ありがとう)

Portable.Text.Encoding: A Portable Implementation of System.Text.Encoding. 0.7.0
http://www.nuget.org/packages/Portable.Text.Encoding/


DebugSettings.IsTextPerformanceVisualizationEnabled は(便利だが)Mobileで使うと落ちる

フレームレート表示等のDebug用情報表示フラグの新顔で、「テキストレンダリングが遅いと黒文字、速いと緑文字で表示」という動作をする。

Buildのセッション
3-698 XAML Performance: Techniques for Maximizing Universal Windows App Experiences Built with XAML
で触れられていた機能だが、
Desktopではその通り動作するものの、Mobileでこのフラグにアクセスすると落ちる。


サンプルコードどこ?

ここ
https://github.com/Microsoft/Windows-universal-samples


xaml_xamluibasics\CS\AppUIBasics がやたら落ちる


落ちますね :)
App.xamlで定義しているStyleの内、Enable/DisableでボタンのForground色変えるあたりが全部死ぬっぽいです。Debug練習がてら直して使うといいかも。他にも動作変な所いくつかあるけど適宜直す感じで。
Sample自体はUI Controlsをほぼ網羅していてとても便利 NavigationのSampleとしても良く出来ています。

また、UWPなのだから当然Mobile でも動く…はずですが、現状幾つか発生するXAML関連のErrorをCommentOutで除去してもFileNotFoundExceptionが発生し、今のところ動かせていないです。なんだろう。


App UI Basics CS Sample



StateTrigger作るのが面倒臭い


こんなのがあります 素晴らしい
https://github.com/dotMorten/WindowsStateTriggers


x:Bindって何


Compiled Binding 速い!バインディング
Channel9でbuildの詳しい解説セッションが動画で見られるのでお勧めです
3-635 Data Binding: Boost Your Apps' Performance Through New Enhancements to XAML Data Binding


DeviceFamilyのExtensionの中身

VS2015RC+Win10SDK を入れると、既定では
C:\Program Files (x86)\Windows Kits\10\Extension SDKs
に、以下のExtension SDKがインストールされます。

  • Desktop (PC)
  • IoT (RasPi2)
  • Mobile (電話)
  • Team (SurfaceHub、電子ホワイトボードをPCにしたやつ)

それぞれのディレクトリのSDKManifest.XML に、各Extensionが持つコントラクトが書いてあります。












0 件のコメント:

コメントを投稿