每當(dāng)在模擬器上完成了開發(fā),都想到真機(jī)上試試,正好前段時(shí)候淘了一個(gè)imac。
這里就以打包rndemo到iphone為例,講一下react ntive ios打包到真機(jī)的流程。
一、前置
1.有個(gè)iphone加個(gè)mac
2.首先react native的環(huán)境要正確安裝,還未完成這一步的,請到react native官網(wǎng)或中文站查看具體流程
3.xcode等環(huán)境安裝完畢
4.rn應(yīng)用能在模擬器中跑起來,至少不要有什么致命報(bào)錯(cuò)吧
二、生成jsbundle
1.進(jìn)入rn項(xiàng)目的ios工程文件夾,找到和rn項(xiàng)目同名的文件件,打開AppDelegate.m文件,將這一行注釋掉(為了方便真機(jī)和模擬器間的切換,盡量注釋):
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
新加一行:
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"index.ios" withExtension:@"jsbundle"];
如果需要切換回模擬器調(diào)試,只需要將新加這行注釋掉,并恢復(fù)原代碼即可。
新加這行代碼大概意思就是告訴native rn代碼的入口,我們會(huì)在下一步生成這個(gè)jsbundle。
2.打開終端,進(jìn)入你的rn工程,在根目錄下執(zhí)行bundle命令:
react-native bundle --entry-file ./index.ios.js --bundle-output ./ios/bundle/index.ios.jsbundle --platform ios --assets-dest ./ios/bundle --dev false
參數(shù)說明:
--entry-file 指定入口文件 因?yàn)橐虬黫os平臺(tái),所以指定為rn項(xiàng)目的index.ios.js作為入口
--bundle-output 指定輸出的jsbundle文件路徑和文件名 指定到rn項(xiàng)目的ios工程文件夾下,記得一定要先創(chuàng)建bundle文件夾,不然終端會(huì)報(bào)文件夾找不到的錯(cuò)誤
--platform 指定平臺(tái)類型
--assets-dest 指定資源文件夾路徑 assets文件夾的路徑,包含圖片、node模塊等資源
--dev 是否為開發(fā)模式 如果設(shè)置為false,不會(huì)產(chǎn)生警告,并且bundle會(huì)被壓縮
還有其他命令,比如:transformer、prepack、bundle-enco