0

這個問題是不是關於如何調試React-Native應用程序的javascript-land。它是關於如何在node_modules文件夾中調試本機庫(在本例中是指:JAVA代碼)。如何使用Android Studio調試原生反應原生庫?

儘管使用XCode對RN應用程序的本機iOS部分進行調試非常容易,但我偶然發現了Android Studio的各種問題...... 最主要的是,node_modules-Folder不存在後將項目導入到Studio中,爲什麼無法設置斷點來進行調試。

版本:

  • 的Android 2.2.2工作室(最新版本目前)
  • 反應本土0.38.0(最新版本還)
  • gradle這個1.3.1(從反應本地預配置INIT)
  • 也升級試圖搖籃2.2.2
  • 的Android SDK和-build工具多達23版本包括裝NDK

我怎麼做的/重現步驟

1.創建新的本地反應項目:

react-native init debugTest 

2.安裝與要本地調試

本機代碼的第三方庫
cd debugTest && 
react-native install react-native-sqlite-storage 

3.確保所有東西都能在android端工作:

  • 發射GenyMotion
  • 發射的AVD
  • 運行在終端用這個命令應用:

    反應天然運行機器人

(這將打開包裝者和其他一切事物帽子需要轉移js束)。 如果想省略此步驟中,有必要手動啓動打包器:

node node_modules/react-native/local-cli/cli.js start 

4。推出Android工作室

  • 與即將啓動的對話框中,選擇「導入項目」
  • 選擇的目錄項目的「機器人」,然後單擊「導入」 (從official RN-documentation採取這些步驟):

如果你想使用Android Studio來對本地代碼工作,從Android Studio中的 歡迎屏幕中選擇「導入項目」,並選擇 您的應用程序的Android文件夾。

5. Android Studio要求將gradle版本從預配置的1.3.2更新到2.2.2。我已經首先否認它的整個工作流程,後來我嘗試過了(既沒有爲我顯著不同)

6.一個必須停用即時運行由於this issue

7點擊「運行」或「調試」在Android Studio的工具欄

到目前爲止一切正常。我可以在MainApplication.java::onCreate中設置一個斷點,然後就可以進入這個方法。

但這裏的問題:

  1. node_modules,文件夾是不是在Android的工作室目前,不能調試這種方式。如何實現這一目標?

enter image description here

  • 調試的onCreate-方法,並進一步向下進入的Java的棧,非常見於Ger.Offen它發生的「源碼不匹配的字節碼「
  • enter image description here

    調試器掛在源代碼註釋別的地方,但不正是線,被選爲執行。

    的Android軟件開發工具包:

    我已經安裝了所有的SDK和構建工具和NDK和其他一切,因爲23版:

    enter image description here enter image description here

    TL; DR:

    如何調試存在於node_modules中的本機庫 - 使用Android Studio的反應本機應用程序的文件夾,因爲它們在AS中不可見,因此不能傳遞斷點?

    UPDATE

    最後我找到了根本原因。對我而言,這並不奏效,因爲我想調試的庫在Android Studio中未顯示。但是這是我自己的一個錯誤,因爲圖書館設置不正確,爲什麼Gradle不能注意到它。

    因此,這個問題可以像博客文章一樣使用它(如果第三方庫通過「rnpm-link」或「react-native link」開箱即可使用)這在我的例子中不是這種情況]

    回答

    2

    你做了rnpm linkreact-native link?一旦你這樣做了,應用模塊就會有更多的模塊,就像這樣。 enter image description here

    你可以看一下本機模塊中的所有Java代碼,並把breakdpoints,調試等

    +0

    你是如何將RN項目導入到android studio的?像我一樣嗎? – itinance

    +0

    我通常只是從Android Studio打開android文件夾而不是導入。但我想它是用於相同的目的。您是否嘗試過從android studio或gradle sync構建項目,通常會在build.gradle中發生更改時提示。不應該是'npm install react-native-sqlite-storage --save'而不是'react-native install react-native-sqlite-storage'? –

    +0

    後一個(react-native install ...)是「新的」命令,包括「npm install --save」(或紗線安裝)和react-native鏈接,這是「rnpm鏈接」的現代形式。我也嘗試手動漸變同步,文件夾仍然沒有顯示,但存在於文件系統 – itinance

    0

    巴姆....我現在可以親自回答我的第一個的兩個問題。 Thx to @agent_hunt,讓我走向正確的方向......

    在這個示例應用程序中,綁定設置不正確。 「rnpm鏈接」和更新的「react-native link」是「react-native install」的一部分,在這裏對於android部分沒有正確工作,因爲它沒有在第三方庫中實現現在,我已經用這個例子。

    這就是爲什麼gradle沒有注意到圖書館。正確設置後,文件夾react-native-sqlite-storage出現在Android Studio中,我能夠傳遞一個斷點並停止執行。儘管如此,調試這個庫可以正常工作,但是當我不想進入Android SDK的更低/更深的方法時,它仍然有問題指向正確的代碼行(「Sourcecode不匹配字節碼「)