這個問題是不是關於如何調試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中設置一個斷點,然後就可以進入這個方法。
但這裏的問題:
- 的node_modules,文件夾是不是在Android的工作室目前,不能調試這種方式。如何實現這一目標?
- 調試的onCreate-方法,並進一步向下進入的Java的棧,非常見於Ger.Offen它發生的「源碼不匹配的字節碼「。
調試器掛在源代碼註釋別的地方,但不正是線,被選爲執行。
的Android軟件開發工具包:
我已經安裝了所有的SDK和構建工具和NDK和其他一切,因爲23版:
TL; DR:
如何調試存在於node_modules中的本機庫 - 使用Android Studio的反應本機應用程序的文件夾,因爲它們在AS中不可見,因此不能傳遞斷點?
UPDATE
最後我找到了根本原因。對我而言,這並不奏效,因爲我想調試的庫在Android Studio中未顯示。但是這是我自己的一個錯誤,因爲圖書館設置不正確,爲什麼Gradle不能注意到它。
因此,這個問題可以像博客文章一樣使用它(如果第三方庫通過「rnpm-link」或「react-native link」開箱即可使用)這在我的例子中不是這種情況]
你是如何將RN項目導入到android studio的?像我一樣嗎? – itinance
我通常只是從Android Studio打開android文件夾而不是導入。但我想它是用於相同的目的。您是否嘗試過從android studio或gradle sync構建項目,通常會在build.gradle中發生更改時提示。不應該是'npm install react-native-sqlite-storage --save'而不是'react-native install react-native-sqlite-storage'? –
後一個(react-native install ...)是「新的」命令,包括「npm install --save」(或紗線安裝)和react-native鏈接,這是「rnpm鏈接」的現代形式。我也嘗試手動漸變同步,文件夾仍然沒有顯示,但存在於文件系統 – itinance