При включении ACRCloud Native Lib происходит сбой моей собственной Native Lib

У меня есть приложение для Android, которое использует NDK. В моем коде 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 сможет вмешаться.


person Przemek Lach    schedule 18.10.2018    source источник


Ответы (2)


Этот сбой вызван «/lib/arm/libMyApp.so». Это может быть ваша собственная библиотека. ACRCloud SDK не содержит эту библиотеку.

person Tony Li    schedule 19.10.2018

Итак, моя настройка сборки была неправильной. Я использую Bazel для создания всего, и я ссылался на библиотеку ACRCloud, используя правило cc_library, а не то, что должно было быть: файловая группа.

Я думаю, что когда я использовал правило cc_library, что-то модифицировалось во время компиляции, и это привело к моей ошибке; тогда как, если я импортирую его через файловую группу, артефакт будет просто перенесен без какого-либо прикосновения.

person Przemek Lach    schedule 19.10.2018