一般使用RN開發(fā)的童鞋,估計很大一部分的代碼或者全部代碼都是在Android和iOS上公用的沫屡,因此在開發(fā)和調(diào)試的時候可能同時會需要Android和iOS兩個開發(fā)環(huán)境饵隙。但是,但是沮脖,但是這里我只說iOS的,因為我對Android的了解程度有限??!
當(dāng)然了速和,這里我并不是不想說Android這塊枣购,因為RN的代碼對于兩個的平臺的兼容性還是相當(dāng)高的,只是在屏幕適配和一些自由的控件展示上稍有區(qū)別免姿,這個的話在寫RN代碼的時候稍加判斷饼酿,單獨處理即可。另外我需要說的一點就是:只寫reactnative代碼养泡,是不能滿足移動應(yīng)用開發(fā)的嗜湃,因為也有一些東西需要native(原生)的開發(fā)經(jīng)驗來完成。比如如何通過xCode調(diào)試澜掩、配置一些第三方插件购披、封裝一些native模塊等,Android同樣也是肩榕,所以說在學(xué)習(xí)RN之前刚陡,還是需要移動端開發(fā)經(jīng)驗的。好了株汉,廢話不多說了筐乳,我們進(jìn)入正題。
==============分==========割===============線=============
模擬器運行
在前面搭建RN開發(fā)環(huán)境的時候乔妈,我已經(jīng)說過如何創(chuàng)建一個RN項目了蝙云。在創(chuàng)建好的項目根目錄就分別會有一個Android和iOS文件目錄,我們需要做的就是打開iOS目錄路召,并且打開里面的xCode工程(使用xCode??)勃刨。打開之后波材,可以試著用模擬器運行一下,操作方法完全和原生操作一樣身隐。
這里可能會遇到如下的錯誤:
這種情況修改一下AppDelegate.m中的方法廷区,如下圖:
注釋掉第一行的代碼,換成第二行的贾铝,IP地址是本機(jī)的IP地址
這里需要說明一下隙轻、出現(xiàn)這個錯誤是因為你的工程中少一個文件main.jsbundle
這個文件在打包的時候是必不可少的,我們上面這種修改方法垢揩,是在debug模式下運行的玖绿,這樣的話便于調(diào)試。
在debug模式下水孩,我們可以通過模擬器的模擬搖一搖調(diào)出調(diào)試菜單镰矿,如下圖:
其中Reload是點擊刷新,Debug JS Remotely 是在網(wǎng)頁中打開JS調(diào)試(這里可以打印俘种,也可進(jìn)行單步調(diào)試打斷點)秤标,Enable Hot Reloading 打開這個選項之后,每次編輯完頁面布局的時候宙刘,進(jìn)行保存操作之后苍姜,界面就會自動刷新,這樣的話悬包,就省去了不少原生應(yīng)用不停手動開關(guān)編譯的時間衙猪。
真機(jī)運行
以上都是在模擬器上操作,那么在真機(jī)上呢布近?
使用iPhone真機(jī)運行的話垫释,一個最基本的條件就是遵循蘋果公司的開發(fā)者協(xié)議,這個不多說撑瞧,在這些條件滿足的基礎(chǔ)上棵譬,你只需要滿足一個條件即可,那就是保證手機(jī)和你的電腦在同一個局域網(wǎng)下预伺,這樣才能根據(jù)之前Appdelegate.m文件中的IP地址獲取到相應(yīng)的js代碼订咸。
在真機(jī)上運行起來之后,所有的調(diào)試操作都和模擬器是相同的酬诀,唯一不同的是脏嚷,模擬器調(diào)出調(diào)試菜單需要點擊或者使用快捷鍵,而手機(jī)你就可勁兒晃動就行了瞒御。(一不小心說多了??)
打包發(fā)布
打包當(dāng)然還是需要使用xCode來完成的父叙,那么在這之前需要幾個操作必須完成
1、生成main.jsbundle文件,就是上面說到的標(biāo)紅的文件高每,這個可以直接使用如下命令屿岂,在終端中執(zhí)行即可:
運行命令打包react-native bundle --platform平臺--entry-file啟動文件--bundle-output打包js輸出文件--assets-dest資源輸出目錄--dev是否調(diào)試
eg: react-native bundle --platform ios --entry-file=./index.ios.js --bundle-output ./ios/main.jsbundle--assets-dest ./ios/bundle --dev false
這段命令執(zhí)行成功之后,再去xCode工程中查看鲸匿,之前標(biāo)紅的文件已經(jīng)不再標(biāo)紅了,說明已經(jīng)創(chuàng)建成功了阻肩。
2带欢、確定Scheme中build選項是Release模式,如下圖:
以上兩部操作執(zhí)行結(jié)束之后烤惊,你就可以根據(jù)iOS的打包經(jīng)驗開開心的打包發(fā)布了乔煞!