概述
iOS
原生包RN
, 即為以iOS
為基礎(chǔ)工程,在指定的頁面,包入react native
提供的RCTRootView
頁面.
因過程較為繁瑣,涉及podfile
生成,初始化RN
工程,指定版本,啟動(dòng) RN
本地服務(wù)器等等,不一而足, 因此采用 Python
調(diào)用系統(tǒng)的shell
腳本來完成.
參考文章 -- reactnative集成到原生ios項(xiàng)目
前提
- 已經(jīng)安裝并配置好了
React native
環(huán)境 - 已經(jīng)安裝并配置好了
CocoaPods
環(huán)境 - 使用
Mac OSX
, 自帶Python 2.x
環(huán)境 - 我們不使用參考鏈接中的手動(dòng)拖曳的方式添加
RN
工程,而是采用CocoaPods
的本地映射方式管理RN
使用
- 新建一個(gè)原生的
iOS
工程, 假設(shè)名為ApplePrj
- 將本文件拷貝至
ApplePrj
同目錄下 - 在終端中
cd
到ApplePrj
鎖在目錄, 然后執(zhí)行python rnPrjInit
即可 - 如果中間沒有問題,會(huì)執(zhí)行到本地服務(wù)器啟動(dòng)的頁面
下面是執(zhí)行過程 --- 旨在記錄腳本究竟做了什么
以下為同步執(zhí)行的過程
- 根據(jù)
.py
文件中設(shè)定好的RN
版本,在原生工程的同級(jí)目錄下,去生成一個(gè)名為ReactNativePrj
的RN
原生工程.PS: 此時(shí)工程生成的兩個(gè)包含各自平臺(tái)的文件夾,
ios
和android
文件夾,其實(shí)是沒有用的,可以刪掉.不刪掉也沒事. - 獲取
ApplePrj
鎖在目錄的文件夾名稱, 即假設(shè)文件目錄為~/user/bin/ApplePrj
,我需要獲取工程的名稱,也就是這里的目錄文件名ApplePrj
,也就是iOS
原生工程的文件名. - 根據(jù)設(shè)置好的
ios
版本,在當(dāng)前目錄下,去生成一個(gè)Podfile
--- 這里可以省去編寫dependency
的麻煩,不過如果有新的依賴庫,可以在生成后自行修改,然后再單獨(dú)執(zhí)行pod update
命令 - 執(zhí)行
Podfile
中的指令,相當(dāng)于在終端中執(zhí)行pod update
. -- 此時(shí)里面的target PrjName do
,PrjName
已經(jīng)在上面獲取到了工程的名稱. - 執(zhí)行成功后,
cd
到RN
的工程中,執(zhí)行react-native start
開啟本地服務(wù)器. - 此時(shí)有可能會(huì)失敗,需要進(jìn)一步執(zhí)行
chmod -R 777 node_modules
以上,謝謝.