React Native ios打包

React Native ios打包

轉(zhuǎn)自:https://segmentfault.com/a/1190000006668359

bundle?ios?react-native

?12.2k 次閱讀 ?·? 讀完需要 11 分鐘?

開發(fā)React Native的過程成,js代碼和圖片資源運(yùn)行在一個(gè)Debug Server上牺氨,每次更新代碼之后只需要使用command+R鍵刷新就可以看到代碼的更改,這種方式對(duì)于調(diào)試來說是非常方便的冻璃。

但當(dāng)我們需要發(fā)布App到App Store的時(shí)候就需要打包,使用離線的js代碼和圖片薪夕。這就需要把JavaScript和圖片等資源打包成離線資源递递,在添加到Xcode中,然后一起發(fā)布到App Strore中。

打包離線資源需要使用命令react-native bundle(注:文中使用的項(xiàng)目名稱為RNIos)

react-native bundle

React Native的?react-native bundle命令是用來進(jìn)行打包的命令弹惦,react-native bundle的詳細(xì)命令選項(xiàng)https://github.com/facebook/react-native/blob/master/local-cli/bundle/bundleCommandLineArgs.js矿卑。

其中我們常使用的一線命令選項(xiàng):

--entry-file ,ios或者android入口的js名稱喉恋,比如index.ios.js

--platform ,平臺(tái)名稱(ios或者android)

--dev ,設(shè)置為false的時(shí)候?qū)?huì)對(duì)JavaScript代碼進(jìn)行優(yōu)化處理。

--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

為了方便使用轻黑,也可以把打包命令寫到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"},

然后運(yùn)行命令直接打包:

npm run bundle-ios

打包結(jié)果:

...transformed360/360(100%)[8:56:31PM] ? find dependencies (3427ms)bundle:startbundle:finishbundle:Writing bundle outputto:./ios/bundle/index.ios.jsbundlebundle:Done writing bundle outputbundle:Copying5asset filesbundle:Done copying assets

可以看到j(luò)sbundle和資源文件已經(jīng)打包成功。

添加資源

離線包生成完成之后琴昆,可以在ios目錄下看到一個(gè)bundle目錄氓鄙,這個(gè)目錄就是bundle生成的離線資源。

需要在Xcode中添加資源到項(xiàng)目中业舍,必須使用Create folder references的方式添加文件夾.

1 Add Files to "RNIos"


2 選擇bundle文件,在option中選擇Create folder references


3 添加到項(xiàng)目中的文件夾必須是藍(lán)色


jsCodeLocation

在ios中AppDelegate里可以看到設(shè)置JavaScript代碼位置的代碼:

Debug Server上的設(shè)置

NSURL*jsCodeLocation;jsCodeLocation=[NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];RCTRootView*rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocationmoduleName:@"RNIos"initialProperties:nillaunchOptions:launchOptions];

在開發(fā)的過程中可以在這里配置Debug Server的地址抖拦,當(dāng)發(fā)布上線的時(shí)候,就需要使用離線的jsbundle文件舷暮,因此需要設(shè)置jsCodeLocation為本地的離線jsbundle态罪。

設(shè)置離線的jsCodeLocation:

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

離線包里的.jsbundle文件是經(jīng)過優(yōu)化處理的,因此運(yùn)行效率也會(huì)比Debug的時(shí)候更高一些下面。

項(xiàng)目代碼地址:https://github.com/jjz/react-native/tree/master/RNIos

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末复颈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沥割,更是在濱河造成了極大的恐慌耗啦,老刑警劉巖凿菩,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異帜讲,居然都是意外死亡衅谷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門似将,熙熙樓的掌柜王于貴愁眉苦臉地迎上來获黔,“玉大人,你說我怎么就攤上這事玩郊≈矗” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵译红,是天一觀的道長预茄。 經(jīng)常有香客問我,道長侦厚,這世上最難降的妖魔是什么耻陕? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮刨沦,結(jié)果婚禮上诗宣,老公的妹妹穿的比我還像新娘。我一直安慰自己想诅,他們只是感情好召庞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著来破,像睡著了一般篮灼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上徘禁,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天诅诱,我揣著相機(jī)與錄音,去河邊找鬼送朱。 笑死娘荡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驶沼。 我是一名探鬼主播炮沐,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼回怜!你這毒婦竟也來了大年?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鲜戒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抹凳,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遏餐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赢底。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片失都。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖幸冻,靈堂內(nèi)的尸體忽然破棺而出粹庞,到底是詐尸還是另有隱情,我是刑警寧澤洽损,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布庞溜,位于F島的核電站,受9級(jí)特大地震影響碑定,放射性物質(zhì)發(fā)生泄漏流码。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一延刘、第九天 我趴在偏房一處隱蔽的房頂上張望漫试。 院中可真熱鬧,春花似錦碘赖、人聲如沸驾荣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽播掷。三九已至,卻和暖如春劫哼,著一層夾襖步出監(jiān)牢的瞬間叮趴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工权烧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眯亦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓般码,卻偏偏與公主長得像妻率,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子板祝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容