React Native打包iOS的ipa包

介紹

開發(fā)React Native的過程中,js代碼和所需要的資源運行在一個Debug Server上,每次代碼有更新后,直接command+R就可以在模擬器上看到刷新后的展示,這種方式非常方便。但是我們需要將我們的App發(fā)布到AppStore,這個時候就需要打包我們的應(yīng)用程序,使用離線的js代碼和圖片資源。這就需要把js和圖片等資源打包成離線資源,再添加到Xcode中,然后通過Xcode特殊處理發(fā)布到AppStore。

一、生成bundle文件

新建bundle目錄

? ?在生成的RN工程中,找到ios目錄,在該目錄下新建bundle目錄

進入項目目錄,運行以下打包命令

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

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

--platform?,平臺名稱(ios或者android)

--dev?,設(shè)置為false的時候?qū)avaScript代碼進行優(yōu)化處理。

--bundle-output, 生成的jsbundle文件的名稱,比如./ios/bundle/index.ios.jsbundle

--assets-dest?圖片以及其他資源存放的目錄,比如./ios/bundle

也可以在package.json中添加編譯命令

{? ?

????"scripts":{? ? ? ?

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

????}

}


以后打包直接運行npm run bundle-ios即可

二、在Xcode中集成

通過上面的命令生成離線包后,可以在ios目錄下bundle中看到包含的離線資源:

需要在Xcode中添加資源到項目中,必須選擇Create folder references的方式添加文件夾。

添加成功后:

三、設(shè)置AppDelegate.m文件

修改AppDelegate.m中的加載包的方式(只需修改一次),之后項目會自動跟據(jù)debug還是release狀態(tài)加載不同的包

NSURL *jsCodeLocation;

#ifdef DEBUG? ?

//開發(fā)包? ?

jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];#else? ?

//離線包? ?

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

#endif

修改debug狀態(tài)

將項目由debug狀態(tài)改成release狀態(tài),Xcode-->Product-->Scheme-->Edit Scheme...

四、添加證書、配置描述文件打包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容