1

アプリの Google Play 開発者コンソールで次のクラッシュ レポートを取得しました。私のネイティブ ライブラリ (libcld.so、ARM フレーバーと x86 の両方の APK で _is_present_) が見つからなかったことを示唆しているようで、ユーザーは "nicht mehr startbar" (ドイツ語: もう起動しません) とコメントしています。スタックトレースは以下です。なぜこれが起こるべきですか?そのような問題なくアプリを使用している何千ものデバイスの 1 つで異常な事故が発生しましたか? 私が考えることができる唯一の説明は、私の Windows ソフトウェアの経験によるものです。ウイルス対策ソフトウェアに「誤検知」があり、exe または dll の 1 つが感染したとして削除されることがあります。AV ベンダーは通常、ビジネスに損害を与えますが、「誤検知」を 24 時間以内に修正します。

これはAndroidでも起こりますか?私にとっては初めてでしょう。アプリに含まれているネイティブ ライブラリが見つからない別の理由は何ですか?

Google Play で報告されたスタック トレース:

java.lang.RuntimeException: doInBackground() の実行中にエラーが発生しました

android.os.AsyncTask$3.done(AsyncTask.java:200) で java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) で java.util.concurrent.FutureTask.setException(FutureTask.java: 124) java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) で java.util.concurrent.FutureTask.run(FutureTask.java:137) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor) .java:1068) での java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) での java.lang.Thread.run(Thread.java:1096) 原因: com での java.lang.ExceptionInInitializerError。 hyperionics.avar.SpeakService.setOriginalText(SourceFile:143) at com.hyperionics.avar.ContentsLoader.doInBackground(SourceFile:137) at com.hyperionics.avar.ContentsLoader.doInBackground(SourceFile:31) at android.os.AsyncTask$2.call(AsyncTask.java:185) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) ... さらに 4 原因: java.lang.UnsatisfiedLinkError: Library cld not found at java.lang. Runtime.loadLibrary(Runtime.java:461) at java.lang.System.loadLibrary(System.java:557) at com.hyperionics.avar.CldWrapper.(SourceFile:21) ... 9 もっと見る

グレッグ

4

1 に答える 1

1

上記のクリスが残したコメントに触発されて、何が問題なのかを突き止めました。そのとき、報告されたエラーが古いデバイス上にあることに気付きました。これは、最大で Android 2.2 にアップグレードできますが、それ以上にはアップグレードできません。

アプリの最新リリースでは、ネイティブ ライブラリに小さな変更を加え、asset_manager を使用しました。ネイティブ コードが android-14 プラットフォーム用にコンパイルされていることに気付きませんでした (私の AndroidManifest.xml がこれを targetSdkVersion として宣言しているため)。一方、サポートされている最小プラットフォームは android-8 (Android 2.2、Froyo) です。古いプラットフォームには asset_manager がないことが判明しました。Application.mk に次の行を追加した後:

APP_PLATFORM := アンドロイド-8

ネイティブ ビルドですぐにエラーが発生し、問題を修正できました。さて、この冒険から学んだ最も重要な教訓は、私が何度も何度も学び直さなければならないことです: 何かをリリースする前に、サポートしていると主張するすべてのプラットフォームでテストしてください...

ありがとうございます!私に返信してクラッシュレポートをもう一度見させてくれたクリスにもう一度感謝します。

グレッグ

于 2013-07-01T20:40:17.673 に答える