6

ユーザーが[設定]->[アプリ]->[MyApp]に移動し、[データを消去]を選択すると、起動するたびにMonoforAndroidアプリがクラッシュすることがわかりました。私はMonoforAndroidの「HelloWorld」アプリケーションを使用して新しいプロジェクトを作成しました。このアプリはまったく同じ動作を示します。これは、これが私のコントロールから離れたモノスタックのどこかで発生するという仮定に私を導きます。adb logcatで確認すると、次の行を見つけることができます。

I/ActivityManager(  185): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=Test_App.Test_App/test_app.Activity1} from pid 386
D/dalvikvm(18358): Late-enabling CheckJNI
I/dalvikvm(18358): Turning on JNI app bug workarounds for target SDK version 8...
I/ActivityManager(  185): Start proc Test_App.Test_App for activity Test_App.Test_App/test_app.Activity1: pid=18358 uid=10074 gids={3003}
D/dalvikvm(  119): GC_EXPLICIT freed 37K, 3% free 12553K/12867K, paused 1ms+2ms
I/ActivityThread(18358): Pub Test_App.Test_App.mono.MonoRuntimeProvider.__mono_init__: mono.MonoRuntimeProvider
D/dalvikvm(18358): Trying to load lib /data/data/Test_App.Test_App/lib/libmonodroid.so 0x4168ba48
D/dalvikvm(18358): Added shared lib /data/data/Test_App.Test_App/lib/libmonodroid.so 0x4168ba48
D/dalvikvm(  119): GC_EXPLICIT freed <1K, 3% free 12553K/12867K, paused 2ms+2ms
E/mono    (18358): WARNING: The runtime version supported by this application is unavailable.
E/mono    (18358): Using default runtime: v2.0.50727
D/OpenGLRenderer(  386): Flushing caches (mode 1)
D/dalvikvm(  119): GC_EXPLICIT freed <1K, 3% free 12553K/12867K, paused 1ms+1ms
I/mono    (18358): Stacktrace:
I/mono    (18358): 
D/OpenGLRenderer(  386): Flushing caches (mode 0)
D/Zygote  (  119): Process 18358 terminated by signal (11)
I/ActivityManager(  185): Process Test_App.Test_App (pid 18358) has died.
W/ActivityManager(  185): Force removing ActivityRecord{41a85018 Test_App.Test_App/test_app.Activity1}: app died, no saved state

誰かが彼のモノラルアプリで同じ振る舞いをしていますか?修正はありますか?

4

3 に答える 3

6

なんとか自分の質問を解決できました。プロジェクト設定で、[Mono for Android Build]タブに移動し、[リリース構成]を選択して、リンカーを[SDKアセンブリのみをリンク]ではなく[すべてのアセンブリをリンク]にする必要がありました。試行錯誤でこれを修正しましたが、何ができるでしょうか。

于 2012-10-26T08:55:36.517 に答える
2

私が見つけたもう1つの解決策は、アプリのビルド時に「共有ランタイム」の使用を無効にすることです。

Visual Studioでは、これはAndroidプロジェクト設定、Androidオプション>パッケージ化タブ>パッケージ化プロパティ>共有ランタイムの使用(チェックを外す)にあります

結果のAPKは少し大きくなりますが、ユーザーがアプリで「データのクリア」を実行して再起動すると、クラッシュすることなく実行できることを意味します。

于 2015-11-21T12:50:36.693 に答える
0

テストデバイスとして、LGG3Vigor上のXamarinFormsアプリでVisualStudio2015を使用します。すべてが何ヶ月もうまくいきました。パフォーマンスドキュメントのテストを行っていたので、[設定]->[一般]->[活気のあるアプリ]でアプリのキャッシュをクリアすることにしました。その後、アプリをデバイスにデプロイすると、Vigorによってランタイムエラーが発生しました。このアプリは、他のデバイス、エミュレーター、iOSシミュレーターで正常に動作します。

私はこの投稿にリストされている他の提案を試しました。結局、デバイスを工場出荷時の状態にリセットしました。開発者モードのロックを解除してコンピューターに再接続した後、アプリをコンパイルして再度実行しました。

工場出荷時のリセットを望まない場合は、USBデバッグ認証を取り消して再認証し、正常に機能するかどうかを確認することができると思います。これにより、VS2015とデバイスの間に異なる接続パスが作成され、キャッシュのリセットによって発生した問題がリセットされる可能性があります。他のすべてが失敗した場合、工場出荷時のリセットが私のためにそれを行いました。これが誰かに起こった場合に役立つことを願っています。

于 2017-06-10T03:15:34.230 に答える