首页 > 解决方案 > 如何使用本机(C++)符号在调试模式下构建 Android React Native 源代码?

问题描述

我想构建带有调试本机代码(Java 和 C++)的选项的 React-Native 代码,到目前为止我所做的:

  1. 克隆 react-native 源代码
  2. 添加NDK_DEBUG=1buildReactNdkLibgradle 任务 -代码
  3. 我不得不将一些文件添加到愚蠢项目的 make 文件中 -代码
  4. 我添加了命令不要在其中一个 makefile 中添加 .so 文件 -代码- 实际上我确信NDK_DEBUG=1默认情况下会这样做,但事实并非如此

结果是构建正在通过并且so文件确实没有被剥离,但是应用程序在运行时崩溃了

2019-04-06 11:24:31.058 24906-24906/? A/DEBUG: pid: 24850, tid: 24890, name: mqt_js  >>> com.facebook.react.uiapp <<<
2019-04-06 11:24:31.058 24906-24906/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
2019-04-06 11:24:31.059 24906-24906/? A/DEBUG: Abort message: 'java_vm_ext.cc:504] JNI DETECTED ERROR IN APPLICATION: JNI GetObjectRefType called with pending exception com.facebook.react.uimanager.IllegalViewOperationException: No ViewManager defined for class Text'
2019-04-06 11:24:31.059 24906-24906/? A/DEBUG:     eax 00000000  ebx 00006112  ecx 0000613a  edx 00000006
2019-04-06 11:24:31.059 24906-24906/? A/DEBUG:     esi 0000613a  edi 878553d8
2019-04-06 11:24:31.059 24906-24906/? A/DEBUG:     xcs 00000073  xds 0000007b  xes 0000007b  xfs 0000003b  xss 0000007b
2019-04-06 11:24:31.059 24906-24906/? A/DEBUG:     eip ad1d7ac4  ebp 878553f8  esp 8785538c  flags 00000296
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG: backtrace:
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG:     #00 pc 00000ac4  [vdso:ad1d7000] (__kernel_vsyscall+16)
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG:     #01 pc 00075b3c  /system/lib/libc.so (tgkill+28)
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG:     #02 pc 0001f04e  /system/lib/libc.so (abort+110)
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG:     #03 pc 0053bcbd  /system/lib/libart.so (_ZN3art7Runtime5AbortEPKc+669)
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG:     #04 pc 0053c599  /system/lib/libart.so (_ZN3art7Runtime7AborterEPKc+41)
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG:     #05 pc 0011c3d3  /system/lib/libart.so (_ZNSt3__110__function6__funcIPFvPKcENS_9allocatorIS5_EES4_EclEOS3_+35)
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG:     #06 pc 0065168a  /system/lib/libart.so (_ZN7android4base10LogMessageD1Ev+1034)
2019-04-06 11:24:31.070 24906-24906/? A/DEBUG:     #07 pc 00386952  /system/lib/libart.so (_ZN3art9JavaVMExt8JniAbortEPKcS2_+2146)
2019-04-06 11:24:31.071 24906-24906/? A/DEBUG:     #08 pc 00386bd1  /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_Pc+113)
2019-04-06 11:24:31.071 24906-24906/? A/DEBUG:     #09 pc 0014ec45  /system/lib/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+69)
2019-04-06 11:24:31.072 24906-24906/? A/DEBUG:     #10 pc 0014e710  /system/lib/libart.so (_ZN3art11ScopedCheck11CheckThreadEP7_JNIEnv+544)
2019-04-06 11:24:31.072 24906-24906/? A/DEBUG:     #11 pc 0014d311  /system/lib/libart.so (_ZN3art11ScopedCheck22CheckPossibleHeapValueERNS_18ScopedObjectAccessEcNS_12JniValueTypeE+161)
2019-04-06 11:24:31.072 24906-24906/? A/DEBUG:     #12 pc 0014c8b3  /system/lib/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE+1155)
2019-04-06 11:24:31.072 24906-24906/? A/DEBUG:     #13 pc 0014bf36  /system/lib/libart.so (_ZN3art8CheckJNI16GetObjectRefTypeEP7_JNIEnvP8_jobject+998)
2019-04-06 11:24:31.072 24906-24906/? A/DEBUG:     #14 pc 000e2fce  /data/app/com.facebook.react.uiapp-uUhqD6BXzpF-7FnHQHBjIA==/lib/x86/libreactnativejni.so (_ZN7_JNIEnv16GetObjectRefTypeEP8_jobject+62)

标签: react-nativeandroid-ndkreact-native-androidndk-build

解决方案


刚刚找到答案,我不需要set NDK_DEBUG=1,所有未剥离的文件放在build/tmp/buildReactNdkLib/local//下

您只需要在 Android-Studio 中配置符号目录: 在此处输入图像描述


推荐阅读