[〜#〜] edit [〜#〜]:わからなかったことがわかりましたChrome but Android System WebView
。 Google Playストアの他のユーザーの一部は、エラーなしでアプリをクラッシュするなどの応答を残しています。
元の投稿:
今夜は Chromeアプリ (Android 5.0.2)を更新し、Xamarin AndroidアプリをDEBUGモードでビルドしようとするとエラーが表示されます:
[google-breakpad] ### ### ### ### ### ### ### ### ### ### ### ### ###
[google-breakpad] Chrome指紋の作成:
[google-breakpad] 1.0
[google-breakpad] 1
[google-breakpad] 5c230f07-455f-4c1f-91eb-9c44019cd813
[google-breakpad] ### ### ### ### ### ### ### ### ### ### ### ### ###
[google-breakpad] JB MR2 +ユーザービルドで廃棄標識が無効になります。
[google-breakpad] ### ### ### ### ### ### ### ### ### ### ### ### ###
コンソールでエラーメッセージを見つけることができます:
E/SysUtils:ApplicationContextのApplicationContextがnull
これはクロムの一部のようです。
エラーはコンソールに表示され、webviewが戻るとアプリは元に戻ります(ただし、破棄されません)。 Webviewは別のフレームワークで発行されます。
昨日、すべてがうまくいったので、私は何も変更していません。
デバイスからアプリを実行(およびクラッシュ)した後、例外として機能します。
ターゲットビルドバージョンはAPI 21で、APIの最小バージョンは14です(ただし、19でも失敗します)。
Chromeではなく、Android System WebViewでアプリがGoogle Playストアの他のユーザー数人は、などの応答を残しました。エラーなしでアプリをクラッシュします。
編集:
Xamarin BugzillaのJonathan Pryorが投稿しました このコメント :
コメント#2およびコメント#3で述べたように、問題は、Google Play Service WebViewおよび関連するタイプが既存のSIGSEGVハンドラーを破壊していることです。
回避策として、値「explicit-null-checks」を含むようにMONO_DEBUG変数を設定することにより、NullReferenceExceptionを発生させるためのSIGSEGVハンドラーの必要性を取り除くことができます。
http://docs.go-mono.com/?link=man%3amono(1)
これを行うには、AndroidEnvironmentのビルドアクションを使用してAppプロジェクトにファイルを追加します。
http://developer.xamarin.com/guides/Android/advanced_topics/environment/
次に、ファイルに次の行を追加します。
MONO_DEBUG=explicit-null-checks
根本的な原因と思われるものについて、クロムのバグを提出しました。 http://code.google.com/p/chromium/issues/detail?id=48142
WebViewの更新をアンインストールできるため、これを修正しながらプロジェクトに取り組むことができます。
今回の場合、例外がスローされるとクラッシュすることがわかりました。 C#例外の代わりにJava.Lang.Exceptionを使用した場合、クラッシュを停止しました。
Unityの修正を見つけました。検証およびテスト済みです。
1)YOUR_UNITY_PROJECT/Assets/Editorの下にこのスクリプトをインストールします(この素晴らしいスクリプトのPrime31へのクレジット):
https://github.com/prime31/P31UnityAddOns/blob/master/Editor/GlobalDefinesWizard.cs
2)@fhlが述べたように、グローバル定義にMONO_DEBUG = explicit-null-checksを追加する必要があります。新しく追加したグローバル定義タグをクリックして、これを確認します。
3)ここで新しいビルドを作成すると、クラッシュが修正されます。