ぴーさんログ

だいたいXamarin.Formsのブログ

Native Library Interop (旧称:Slim Bindings) 作り方編

前回、Slim BindingsもといNative Library Interopについての説明記事を書きました。 今回は作り方について説明していきます。 前回の記事を書いた後に名称が変更され、サンプルリポジトリが.NETのCommunityToolkit配下に移管されました。 これにより正式に…

Slim Bindingアプローチについて

今回はSlim Bindingアプローチを題材に.NET iOS/Android, MAUIにおけるBinding Library事情についての話をします。(Slim Bindingアプローチの具体的な実装手順は割愛します) Binding Libraryとは? Slim Bindingアプローチは言ってしまえばBinding Libraryの…

【Xamarin → .NET 6+(MAUI)移行】 csprojファイルに書くと良いかも知れない設定 3選

Xamarin.FormsアプリをMAUIへ移行する際にプロジェクトファイル(csproj)を直接編集して設定変更することが度々ありました。 今回はその中で利用機会のありそう3点をご紹介します。 プラットフォーム固有のソースファイル指定 (MAUI向け) XamlC強制 HttpHandl…

.NET 6+, MAUIで使えるデバイステストランナー

今回は.NET 6以降、MAUI世代のユニットテストに使えるデバイステストランナーについて紹介します。 動機 Xamarin.Forms世代の頃には、古い内容のままでしたが一応ユニットテスト用のプロジェクトテンプレートが存在していました。しかしこれは.NET 6以降のiO…

なぜXamarinから.NET 6+, MAUIへ移行しなければならないのか

Xamarin、およびXamarin.Formsのサポート終了期日(2024年5月1日)まで半年を切りました。 今回はなぜ移行が必要なのか、どんな作業が発生するのかといった事について書いていきます。 なお、本記事では.NET 6とそれ移行のバージョンについて.NET 6+と表記しま…

MAUI移行時のDependencyServiceの対処

Xamarin.FormsアプリをMAUIへ移行する際に遭遇した問題から一つ。 問題 DependencyService.Get<T>()でインタンスを取得できなくなる。 解決方法 型の登録方法を変更し、DependentyAttributeで自動登録する方法から、明示的な手動登録に変更する。 解説 MAUIへ移</t>…

HttpClient周りの仕様が変わってました

Xamarinから.NET 6+(MAUI含む)へ移行する際に注意すべきHTTPスタックのお話です。 HttpClientの挙動に影響するので、.NET 6+へ移行したらHTTP通信周りに異常が無いかテストしましょう! HTTP Handlerの設定 .NET 6+になってHTTP Handler周りの仕様がXamarin.…

.NET for iOS / AndroidのSDKバージョンを固定する

.NET for iOS / Android、およびMAUI SDKのバージョンを制御する方法というテーマで調べた事をつらつら書いていきます。 問題 .NET 6以降のiOS/Android SDK管理は、基本的に最新へ上げ続ける事を要求する。 ついでに、Xamarin.Formsが.NET MAUIになってバー…

csprojファイル内で使用されるMSBuildプロパティのデフォルト値を調べる

前置き .NET Coreと同じくらいの時期に登場したSDKスタイルと呼ばれるcsproj形式では、 明示的に記述しなくても多くのMSBuildプロパティに初期値が設定されるようになっています。 ここで Release ビルドの設定を少し変更した Release_Sandbox のようなビル…

Xamarin.Forms Material Visualのバグ修正しました

お仕事で踏んだXamarin.Formsのバグ修正をしました。 この記事を書いている時点でPR承認済みなのでそのうち取り込まれてリリースされると思います。 [Bug] iOS Material Renderers can cause NRE. · Issue #15669 · xamarin/Xamarin.Forms この問題はMateria…

艦これ二期のスクリーンショットを撮るChrome拡張(ver.1.5)

やったのもう結構前なんですが、艦これのスクショを撮るChrome拡張がストアのポリシー変更に対応してなくて取り下げられちゃってたので対応しました。 chrome.google.com ポリシー違反関係の対応自体は申請ページの作業なんですが、バックグラウンド処理のや…

Xamarin.iOSのメモリ管理

2つのメモリ管理 Xamarin.iOS(.NET 6も同様)では、C#(.NET)側とiOS側(Objective-C, Swift)でそれぞれ独立したメモリ管理をしています。 C#(.NET)では、ガベージコレクタ(GC)を採用しています。 コード上ではメモリ管理を行わず、GCが不定期にどこからも参照…

デスクトップPC更新

自宅のデスクトップPCを更新しました。 いつも構成を忘れるので備忘録としてここに残します。 買ったもの CPU: Intel Core i7 9700K メモリ:SanMax SMD4-U32G48M-26V-D (DDR4-2666 16GB2枚組) マザーボード:ASRock Z390 Phantom Gaming 6 電源:Seasonic …

艦これ二期のスクリーンショットを撮るChrome拡張(ver.1.4)

chrome.google.com 前回の問題点を改善して、高DPIの環境だったり、スクロールやズームをしていても原寸大のスクリーンショットが撮れるようになりました。 スクロールしてようが高DPIだろうがちゃんとスクショ撮れるようになったぞい。https://t.co/7cuYUcr…

艦これ第二期がスタートしたのでスクリーンショットを撮るChrome拡張を作った

8月17日(金)に艦これ第二期がスタートして、FlashからHTML5に移行しました。リニューアルオープンです。 ゲーム画面が 800x480 から 1200x720 になりました。大きい! それに合わせて艦娘の立ち絵などの画像素材も高解像度化されました。う、美しすぎる! 綺…

Xamarin.Formsのトロフィーをもらいました

Xamarin.FormsチームがGitHubリポジトリのコントリビューター宛にトロフィーを贈ってくれました。やったぜ。 I just received the trophy of my contributions, thank you #Xamarin Forms team! pic.twitter.com/vxVVZazJgv— ざまりん.ふぉーむずのソースコ…

Xamarin.Macのコントリビュータになりました

Xamarin.Macなアプリは作ってないんですけどね。 何故かNSDistributedNotificationCenter.DefaultCenterの型がNSObjectになってるというツイートを見かけたのでPRにしてみたけど通るかな?https://t.co/T2aOtmWp7B— ざまりん.ふぉーむずのソースコード読むマ…

ASUS ZenFone 4s MAXでXamarin.Androidの実機デバッグができない場合のトラブルシューティング

ASUS ZenFoneでXamarin.Androidアプリの実機デバッグをする際、「Mono Shared Runtimeのインストールがブロックされて失敗する」というのは既知の問題があります。 Can't deploy on device (Android MarshMallow) — Xamarin Forums ZenFone 2や3では「Auto-s…

Visual Studio 2017で作成したXamarin.FormsプロジェクトをVisual Studio 2015でビルドする

さて、現時点のVisual Studio 2017(ver. 15.6.5)でXamarin.Formsプロジェクトを新規作成すると結構新しくてイケイケなプロジェクトをはいてくれます。 packages.configファイルが無い 共通コードが.NET Standard 2.0(またはShared project) これをVisual Stu…

Xamarin.Forms VisualStateManager Support

Xamarin.Forms 3.0.0からVisualStateManager、およびVisualStateが追加されます。 VisualStateManager.GoToState()を呼ぶと対応するVisualStateのSetterが適用される機能です。 これにより、Viewの状態に対応する見た目を宣言的に扱うことが可能となります。…

Xamarin.Formsにコントリビュートしよう

先日、Xamarin.FormsのVisualSateManagerの解説を書いている途中で、バグを見つけて修正PRを投げました。 せっかくなのでどんな感じだったのか共有します。レッツ貢献! Xamarin.FormsのVisualStateManagerで規定のVisualStateを確認するサンプル。 pic.twit…

Xamarin.Forms CSS Support

Xamarin.Forms 3.0からCSS Supportが追加されます。(ASP .NET辺りの人たちにリーチしていく狙いらしい?) 一部制限はあるものの大体の機能がそのまま使えるようです、よってこの記事ではXamarin.Forms固有の事情を中心に説明します。 詳しく知りたい人は元の…

Xamarin.AndroidでFindViewByIdを省略するやつ

が追加されるらしいです。(Kotlin Android Extensionsでできるアレ) Slides from my presentation today. https://t.co/Pg8rjY9MKR pic.twitter.com/Pe46x3Yp1b— Miguel de Icaza (@migueldeicaza) 2018年3月6日 (Miguelの資料より引用) 仕組みとしてはXamar…

Xamarin.Forms.FlexLayout

いつの間にかXamarin.FormsのmasterブランチにFlexLayoutが生えていたので試してみました。 いつの間にかXamarin.Flexなるディレクトリが生えてるhttps://t.co/Gk1qspwOy9— ざまりん.ふぉーむずマン (@ticktackmobile) February 15, 2018 というかFlexLayout…

JXUGC #23 Xamarin 無料化一周年記念勉強会!で喋ってきました

2017/5/27(土)に開催されたJXUGC #23 Xamarin 無料化一周年記念勉強会!で喋ってきました。 Xamarin.formsで好き勝手に野良プラットフォーム from P3PPP Xamarin.Formsがさらにオープンになる変更がリリースノートでも特に言及される気配がないのでちょっと…

Xamarin Live Playerの仕組みを想像してた

今朝起きるとBuild 2017の2日目にXamarin Live Player(以降XLPと省略します)という技術が発表されていたので、今日はその仕組みについて想像していました。 5/12 午前 この時点では、どうやらXLPは「Mac不要でiOSアプリをビルドしてデバッグできる」技術らし…

Microsoft MVP for Visual Studio and Development Technologies を受賞しました

2017年3月づけ(?)でMicrosoft MVP Awardを受賞しました。 受賞カテゴリはVisual Studio and Development Technologiesです。 今年の2月からMicrosoft MVP Award Programが改定され、年4回だった審査&表彰が毎月になりました。私はその第二陣ということにな…

【Xamarin.Forms向け】ItemsSource BindablePropertyを追加するコードスニペット

BindableなItemsコントロールを作るときにコピペしてね。(ItemsViewを自分のコントロールに置換しよう)

【Xamarin.Forms 2.3.4-pre】ちゃんとBindableになったPicker

Xamarin.Forms 2.3.4-preでPickerがItemsSourceとItemSelectedをサポートするようになります。すっごーい! さっそくこんな感じのViewModelを用意してContentPageのBindingContextにセットします。 public class ViewModel : INotifyPropertyChanged { publi…

【Xamarin.Forms 2.3.4-pre】新しいOnPlatformメカニズム

Xamarin.Forms 2.3.4-preで新しいOnPlatformの仕組みが導入され、従来の物は非推奨となります。 概要 動作プラットフォームを文字列で判別するアプローチに変更(従来はenum) Xamarin.Formsがサポートしていないプラットフォームへの対応が容易に(Tizenとか) …