如何使用 Android Studio 调试本机反应本机库?

iti*_*nce 7 java android android-studio react-native react-native-android

这个问题不是关于如何调试React-Native 应用程序的 javascript-land。它是关于如何在 node_modules-folder 中调试本机库(在这种情况下意味着:JAVA-Code)。

虽然我很容易用 XCode 调试 RN-Applications 的原生 iOS 部分,但我偶然发现了 Android Studio 的各种问题......主要是,将项目导入 Studio 后 node_modules-Folder 不存在,为什么不能设置断点来调试通过。

版本:

  • Android Studio 2.2.2(当前最新版本)
  • react-native 0.38.0(也是最新版本)
  • gradle 1.3.1(从 react-native init 预配置)
  • 还尝试升级到 gradle 2.2.2
  • 安装了包括 NDK 在内的最高版本 23 的 Android SDK 和构建工具

我是如何做到的/重现的步骤

1. 创建新的 React Native 项目:

react-native init debugTest
Run Code Online (Sandbox Code Playgroud)

2. 使用您想要本地调试的本地代码安装第三方库

cd debugTest && 
react-native install react-native-sqlite-storage
Run Code Online (Sandbox Code Playgroud)

3.确保一切都能在android端正常工作:

  • 启动 GenyMotion

  • 启动 AVD

  • 在终端中使用此命令运行应用程序:

    react-native run-android

(这将打开打包程序以及传输 js-bundle 所需的所有其他内容)。如果想省略这一步,需要手动启动打包程序:

node node_modules/react-native/local-cli/cli.js start
Run Code Online (Sandbox Code Playgroud)

4.启动Android Studio

  • 在即将出现的启动对话框中,选择“导入项目”
  • 选择您项目的目录“android”并单击“导入”(这些步骤取自官方 RN 文档):

如果您想使用 Android Studio 处理本机代码,请从 Android Studio 的欢迎屏幕中选择“导入项目”并选择您的应用程序的 android 文件夹。

5. Android Studio 要求将 gradle 版本从预配置的 1.3.2更新到 2.2.2。我首先在整个工作流程中拒绝了它,后来我尝试了它(两者对我来说都没有太大区别)

6.由于此问题,必须停用Instant Run

7.点击Android Studio工具栏中的“运行”或“调试”

到目前为止一切正常。我能够在 MainApplication.java::onCreate 中设置一个断点,然后可以进入这个方法。

但这里有一些问题:

  1. node_modules -文件夹不存在Android Studio中,不能调试这种方式。如何做到这一点?

在此处输入图片说明

  1. 调试 onCreate-Method 并进一步深入到 Java-Stack 中,非常令人讨厌的是“源代码与字节码不匹配”

在此处输入图片说明

调试器挂在源代码注释中的其他地方,但不是在选择执行的那一行。

安卓 SDK:

自版本 23 以来,我已经安装了所有 SDK 和构建工具以及 NDK 和其他所有内容:

在此处输入图片说明 在此处输入图片说明

特尔;博士:

如何使用 Android Studio 调试本机应用程序的 node_modules-Folder 中存在的本机库,因为它们在 AS 中不可见,因此无法传递断点?

更新

最后我找到了根本原因。对我来说,它不起作用,因为我想调试的库没有显示在 Android Studio 中。但这是我自己的错误,因为库没有正确设置,为什么 gradle 无法注意到它。

所以,这个问题可以像博客文章一样使用如何正确地做(如果第 3 方库使用“rnpm-link”或“react-native link”开箱即用就足够了)[这不是在我的例子中的情况]

age*_*unt 3

你做了rnpm linkreact-native link?完成此操作后,除了应用程序模块之外还会有其他模块,如下所示。在此输入图像描述

您可以查看本机模块中的所有 java 代码并放置断点、调试等。