我有一个使用NDK的Android应用程序。在我的C++代码中,我调用了std::use_facet()。不过,我的应用程序本身运行良好,但是当我添加ACRCloud SDK时,我在启动应用程序时就会崩溃:
Build fingerprint: 'google/taimen/taimen:9/PPR2.180905.005/4928864:user/release-keys'
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: Revision: 'rev_10'
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: ABI: 'arm'
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: pid: 2915, tid: 2915, name: .app >>> com.mycompany.android.app <<<
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: Cause: null pointer dereference
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: r0 00000000 r1 00000043 r2 d5b21700 r3 00000000
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: r4 ffd1a974 r5 ebd856ac r6 ebd856ac r7 d551c3a4
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: r8 d3acfae8 r9 f45842c0 r10 00000143 r11 ffd1a9b4
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: ip 00000000 sp ffd1a948 lr d473ae40 pc d473ae54
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: backtrace:
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: #00 pc 03e2fe54 /data/app/com.mycompany.android.app-APqEWGjyWJxWwxYs8NNiHA==/lib/arm/libMyApp.so (std::ctype<char> const& std::use_facet<std::ctype<char>>(std::locale const&)+40)
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: #01 pc 023ee45c /data/app/com.mycompany.android.app-APqEWGjyWJxWwxYs8NNiHA==/lib/arm/libMyApp.so (_ZNSt8__detail9_CompilerISt12regex_traitsIcEEC1EPKcS5_RKS2_NSt15regex_constants18syntax_option_typeE+232)
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: #02 pc 023eb19c /data/app/com.mycompany.android.app-APqEWGjyWJxWwxYs8NNiHA==/lib/arm/libMyApp.so (_ZNSt8__detail13__compile_nfaISt12regex_traitsIcEEESt10shared_ptrINS_4_NFAIT_EEEPKNS5_9char_typeESA_RKS5_NSt15regex_constants18syntax_option_typeE+80)
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: #03 pc 023e8d28 /data/app/com.mycompany.android.app-APqEWGjyWJxWwxYs8NNiHA==/lib/arm/libMyApp.so (_ZNSt11basic_regexIcSt12regex_traitsIcEEC2IPKcEET_S6_NSt15regex_constants18syntax_option_typeE+240)崩溃出现在我的本机库中,但我相信是由于ACRCloud库的存在造成了这种情况。
注意,在崩溃的时候,还没有正在运行的代码来实例化任何ACRCloud SDK。
我的直觉是,ACRCloud也在某个地方使用相同的方法调用,std::use_facet(),在编译过程中,来自ACRCloud的符号被引入,而不是我的,这在某种程度上导致了冲突。
也许ACRCloud的某个人可以插话。
发布于 2018-10-19 23:40:31
因此,我的构建设置是错误的。我正在使用Bazel构建一切,我使用的是ACRCloud库,使用的是cc_library规则,而不是它应该是什么:文件组。
我认为当我使用cc_library规则时,编译过程中有些东西被修改了,这导致了我的错误;然而,如果我通过文件组导入它,工件就会被带入,而不会以任何方式被碰触。
发布于 2018-10-19 02:24:10
此崩溃是由“/lib/arm/libMyApp.so”造成的。可能是你自己的图书馆。ACRCloud SDK不包含此库。
https://stackoverflow.com/questions/52865359
复制相似问题