fc2ブログ

記事一覧

Xamarin 逆引きメニュー | Xamarin.Forms


Xamarin(ザマリン) に関する内容を250以上揃えている逆引きのメニューです。全ての記事で Android と iOS に完全対応しています。当ブログの逆引きメニューを使って Xamarin.Forms の開発をスムーズにしましょう。
今後も更新していきますのでよろしくお願いいたします。
 作成:2016/11/04
 更新:2023/02/07


目次

 1.はじめに
 2.Xaml(ザムル)に関する内容
 3.コントロールについて
 4.デバイス制御
 5.画像処理
 6.PCL に関する内容
 7.Android に関する内容
 8.iOS に関する内容
 9.Xcodeに関する内容
10.iTunes Connect に関する内容
11.環境について
12.デバイステスト
13.Visual Studio の使用方法
14.Windows Update への対応方法
15.エラーの対応方法



3.コントロールについて

ボタンに画像を表示する方法
チェックボックスを作成する方法(iOSも動作可能)
ラインコントロールを作成する方法
リンクボタンを作成する方法
イメージギャラリーを表示して写真を取得する方法(動画付き)
インジケータを表示する方法
カスタムフォントでラベルやボタンに文字を表示する方法
カスタムフォントで ImageCell の文字を表示する方法
タイトルバーのスタイルを変更する方法(フォント/背景色/文字色)
ラベルにアニメーション効果を用いて文字列を表示する方法(動画付き)
テキストボックスのキーボードを設定する方法
テキストボックスを数値型のみ入力可とし、書式と最大桁数を設定する方法
テキストボックスに入力文字列を消去するボタンを表示する方法(iOS機能)
AlertDialogにテキストボックスやチェックボックスを表示する方法
PickerコントロールにHorizontalTextAlignmentを実装する方法
DatePickerの横位置(HorizontalTextAlignment)を変更する方法
ListViewのセルのレイアウト方法(ViewCell)
ListViewのパフォーマンス向上方法
ListViewがAndroid7 Nougatでクラッシュする不具合の対応方法
ListViewのMenuItemでスワイプが効かなくなる不具合の対処方法(動画付き)
ListViewのMenuItemを表示する方法
ListViewの選択行の背景色を変更する方法(Android編)
ListViewのデータをソートする方法
ListViewのImageコントロールで発生するOutOfMemoryエラーの対応方法
ListViewのImageコントロールを丸型で表示する方法
Sliderで整数の数値を入力する方法(動画付き)
ToolbarItemを表示する方法
ToolbarItemをDisable状態にする方法
ToolbarItemのスペースを調整してレイアウトを整える方法(iOS)
iOSのセカンダリツールバーをカスタマイズする方法
ナビゲーションバーの戻るボタンの名称を変更する方法
WebView(アプリ内でのWebページ)を表示する方法
非同期スレッドからコントロールオブジェクトを操作する方法



6.PCL に関する内容

アプリのバージョン情報を取得する方法
アプリの設定を保存する方法
アドレス帳からデータを取得する方法
漢字のふりがなを取得する方法(動画付き)
スマホの言語を取得・設定する
多言語化する方法(ローカライズ)
コピー&ペーストを実装する方法(クリップボード)
バックグラウンドサービスからDependencyServiceをコールする方法
ファイルにログ出力する機能を作成する方法
SMSを送信する方法
メールを送信する方法
Toast(トースト)を表示する方法
ローカル通知機能の構築方法
音楽ファイルを再生する方法
動画ファイルを再生する方法
動画を撮影してファイルとして保存する方法
拡張子に対応するアプリでファイルを開く方法
拡張子からMimeTypeを取得する方法
URLから外部ブラウザを起動する方法
Zipファイルとして圧縮する方法
Zipファイルを解凍する方法
ZXingで画像ファイルのQRコードをデコードする方法(動画付き)
SQLite データベースを使用する方法
SQLiteをマルチスレッドで使用する方法
Googleカレンダーに接続する方法(REST API)
Googleカレンダーに関するトラブルシュート
Facebookでアプリを友達に招待する方法(App Invite 2018/02/06廃止
Facebook Graph API v2の使用方法
Facebook Graph API v2で友達の情報を取得する方法
Flurry from Yahooでアプリに広告を表示する方法



7.Android に関する内容

APIレベルの変更に対応する方法(2018/11/01版)
AAB バンドル形式のアプリに変更する方法
InAppBillingでAndroid用の課金機能を作る方法
MainActivity.csのOnCreateでクラッシュする
MainActivityのインスタンスを取得する方法
Google Play Console への配布手順(Xamarin 4.3.0.784以降のArchive手順)
Google Play Console への配布手順(Xamarin 4.2.0.695以降のArchive手順)
ArchiveしたAPKを手動でアップロードする方法(2017年4月版)
Android Adb で再起動のシグナルを送信する方法
Admob SDK の新しいバージョンを導入する方法 -2022年 v121.2.0-
Android6 Marshmallow 以降のパーミッションの設定方法
Android7 Nougat 以降のFileProviderの設定方法
Android8 Oreo 以降の通知の実装方法
Android9 Pie の対応方法
AndroidX の対応方法
Android11 R の対応方法 - 対象範囲別ストレージ (Scoped Strage) -
Android12 S の対応方法
スプラッシュスクリーンを表示する方法
スプラッシュスクリーンを表示する方法 -Android12(S)に対応-
画面の背景色(windowBackground)を変更する方法
カスタムレンダラーがUIをフリーズさせる現象について(動画付き)
アプリやサービスが起動しているかどうか確認する方法
アプリ間での呼び出しとパラメータの受け渡し方法
OS起動時に自動実行するバックグラウンドサービスの作成方法
バックグラウンド処理を定期的に実行する方法(AlarmManager)
指定した時間に実行する方法(AlarmManager)
Dozeのホワイトリストにアプリを登録する方法
共有フォルダに接続する方法(SMB)
共有フォルダを利用したファイルのアップロードとダウンロード
共有フォルダに匿名アクセスする方法
ローカル通知にスタイルを適用する方法
ローカル通知にアクションボタンを表示する方法
Google Play Billing Library V3 の対応方法
Google Sign-Inでログイン認証する方法(デバッグ編)
Google Sign-Inでログイン認証する方法(リリース編)
Google Sign-Inで必要な配信用のSHA1フィンガープリントを取得する方法
Google-Services.jsonファイルの配置方法
ProGuardを有効にする方法(圧縮・最適化・難読化)
Muliti-Dexを有効にする方法 (64K制限回避)
バインドライブラリを作成する方法(Java変換方法)
nendでバナー広告を表示する方法
忍者AdMaxでバナー広告を表示する方法



8.iOS に関する内容

プロビジョニングの設定
プロビジョニングの更新方法
自動プロビジョニングで作成されるファイルの削除方法(VS2019)
手動プロビジョニングの設定方法 (VS2019)
デバイスをプロビジョニングに追加し、デバッグする方法
サポートされるアーキテクチャについて
デバイスを判別する方法 (iPhone 11 / XS Max / X / 8 / 6-7 / 5 / iPad)
iOS実機のデバッグでVisual Studioがフリーズする原因
iOS10でフリーズする不具合の解消方法
iOS10でListViewのエラーが発生する
iOS10でZXingの対応方法
iOS13でListViewの最下部までスクロールできない不具合の対応方法
iOS13でタイトルバーのフォントを変更する方法
iOS14でPHPcikerViewControllerを実装する方法(イメージピッカーの仕様変更)
iOS14でSKAdNetworkに対応する方法 -IDFA取得方法- (iOS15にも対応)
ListViewのセパレータ(線)が短い件
Google Mobile Adsで広告が表示されない対策
Xamarinos.AdMob.FormsPlugin の不具合を修正する方法
In-App Purchase
レシートを取得する方法
Info.plist内の文字列を多言語化する方法
DateTime型からNSDate型に相互変換する方法
スプラッシュスクリーンを作成する方法 -LaunchScreen.storyboard-
フォトアルバムに保存する方法
画像に独自フォントで文字列を描画する
UIActivityを使用して画像やファイルを共有する方法
アプリ間での呼び出しとパラメータの受け渡し方法
ローカル通知機能(iOS10対応)
ローカル通知に画像を表示する方法(iOS10対応)
ローカル通知にアクションボタンを追加する方法(iOS10対応)
プッシュ通知を実装する方法
VoIPプッシュ通知を実装する方法
バックグラウンドタスクを実行する方法
Background Fetch を実行する方法
Google Sign-Inでログイン認証する方法
バインドライブラリを作成する方法(Objective-C変換方法)
Objective Sharpieの使用方法
nendでバナー広告を表示する方法
忍者AdMaxでバナー広告を表示する方法
iPhone X への対応方法



11.環境について

Visual Studio 2017 に対応する方法
Visual Studio 2017 で Xcode 10.3 へアップデートして対応する方法
Visual Studio 2019 に対応する方法
Xamarin Release 15.5 以降からの手動ダウンロードURL
Xamarin 4.9.0.753 (Androidで配布の不具合あり)
Xamarin 4.8.0.760 (不安定、Remoted iOS Simulator 復活)
Xamarin 4.7.10.22 (不具合対応が必要)
Xamarin 4.7.9.45 (安定バージョン)
Xamarin 4.5.0.443 (不具合あり)
Xamarin 4.3.0.784 (安定バージョン)
Xamarin 4.2.1.64 (仕様変更あり) 
Xamarin 4.2.0.719(旧安定バージョン)
Xamarin 4.2.0.703(旧バージョン)
Xamarin 旧バージョンのダウンロード方法
Xamarin.Forms 2.4.0.280 への対応方法と追加機能について
Xamarin.FormsのNuGetパッケージのベータ版を取得する方法
Xamarin Mac Agent の設定方法
Hyper-Vを無効にする方法
macOS Sierra 10.12 を VMware 上にインストールする方法
macOS High Sierra 10.13 を VMware 上にインストールする方法
macOS Mojave 10.14 を VMware 上にインストールする方法
macOS Catalina 10.15 を VMware 上にインストールする方法
macOS Monterey 12 を VMware 上にインストールする方法
macOS Ventura 13 を VMware 上にインストールする方法
macOSでXcodeの設定
macOSでXamarin環境を構築する手順
ソースを難読化する方法(Dotfuscator.exe)



15.エラーの対応方法

aapt.exeはコード1を伴って終了しました。
android.app.RemoteServiceException: at android.app.ActivityThread$H.handleMessage
Android.OS.NetworkOnMainThreadException
android.util.SuperNotCalledException: Activity{アプリ名/ID.MainActivity} did not call through to super.onCreate()
Application windows are expected to have a root view controller at the end of application launch
Calling this from your main thread can lead to deadlock  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.
codesign exited with code 1. (MSB6006)  ※Visual Studio 2019の場合
Could not AOT the assembly Google.MobileAds.dll
com.android.tools.r8.CompilationFailedException: Type com.google.android.gms.ads.internal.overlay is defined multiple times
Could not connect to the debugger.
Could not create the Java Virtual Machine.   ※Visual Studio 2022の場合
Could not find 7zip.exe in Xamarin installer
Could not launch VS Emulator 5 XXHDPI Phone’ device. Exit code 0.
Could not load assembly Xamarin.GooglePlayServices.Ads, Perhaps it doesn't exist in the Mono for Android profile?
Csc タスクの OutputAssembly パラメーターには無効な値です。複数の項目を、型 Microsoft.Build.Framework.ITaskItem のパラメーターに渡すことはできません。(MSB4094)
Debug is not enabled in the current configuration.
Detected problems with app native libraries (please consult log for detail) : libmonosgen-2.0.so : unauthrized access to
”DetectSigningIdentity”タスクが予期せずに失敗しました。
Download finished with wrong checksum
Foundation.MonoTouchException: Objective-C exception thrown. Name: NSInvalidArgumentException
INSTALL_FAILED_DEXOPT / INSTALL_FAILED_UID_CHANGED
Invalid Bundle - iPad Multitasking support requires launch story board file
Invalid Code Signing Entitlements. ITMS-90163
java.exeはコード2を伴って終了しました。(error MSB6006: Xamarin.Android.Common.targets(2080, 3))
Java.Lang.NoClassDefFoundError: com.google.android.gms.internal.zzlo
Java.Lang.NoClassDefFoundError: Failed resolution of: Landroid/support/graphics/drawable/VectorDrawableCompat;
Java.Lang.NoClassDefFoundError: jcifs/UniAddress
Launch failed. The app could not be launched
logcat に接続できず、GetProcessId が返されました: 0
MasterDetailPageのDetailPageにListViewを含むページを設定するとアプリがクラッシュする
mlaunchが予期しない理由で終了しました。
Mono.Linker.MarkException: Error processing method: 'System.Void AndroidX.RecyclerView.Widget.RecyclerView
Native linking failed. Please review the build log.
No iOS signing identities match the specified provisioning profile.
No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').
Object reference not set to an instance of an object at Xamarin.Forms.Platform.iOS.NavigationRenderer.GetAppearedOrDisappearedTask
Only the original thread that created a view hierarchy can touch its views.
please select a valid device before running the application
PrepareLocalAppBundle タスクは、必要なパラメーター AppBundleName に対して値を指定されていませんでした。
System.IO.FileNotFoundException: Could not load assembly Xamarin.iOS
System.MissingMethodException: Method 'System.Array.Reverse' not found.
System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Android.Views.GestureDetector'.
The assembly 'Xamarin.iOS.dll' can't be AOT-compiled for 32-bit architectures because the native code is too big for the 32-bit ARM architecture.
The operation couldn’t be completed. (Cocoa error 4.)
UIKit Consistency error : you are calling a UIKit method that you can only be invoked from the UI thread.
Undefined symbols for architecture arm64
Unknown option '--no-version-vectors--no-version-vectors'
Version XX of this app can not be downloaded by any devices as they will all receive APKs with higher version codes. [403]
Visual Studio Team Services アカウントを自動的に設定できませんでした。
Xamarin.Forms targets have been imported multiple times. Please check your project file and remove the duplicate import(s).
Xamarin.iOS initialization failed.
xamarin attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.PackageItemInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
You must set the rootViewController property of GADBannerView
Your iOS Distribution certificate has been revoked.
zipalign.exe はコード 1 を伴って終了しました
オブジェクト参照がオブジェクト インスタンスに設定されていません(Xamarin.Build.Download.target の場合)
同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
型名 Raw が型 Resource に存在しません。
現在のコンテキストに 'InitializeComponent' という名前は存在しません。
認証が必要です。Googleアカウントにログインしてください。(InAppBilling)
ファイル 'obj\iPhoneSimulator\Debug\アプリ名iOS.exe.manifest' が見つかりませんでした
ブローカーを開始しようとしてエラーが発生しました
プロジェクトファイルはアンロードされました
プロビジョニング プロファイルの読み込み中にエラーが発生しました: Authentication service is unavailable.
繧ィ繝ゥ繝シ: 蜷榊燕縺檎ォカ蜷医@縺ヲ縺・∪縺吶€・yInterstitialAdLoadCallback縺ョonAdLoaded(Object)縺ィAdLoadCallback縺ョonAdLoaded(InterstitialAd)縺ッ縺セ縺莉匁婿繧偵が繝シ繝舌・繝ゥ繧、繝峨@縺ヲ縺・∪縺帙s縺後€∝炎髯、蠕後・蜷榊燕縺悟酔縺倥〒縺・


関連記事

コメント

Re: カメラ操作について
当ブログをご覧いただきありがとうございます。

全体的な実装方針は以下のようになります。
ご認識の通り、OCRでは基本的にカメラデバイスを利用することになり、
デバイスの操作に関するライブラリがAndroidとiOSで異なっていますので、別々に実装する必要があります。
別々に実装した結果をDependencyServiceの戻り値として取得する、またはデリゲートイベントを発生させることで結果を取得できます。取得した結果は共通のビジネスロジックにすることができます。

実際の実装方法につきましては、OCRというニッチなテーマになりますので、当ブログで掲載する予定は今のところありません。
動作するかどうかはわかりませんが、「Xamarin OCR」で検索したところ多くの記事が載っていましたので、そちらをご参考頂くと良いかもしれません。

また、WebAPIやNuGetパッケージを用いると簡単に実装が可能になりますが、
NuGetパッケージでは、将来的にGoogleやAppleの仕様変更により内部的に利用されている関数がObsolete扱いになったり、使用できなくなったり、審査に通らなくなるリスクがあります。(今までもありました)
WebAPIは影響を受けにくいですが、利用料金や接続制限の問題がありますので、ご利用に当たってはよく調べたほうが良いかもしれません。
カメラ操作について
Xamarin.Formsで個人的にアプリを開発しており、記事がとても参考になっています。
掲載ありがとうございます。

iOS、Androidに対応したOCRソフトを作ろうとしておりますが、Webで有用な記事が見つからず難航しています。
OCRといってもレシート等ではなく、車のナンバープレートの認識です。

難航している部分が二つありまして
ひとつめは、撮影アクションです。
カメラで撮影中に"ナンバープレートが認識"された場合に動作をしたいので、ユーザーが撮影ボタンを押す操作はありません。
この部分を両アプリ対応でどう作るか試行錯誤中です。

ふたつめは、文字認識です。
OpenCVを使って、画像をグレースケールしたり二値化したりと加工を考えていましたが、Xamarin初心者ということもあり、両アプリに対応させる方法が見えていません。
WebAPIを使用したほうが無難なのでしょうか…。

このあたりの参考になる記事を掲載していただけないでしょうか。

環境は
Windows で VisualStudio2019 を使用しております。
コメントの投稿

※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。

 入力されていないコメントには返信しませんのであらかじめご了承くださいませ。

※ニックネームでも良いので必ずご入力ください。

    

※必ずご入力ください。

    
    

※必ずご入力ください。

※技術的な質問には環境やエラーについて正確かつ詳細にお教えください。

・正確なエラーの内容

・Windowsのバージョン番号

・Visual Studioのバージョン

・機器の型番

・アプリやソフトのバージョン

    

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Catalina 10.15 / Mojave 10.14 / High Sierra 10.13 / Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
【データベース】
Oracle 10g/9i
SQLServer 2016/2008R2/2005/2000
SQLAnywhere 16/11/8
【BI/レポートツール】
Cognos ReportNet (IBM)
Microsoft PowerBI
ActiveReport (GrapeCity)
CrystalReport
【OCX関連】
GrapeCity InputMan SPREAD MultiRow GridView
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS jQuery IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。