在Android 6.0的LG手机上,libicuuc.so中的应用程序在本机代码中崩溃
我的应用程序在libicuuc.so文件中崩溃它只出现在使用Android 6.0的LG手机上。 我搜索了一下,但没有发现任何类似的问题。 这是来自Google Play的堆栈跟踪:在Android 6.0的LG手机上,libicuuc.so中的应用程序在本机代码中崩溃,android,sqlite,android-6.0-marshmallow,native-code,lg,Android,Sqlite,Android 6.0 Marshmallow,Native Code,Lg,我的应用程序在libicuuc.so文件中崩溃它只出现在使用Android 6.0的LG手机上。 我搜索了一下,但没有发现任何类似的问题。 这是来自Google Play的堆栈跟踪: Build fingerprint: 'lge/p1bssn_global_com/p1bssn:6.0/MRA58K/1635010184e9f:user/release-keys' Revision: '6' ABI: 'arm' signal 11 (SIGSEGV), code 1 (SEGV_MAPERR
Build fingerprint: 'lge/p1bssn_global_com/p1bssn:6.0/MRA58K/1635010184e9f:user/release-keys'
Revision: '6'
ABI: 'arm'
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xba45f000
r0 00000000 r1 00000000 r2 0000133b r3 becaf54c
r4 0000133a r5 0000133a r6 becaf54c r7 becaf50c
r8 becaf80c r9 0000a972 sl ba45c98c fp 9b7444bc
ip b65d3bc0 sp becaf4d0 lr b650c821 pc b650c7d2 cpsr 00000030
backtrace:
#00 pc 000577d2 /system/lib/libicuuc.so
#01 pc 0005804d /system/lib/libicuuc.so
#02 pc 0005739f /system/lib/libicuuc.so
#03 pc 000a33d7 /system/lib/libicuuc.so (u_strToLower_55+130)
#04 pc 00046997 /system/lib/libsqlite.so
是什么导致了这个错误
是什么导致了这个错误
堆栈跟踪/回溯跟踪中的多汁位:
/system/lib/libicuuc.so
ABI: 'arm'
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xba45f000
#03 pc 000a33d7 /system/lib/libicuuc.so (u_strToLower_55+130)
国际Unicode组件(ICU)是一个开源项目
针对Unicode支持的成熟C/C++和Java库、软件
国际化和软件全球化。重症监护病房广泛使用
可移植到许多操作系统和环境。它给
在所有平台上以及C、C++之间应用相同的结果
Java软件。ICU项目由以下机构赞助、支持和使用:
IBM和许多其他公司
它在函数u\u strToLower
中崩溃(SIGSEGV,分段错误,试图读取或写入非法内存位置),因此在代码中搜索“ToLower”
方法(在java中),也许您可以隔离代码和问题。我们可以替换对我们可以控制的东西的调用,即字符串
到小写
函数。您还应该防弹
传递给此函数的字符串
(是否为null
?)
为什么它在本机库中崩溃,我在使用Java
所有以Java代码开始生命的代码都被转换为
一段本机编译代码。从技术上讲,classes.dex将
转换为ELF共享对象。Android称之为库格式
OAT和转换classes.dex文件的工具称为dex2oat。
看这个
在buildgradle
defaultConfig{ndk{abiFilters“armeabi-v7a”、“x86”、“armeabi”、“mips”、“arm64-v8a”//或abiFilters“armeabi-v7a”、“armeabi”、“x86”}中尝试这行代码似乎是一个内部Lib函数错误。它将为所有设备构建。我认为这不是问题。该应用程序已在所有设备上正常运行。如果这是一个问题,我想它应该给出一个不令人满意的链接错误。“ICU是一套成熟的、广泛使用的C/C++库,为软件应用程序提供Unicode和全球化支持。ICU具有广泛的可移植性,在所有平台上以及在C/C++和Java软件之间为应用程序提供相同的结果。”
它在函数u_strToLower
中崩溃了,所以在你的代码中搜索“ToLower”
方法(在java
中),也许你可以隔离代码和问题。@JonGoodwin我在sqlite上调用一个查询,如下所示:“lower(replace)(replace)(replace)(replace)(replace)(replace)(replace)(replace)(replace)(replace)(replace替换(替换(替换替换(替换(替换替换(替换替换(替换替换(替换替换替换(替换替换(替换替换(替换(替换内容,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“;@JonGoodwin,但它只在装有安卓6.0的Lg手机上崩溃。