我在Google Play开发者控制台上为我的应用获得了以下崩溃报告。它似乎暗示我的本机库(libcld.so,我的APK中的_is_present_用于ARM风格和x86)无法找到,用户评论“nicht mehr startbar”(德语:不再启动)。堆栈跟踪如下。为什么会这样?在没有这样的麻烦的情况下使用该应用程序的数千台设备之一发生了意外事故我能想到的唯一解释来自我的Windows软件体验:有时反病毒软件会出现“误报”并删除我的exe或其中一个dll被感染。 AV供应商通常会在24小时内修复“误报”,尽管它们会破坏业务。
这也会在Android上发生吗?这将是我的第一次。什么可能是找不到应用程序中包含的本机库的另一个原因?
Google Play上报告的堆栈跟踪:
java.lang.RuntimeException:执行时发生错误 doInBackground()
在android.os.AsyncTask $ 3.done(AsyncTask.java:200)at java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:273) at java.util.concurrent.FutureTask.setException(FutureTask.java:124) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:307) 在java.util.concurrent.FutureTask.run(FutureTask.java:137)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:561) 在java.lang.Thread.run(Thread.java:1096)引起: java.lang.ExceptionInInitializerError at com.hyperionics.avar.SpeakService.setOriginalText(SourceFile:143)at com.hyperionics.avar.ContentsLoader.doInBackground(SourceFile:137)at at com.hyperionics.avar.ContentsLoader.doInBackground(SourceFile:31)at at android.os.AsyncTask $ 2.call(AsyncTask.java:185)at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:305)... 4更多引起:java.lang.UnsatisfiedLinkError:库cld没有 在java.lang.Runtime.loadLibrary(Runtime.java:461)的java.lang.System.loadLibrary(System.java:557)中找到 com.hyperionics.avar.CldWrapper。(SourceFile:21)... 9 more
格雷格
答案 0 :(得分:1)
我想出了问题是什么,受到Chris上面留下的评论的启发。我注意到,报告的错误发生在旧设备上,可以升级到Android 2.2,而不是更高。
在我的应用程序的最新版本中,我在我的本机库中进行了一些小修改,并在其中使用了asset_manager。我没有意识到本机代码是为android-14平台编译的(因为我的AndroidManifest.xml将其声明为targetSdkVersion),而我支持的最低平台是android-8(Android 2.2,Froyo)。原来在旧平台下没有asset_manager。在我向Application.mk添加以下行之后:
APP_PLATFORM:= android-8
本机构建立即触发错误,我可以解决问题。好吧,这次冒险中最重要的一课,我必须一遍又一遍地学习和重新学习:在发布任何东西之前,测试所有你声称支持的平台......
一个大的谢谢你!再次向Chris回复我并让我再次看一下崩溃报告。
格雷格