2

Xamarin Android アプリを運用していますが、Google Play 開発者コンソールのレポートに次のようなクラッシュが多数見られます。

java.lang.UnsatisfiedLinkError: Native method not found:
mono.android.Runtime.register:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)V
at mono.android.Runtime.register(Native Method)
at speedcamapp.SpeedcamApplication.onCreate(SpeedcamApplication.java:18)
at
android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1008)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4506)
at android.app.ActivityThread.access$1500(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5196)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)

これは Xamarin のバグのように思われるので、彼らに尋ねたところ、問題は次の行にあると言われました。

at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1008)

アプリがインストルメンテーションで開始されるのは正常ではなく、誰かが私のアプリを「いじくり回している」ことを意味します。

しかし、私はこれらのエラーの多くをさまざまなデバイスから見ることができ、一部のユーザーはクラッシュ レポートに「動作を停止しました」というメッセージを残しました...

「android.app.Instrumentation.callApplicationOnCreate」をグーグルで試してみたところ、ログにこの行を含む多くのアプリログが見つかりました。

だから私の質問は、「android.app.Instrumentation.callApplicationOnCreate」は本当に意味するのですか? これはいつ一般ユーザーに発生する可能性がありますか?

4

1 に答える 1

3

実はこれはApplication.onCreate()メソッドの通常のスタックトレースです。Applicationインスツルメンテーションは、ライフサイクル メソッドのまたはActivityが呼び出されるたびに使用されます。

このスタック トレースを見てください。通常の (Xamarin ではない) アプリケーションで作成しました。もちろん、インストルメンテーションについては何も言及せずに起動しました。

java.lang.UnsatisfiedLinkError
    at com.example.asdf.MyApplication.onCreate(MyApplication.java:11)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1011)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4518)
    at android.app.ActivityThread.access$1500(ActivityThread.java:144)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1339)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

が呼び出されるたびにインストルメンテーションが関与することは明らかですonCreate()。しかし、それが本当に毎回かどうかを確認することはできます。ソースコードにあります。ご覧のとおりonCreate()、いくつかの場所から呼び出されます。

  1. android.app.Instrumentation.callApplicationOnCreate()
  2. android.app.ActivityThread.attach(boolean)
  3. android.test.ApplicationTestCase.createApplication()

(他の通話はsuper.onCreate()私たちのケースではありません)

ApplicationTestCase明らかに私たちの場合ではありません。ActivityThread.attach()似たようなものです。ただしApplication.onCreate()、システム アプリケーションのみが必要です。上記のソースコードを見ればわかります。残りはInstrumentation.callApplicationOnCreate()です。

通常のスタック トレースがあり、特別なことは何もないと言えますInstrumentation.callApplicationOnCreate()。したがって、あなたの問題UnsatisfiedLinkErrorは別の場所にあります。残念ながら、私は Xamarin を使用していないため、サポートすることはできません

于 2015-03-19T10:53:16.907 に答える