React Native 常用命令

最近在寫React Native的項目 在這里記錄一下,推薦reactnative中文網。要養成良好的習慣,上圖??

u=3193006289,3802606706&fm=23&gp=0.jpg

從頭開始

寫項目肯定要舒適化項目對吧
react-native init MyReactNativeProject

提示:你可以使用--version參數創建指定版本的項目。
例如 react-native init MyReactNativeProject --version 0.39.2。注意版本號必須精確到兩個小數點。

在模擬器上運行

當你完成了初始化React Native新項目后,就可以在項目目錄下運行react-native run-ios來啟動模擬器。如果一切配置都沒有問題,應該很快就能看到你的應用在iOS模擬器上運行起來。

指定模擬的設備類型

你可以使用--simulator
參數,在其后加上要使用的設備名稱來指定要模擬的設備類型(目前默認為"iPhone 6")。如果你要模擬iPhone 4s,那么這樣運行命令即可:
react-native run-ios --simulator "iPhone 4s"。
你可以在終端中運行
xcrun simctl list devices
來查看具體可用的設備名稱。

在設備上運行

你可以在真機上訪問開發服務器以快速測試和迭代。首先需要確保設備已使用usb連接至電腦,同時和電腦處在同一wifi網絡內,然后在Xcode中選擇你的設備作為編譯目標(左上角運行按鈕的右邊),然后點擊運行按鈕即可。如果你需要在真機上啟用調試功能,則需要打開RCTWebSocketExecutor.m文件,然后將其中的"localhost"改為你的電腦的IP地址,最后啟用開發者菜單中的"Debug JS Remotely"選項。

項目的時候我們肯定會用到別人造好的輪子對吧就是所謂的三方庫How to use?
 npm install 庫的名稱 —save

// 生產環境需要的庫 會在package.json文件中的dependencies中記錄來鏈接庫

 npm install 庫的名稱 --save-dev 

// 開發環境下的庫 會在package.json文件中的devDependencies中記錄來鏈接庫

react-native link 

// 完成了!現在所有的原生依賴都成功地鏈接到你的iOS/Android項目了。

提示:有寫三方庫是不需要link的 有寫三方庫link不成功,需要自己手動添加。
項目寫完了是不是要打包?

開發React Native的過程成,js代碼和圖片資源運行在一個Debug Server上,每次更新代碼之后只需要使用command+R鍵刷新就可以看到代碼的更改,這種方式對于調試來說是非常方便的。
但當我們需要發布App到App Store的時候就需要打包,使用離線的js代碼和圖片。這就需要把JavaScript和圖片等資源打包成離線資源,在添加到Xcode中,然后一起發布到App Strore中。
打包離線資源需要使用命令
react-native bundle

React Native的react-native bundle
命令是用來進行打包的命令,
react-native bundle
的詳細命令選項https://github.com/facebook/react-native/blob/master/local-cli/bundle/bundleCommandLineArgs.js。
其中我們常使用的一線命令選項:
--entry-file ,ios或者android入口的js名稱,比如index.ios.js
--platform ,平臺名稱(ios或者android)
--dev ,設置為false的時候將會對JavaScript代碼進行優化處理。
--bundle-output, 生成的jsbundle文件的名稱,比如./ios/bundle/index.ios.jsbundle
--assets-dest 圖片以及其他資源存放的目錄,比如./ios/bundle

打包命令如下:

  react-native bundle --entry-file index.ios.js --platform ios -- dev false --bundle-output ./ios/bundle/index.ios.jsbundle --assets-dest ./ios/bundle

打包的時候注意先在ios文件夾下創建一個build文件夾

為了方便使用,也可以把打包命令寫到npm script中:

    "scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"bundle-ios":"node node_modules/react-native/local-cli/cli.js bundle --entry-file index.ios.js  --platform ios --dev false --bundle-output ./ios/bundle/index.ios.jsbundle --assets-dest ./ios/bundle"
  },

然后運行命令直接打包:

  npm run bundle-ios

jsCodeLocation

在ios中AppDelegate里可以看到設置JavaScript代碼位置的代碼:
Debug Server上的設置

    NSURL *jsCodeLocation;
    jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];

        RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                  moduleName:@"FreshqiaoReact"
                                           initialProperties:nil
                                               launchOptions:launchOptions];

在開發的過程中可以在這里配置Debug Server的地址,當發布上線的時候,就需要使用離線的jsbundle文件,因此需要設置jsCodeLocation為本地的離線jsbundle。
設置離線的jsCodeLocation:

   jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"bundle/index.ios" withExtension:@"jsbundle"];

離線包里的.jsbundle文件是經過優化處理的,因此運行效率也會比Debug的時候更高一些。

如果報錯

RCTSRWebSocket.m報錯,需要在報錯的錯誤處SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t*)mask_key)做處理,只需在該處加上(void)即可。如下:(void)SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t *)mask_key);

處理 RCTSRWebSocket.m還是不行。還需要在RCTScrollView.m 做出修改

@implementation RCTCustomScrollView

{

__weak UIView *_dockedHeaderView;

RCTRefreshControl *_refreshControl; //加入此行

}

不然會報 Use of undeclared identifier '_refreshControl'; did you mean 'refreshControl'?錯誤,RCTScrollView.m 位于Xcode項目中libraries下React.xcodeproj / React / View

運行github上的項目

npm install -g React-native-cli
npm install
react-native start

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容