react-native 填坑之路(1):如何解決Print: Entry, ":CFBundleIdentifier", Does Not Exist

前言

本文,完美解決了問(wèn)題,Print: Entry, ":CFBundleIdentifier", Does Not Exist,如果您著急看解決步驟,請(qǐng)直接將文章拉到底,但是,切記,一定要嚴(yán)格按照步驟進(jìn)行,先刪除,然后手工創(chuàng)建,然后安裝依賴。否則,極有可能不會(huì)成功,給您帶來(lái)不必要的困擾。一定要嚴(yán)格按照步驟進(jìn)行,切記,切記,切記。

你被React-Native坑過(guò)嗎?這貨就好像當(dāng)年WOW開(kāi)荒時(shí)的第一個(gè)Boss一樣,虐死菜鳥(niǎo)玩家,而又被資深玩家所不齒。如果,您并不是必須使用React-Native,那么,我勸您,趕緊去學(xué)Flutter + Dart,雖然不敢說(shuō),F(xiàn)lutter沒(méi)坑,但是,至少Flutter從理論層面會(huì)比通過(guò)JSBridge的渲染效率要高一些。都要踩坑,踩個(gè)新的坑,萬(wàn)一以后再結(jié)合這個(gè)新坑弄出個(gè)類似Vue什么的框架,那就真的可以千古流芳了......

終端表現(xiàn)

FaceBook寫了很多IOS-Only的包,然后無(wú)腦的融合進(jìn)了React-Native,而Flutter作為Google的兒子,那么肯定會(huì)給同為親兒子的Android很大的優(yōu)惠。實(shí)踐中,也可以發(fā)現(xiàn)React-Native在IOS上表現(xiàn)會(huì)更好一些,不過(guò),F(xiàn)lutter由于是根據(jù)不同平臺(tái)都提供了原生的編譯,因此,幾乎每個(gè)平臺(tái)上的表示都沒(méi)有差。

好了,最后重申一下,如果不是必須要用這貨,建議您,馬上卸載掉react-native,然后,擁抱原生或者Flutter去吧。React-Native開(kāi)發(fā)前期的高效率,會(huì)隨著開(kāi)發(fā)過(guò)程中的紅屏、配置問(wèn)題、庫(kù)錯(cuò)亂與版本、打包異常、多人開(kāi)發(fā)相互坑、安卓程序員坑IOS程序員、IOS程序員坑安卓程序員等各種突發(fā)事件而消失殆盡。

問(wèn)題:Print: Entry, ":CFBundleIdentifier", Does Not Exist

這個(gè)問(wèn)題的解決,我們要做3個(gè)前提

1.這個(gè)問(wèn)題基本上是IOS方面才會(huì)出現(xiàn)的,因此,本文所解決的是IOS方面的問(wèn)題。
2.要先確保Xcode里沒(méi)有其他的報(bào)錯(cuò)了,如果Xcode還存在各種報(bào)錯(cuò)的話,請(qǐng)先解決,然后,還出現(xiàn)這個(gè)問(wèn)題的話,才能使用本文提供的方法進(jìn)行解決。(例如,Xcode的升級(jí)等,請(qǐng)先做)
3.本文的解決方案中包含node_modules的刪除,因此,一定要記錄好之前的每一步配置和link,link不好的話,打包可能會(huì)出現(xiàn)問(wèn)題的。切記,切記。

報(bào)錯(cuò)信息

** BUILD FAILED **


The following build commands failed:
    PhaseScriptExecution Run\ Script /development/misc/react/AwesomeProject/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/React.build/Script-006B79A01A781F38006873D1.sh
(1 failure)
Installing build/Build/Products/Debug-iphonesimulator/AwesomeProject.app
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=2):
Failed to install the requested application
An application bundle was not found at the provided path.
Provide a valid path to the desired application bundle.
Print: Entry, ":CFBundleIdentifier", Does Not Exist
/development/misc/react/AwesomeProject/node_modules/promise/lib/done.js:10
      throw err;
      ^

Error: Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/AwesomeProject.app/Info.plist
Print: Entry, ":CFBundleIdentifier", Does Not Exist

這個(gè)就是報(bào)錯(cuò)信息,網(wǎng)上基本上說(shuō)就是包沒(méi)有安裝好。經(jīng)過(guò)實(shí)地的解決,也確實(shí)是這個(gè)問(wèn)題。因此,我們先要到源碼中看看,具體是哪幾個(gè)包?

源代碼的地址在下方鏈接中,大家要根據(jù)自己的react-native版本來(lái)確定版本。

https://github.com/facebook/react-native/blob/master/scripts/ios-install-third-party.sh

image.png

截取的需要下載的包

...
.....
fetch_and_unpack glog-0.3.5.tar.gz https://github.com/google/glog/archive/v0.3.5.tar.gz 61067502c5f9769d111ea1ee3f74e6ddf0a5f9cc "\"$SCRIPTDIR/ios-configure-glog.sh\""
fetch_and_unpack double-conversion-1.1.6.tar.gz https://github.com/google/double-conversion/archive/v1.1.6.tar.gz 1c7d88afde3aaeb97bb652776c627b49e132e8e0
fetch_and_unpack boost_1_63_0.tar.gz https://github.com/react-native-community/boost-for-react-native/releases/download/v1.63.0-0/boost_1_63_0.tar.gz c3f57e1d22a995e608983effbb752b54b6eab741
fetch_and_unpack folly-2018.10.22.00.tar.gz https://github.com/facebook/folly/archive/v2018.10.22.00.tar.gz f70a75bfeb394363d2049a846bba118ffb3b368a

以最新的版本來(lái)說(shuō),主要是glog-0.3.5.tar.gz、double-conversion-1.1.6.tar.gz、boost_1_63_0.tar.gz、folly-2018.10.22.00.tar.gz。一般情況下,是因?yàn)閎oost_1_63_0.tar.gz包下載不完整造成的,因此,boost_1_63_0.tar.gz這個(gè)包必須要在這個(gè)網(wǎng)站http://www.boost.org/users/history/version_1_63_0.html
進(jìn)行手動(dòng)下載。好了,主要的注意事項(xiàng)和問(wèn)題原因,已經(jīng)分析完了,接下來(lái)我一下如何做。

解決辦法

注意,一定要嚴(yán)格按照步驟進(jìn)行,先刪除,然后手工創(chuàng)建,然后安裝依賴。否則,極有可能不會(huì)成功,給您帶來(lái)不必要的困擾。一定要嚴(yán)格按照步驟進(jìn)行,切記,切記,切記。

步驟 說(shuō)明
刪除關(guān)聯(lián)包和緩存 rm -rf node_modelus/ && rm -rf ~/.rncache
創(chuàng)建文件夾并手動(dòng)安裝包 手動(dòng)創(chuàng)建~/.rncache文件夾,并將下載好的glog-0.3.5.tar.gz、double-conversion-1.1.6.tar.gz、boost_1_63_0.tar.gz、folly-2018.10.22.00.tar.gz手工放入文件夾下
npm npm i 或者yarn,安裝全部的依賴
link 如果有l(wèi)ink等操作的話,還要記得執(zhí)行。

注意,對(duì)于菜鳥(niǎo)來(lái)說(shuō),要慎重使用react-native upgrade,有的百度文章中提到要執(zhí)行這個(gè),但是,如果您是菜鳥(niǎo)的話,很可能造成不必要的問(wèn)題,所以,慎重使用react-native upgrade。我自己的環(huán)境就沒(méi)有執(zhí)行這個(gè)命令就好了。

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

相關(guān)閱讀更多精彩內(nèi)容

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