web-dev-qa-db-ja.com

Android System WebViewクラッシュAndroid apps! "JB MR2 +ユーザービルドで廃棄標識が無効になっています"

[〜#〜] 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でも失敗します)。

13
Fhl

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
3
Fhl

根本的な原因と思われるものについて、クロムのバグを提出しました。 http://code.google.com/p/chromium/issues/detail?id=48142

3
senorplow

WebViewの更新をアンインストールできるため、これを修正しながらプロジェクトに取り組むことができます。

今回の場合、例外がスローされるとクラッシュすることがわかりました。 C#例外の代わりにJava.Lang.Exceptionを使用した場合、クラッシュを停止しました。

2
YaPaKo

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を追加する必要があります。新しく追加したグローバル定義タグをクリックして、これを確認します。 enter image description here

3)ここで新しいビルドを作成すると、クラッシュが修正されます。

0
Pim de Witte