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

前言

本文,完美解决了问题,Print: Entry, ":CFBundleIdentifier", Does Not Exist,如果您着急看解决步骤,请直接将文章拉到底,但是,切记,一定要严格按照步骤进行,先删除,然后手工创建,然后安装依赖。否则,极有可能不会成功,给您带来不必要的困扰。一定要严格按照步骤进行,切记,切记,切记。

你被React-Native坑过吗?这货就好像当年WOW开荒时的第一个Boss一样,虐死菜鸟玩家,而又被资深玩家所不齿。如果,您并不是必须使用React-Native,那么,我劝您,赶紧去学Flutter + Dart,虽然不敢说,Flutter没坑,但是,至少Flutter从理论层面会比通过JSBridge的渲染效率要高一些。都要踩坑,踩个新的坑,万一以后再结合这个新坑弄出个类似Vue什么的框架,那就真的可以千古流芳了......

react-native 填坑之路(1):如何解决Print: Entry,

终端表现

FaceBook写了很多IOS-Only的包,然后无脑的融合进了React-Native,而Flutter作为Google的儿子,那么肯定会给同为亲儿子的Android很大的优惠。实践中,也可以发现React-Native在IOS上表现会更好一些,不过,Flutter由于是根据不同平台都提供了原生的编译,因此,几乎每个平台上的表示都没有差。

好了,最后重申一下,如果不是必须要用这货,建议您,马上卸载掉react-native,然后,拥抱原生或者Flutter去吧。React-Native开发前期的高效率,会随着开发过程中的红屏、配置问题、库错乱与版本、打包异常、多人开发相互坑、安卓程序员坑IOS程序员、IOS程序员坑安卓程序员等各种突发事件而消失殆尽。

问题:Print: Entry, ":CFBundleIdentifier", Does Not Exist

这个问题的解决,我们要做3个前提

1.这个问题基本上是IOS方面才会出现的,因此,本文所解决的是IOS方面的问题。
2.要先确保Xcode里没有其他的报错了,如果Xcode还存在各种报错的话,请先解决,然后,还出现这个问题的话,才能使用本文提供的方法进行解决。(例如,Xcode的升级等,请先做)
3.本文的解决方案中包含node_modules的删除,因此,一定要记录好之前的每一步配置和link,link不好的话,打包可能会出现问题的。切记,切记。

报错信息

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

这个就是报错信息,网上基本上说就是包没有安装好。经过实地的解决,也确实是这个问题。因此,我们先要到源码中看看,具体是哪几个包?

源代码的地址在下方链接中,大家要根据自己的react-native版本来确定版本。

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

react-native 填坑之路(1):如何解决Print: Entry,
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

以最新的版本来说,主要是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。一般情况下,是因为boost_1_63_0.tar.gz包下载不完整造成的,因此,boost_1_63_0.tar.gz这个包必须要在这个网站http://www.boost.org/users/history/version_1_63_0.html
进行手动下载。好了,主要的注意事项和问题原因,已经分析完了,接下来我一下如何做。

解决办法

注意,一定要严格按照步骤进行,先删除,然后手工创建,然后安装依赖。否则,极有可能不会成功,给您带来不必要的困扰。一定要严格按照步骤进行,切记,切记,切记。

步骤 说明
删除关联包和缓存 rm -rf node_modelus/ && rm -rf ~/.rncache
创建文件夹并手动安装包 手动创建~/.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 如果有link等操作的话,还要记得执行。

注意,对于菜鸟来说,要慎重使用react-native upgrade,有的百度文章中提到要执行这个,但是,如果您是菜鸟的话,很可能造成不必要的问题,所以,慎重使用react-native upgrade。我自己的环境就没有执行这个命令就好了。

你可能感兴趣的:(react-native 填坑之路(1):如何解决Print: Entry, ":CFBundleIdentifier", Does Not Exist)