1

我在 Google Play 开发者控制台上为我的应用收到了以下崩溃报告。似乎表明找不到我的本机库(libcld.so,在我的 APK 中为 ARM 风格和 x86 _is_present_),并且用户评论“nicht mehr startbar”(德语:不再启动)。堆栈跟踪如下。为什么会出现这种情况???使用该应用程序的数千台设备中的一台没有这样的麻烦?我能想到的唯一解释来自我的 Windows 软件经验:有时防病毒软件会出现“误报”,并在那里删除我的 exe 或其中一个被感染的 dll。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) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) at java.lang.Thread.run(Thread.java:1096) 原因:com.java.lang.ExceptionInInitializerError。 hyperionics.avar.SpeakService.setOriginalText(SourceFile:143) 在 com.hyperionics.avar.ContentsLoader.doInBackground(SourceFile:137) 在 com.hyperionics.avar.ContentsLoader.doInBackground(SourceFile:31) 在 android.os.AsyncTask$2。call(AsyncTask.java:185) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) ... 4 更多原因:java.lang.UnsatisfiedLinkError:在 java.lang 中找不到库 cld。 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 := android-8

本机构建立即触发了一个错误,我可以解决这个问题。好吧,这次冒险中最重要的一课,我必须一遍又一遍地学习和重新学习:在发布任何东西之前,在你声称支持的所有平台上进行测试......

非常感谢!再次感谢克里斯对我的回应并让我再次查看崩溃报告。

格雷格

于 2013-07-01T20:40:17.673 回答