这个问题关于如何调试React-Native应用的javascript-land 。它是关于如何在node_modules文件夹中调试本机库(在这种情况下意味着:JAVA-Code)。
虽然我很容易使用XCode调试RN-Applications的原生iOS部分,但我偶然发现了Android Studio的各种问题...... 主要的是,在将项目导入Studio后,node_modules-Folder不存在,为什么不能设置断点来进行调试。
1。创建新的反应原生项目:
react-native init debugTest
2。使用您要本机调试的本机代码安装第三方库
cd debugTest &&
react-native install react-native-sqlite-storage
第3。确保一切都能在android端运行:
在终端中使用此命令运行应用程序:
react-native run-android
(这将打开打包器以及传输js-bundle所需的所有其他内容)。 如果想省略此步骤,则需要手动启动打包程序:
node node_modules/react-native/local-cli/cli.js start
4。启动Android Studio
如果您想使用Android Studio处理本机代码,请使用 Android Studio的欢迎屏幕选择"导入项目"并选择 你的应用程序的android文件夹。
5。 Android Studio要求将gradle版本从预先配置的1.3.2更新为2.2.2。我首先在整个工作流程中拒绝了它,后来我试了一下(两者对我没有太大差别)
6。由于this issue
,必须停用即时运行7。点击"运行"或者"在Android Studio的工具栏中调试"
到目前为止一切正常。我能够在MainApplication.java::onCreate中设置一个断点,然后可以进入这个方法。
调试器挂在源代码注释中的其他位置,但没有挂在那条被选中执行的行上。
我已经安装了所有SDK,构建工具和NDK以及版本23之后的所有其他内容:
如何调试node_modules中存在的本机库 - 使用Android Studio的react本机应用程序的文件夹,因为它们在AS中不可见,因此无法传递断点?
最后,我找到了根本原因。对我而言,由于我想调试的库在Android Studio中没有显示,因此它无法正常工作。但这本身就是一个错误,因为图书馆没有正确设置,为什么gradle没有注意到它。
所以,这个问题可以像博客文章一样正确地使用(如果第三方图书馆开箱即用,并且#34; rnpm-link"或者#34;本地链接反应")[在我的例子中并非如此]
答案 0 :(得分:2)
您完成了rnpm link
还是react-native link
?一旦你这样做,将会有额外的模块和app模块,就像这样。
您可以查看本机模块中的所有Java代码,并输入breakdpoints,debug等。
答案 1 :(得分:0)
在此示例应用程序中,绑定未正确设置。 " rnpm link"和更新的" react-native链接",它是" react-native install"的一部分,在这里没有为android-part正确工作,因为它没有实现现在在第三方库中,我已经用过这个例子。
这就是为什么gradle没有注意到图书馆的原因。正确设置后,文件夹react-native-sqlite-storage出现在Android Studio中,我能够传递一个断点并停止执行。
然而,调试这个库工作正常,但是当我不想进入更低/更深层次的" Android SDK的方法,它仍有问题指向正确的代码行("源代码与字节代码不匹配")