Xcode react native上不存在CbundleIdentifier
很容易就能拿到赏金。不一定需要任何本地经验。问题似乎出在开放源代码中,它可以从那里获得: 更新了xcode,现在当我试图通过发出以下命令来运行我的react native应用程序时:Xcode react native上不存在CbundleIdentifier,xcode,react-native,Xcode,React Native,很容易就能拿到赏金。不一定需要任何本地经验。问题似乎出在开放源代码中,它可以从那里获得: 更新了xcode,现在当我试图通过发出以下命令来运行我的react native应用程序时:react native run ios我收到一个错误: 处理命令时遇到错误(域=NSPOSIXErrorDomain,代码=2): 未能安装请求的应用程序 在提供的路径中找不到应用程序包。 提供所需应用程序包的有效路径。 打印:条目“:CbundleIdentifier”不存在 错误命令失败:/usr/libexe
react native run ios
我收到一个错误:
处理命令时遇到错误(域=NSPOSIXErrorDomain,代码=2):
未能安装请求的应用程序
在提供的路径中找不到应用程序包。
提供所需应用程序包的有效路径。
打印:条目“:CbundleIdentifier”不存在
错误命令失败:/usr/libexec/PlistBuddy-c打印:CFBundleIdentifier-DerivedData/Build/Products/Debug-iphonesimulator/MyAppName.app/Info.plist
打印:条目“:CbundleIdentifier”不存在
调试错误:命令失败:/usr/libexec/PlistBuddy-c打印:CFBundleIdentifier-DerivedData/Build/Products/debug-iphonesimulator/MyAppName.app/Info.plist
打印:条目“:CbundleIdentifier”不存在
在checkExecSyncError(child_process.js:616:11)
在Object.execFileSync(child_process.js:634:13)
在runOnSimulator(项目根目录/node_modules/@react native community/cli/build/commands/runIOS/runIOS.js:181:45)
在出现这些错误之前,该命令会打印出有关成功生成以及即将安装生成的信息:
信息**生成成功**
信息安装DerivedData/Build/Products/Debug iphonesimulator/MyAppName.app
因此,看起来构建是正常的,但当它试图安装应用程序时失败了
我想我已经尝试了从其他问题中找到的带有类似错误信息的“一切”,但没有任何东西对我有效
一些规格:
反应本机:0.59.10反应:16.8.3
xcode版本:12.2版(12B45b) 我知道在stackoverflow上也有类似的问题。但是,由于那里提供的解决方案都不适用于我,而且我希望得到修复,所以我提出了这个单独的问题 我不知道它试图找到的Info.plist文件在哪里:DerivedData/Build/Products/Debug iphonesimulator/MyAppName.app/Info.plist 在我的ios文件夹中,有一个名为DerivedData的文件夹,但在该文件夹中没有名为Build的文件夹。所以我认为它可能是从错误的位置看的 更新: 我已经能够指出cli启动出现错误的地方: 如果我更改该行
let buildPath=build/${scheme}/build/Products/${configuration}-${device}/${appName}.app
到->build/${scheme}/build/Products/${configuration}-${device}/MyAppRealName.app
然后,开发人员的启动工作很好,没有问题。因此,似乎获取appName出错了。appName解析如下:
const-productNameMatch=/export-FULL\u-PRODUCT\u-NAME=“?(.+).app”?$/m.exec(buildOutput)代码>
我可以做一个安装后的npm脚本,只需将应用程序的名称设置为正确的,就可以结束了。但这是一种相当粗俗的方式。我想知道是否有更好的替代方案?我看到runIOS文件已从我拥有的版本更新,但函数getProductName仍然保持不变。因此,我不确定仅更新cli是否有效,或者是否可行,因为它可能需要更新的react本机版本,而这目前不是我的选择。react本机运行ios的结果是:
DerivedData/Build/Products/Debug iphonesimulator/MyAppName.app/Info.plist
正确答案应该是:
DerivedData/Build/Products/Debug iphonesimulator/MyAppRealName.app/Info.plist
然后,您可以通过编辑Xcode项目将其修复为:
打开产品菜单(状态栏)
方案->编辑方案
在“生成”部分下,添加后期操作
在“提供生成设置自”:选择应用程序的目标
使用脚本将ErrorName.app
复制到realname.app
:cp${builded\u PRODUCTS\u DIR}/${PRODUCT\u NAME}.app${builded\u PRODUCTS\u DIR}/real\u NAME.app
或者您可以使用符号链接而不是复制
较新版本的@react-native-community/cli
不适用于较旧版本的react-native,因为在较新版本中,它们将getProductName
更改为getPlatformName
。有关更多详细信息,请阅读本文摘要
解决方案
作为一种本地解决方法,通过node\u modules/@react native community/cli platform ios/build/commands/runIOS/index.js对包进行修补,并编辑getProductName
(第362-365行),内容如下:
函数getProductName(buildOutput){
const-productNameMatch=/export-FULL\u-PRODUCT\u-NAME\\?=“?(.+).app”?$/m.exec(buildOutput);
返回productNameMatch?productNameMatch[1]。替换(/(?:\\())/g,$1'):null;
}
如果只运行react native run ios
,我认为xcode的post操作根本不会运行。所以我觉得解决这个问题的方法有点老套,我必须一直从xcode运行这个应用程序。我想要1号的。不是哈奇,2。版本控制了吗?你能试试吗?即使构建步骤是从react native的脚本触发的,也应该执行它。我仍然想知道什么是错误的应用程序名称?是否与正确的应用程序名称相关?您的项目是否包含任何应用程序扩展,如NotificationService扩展、共享扩展等…?错误的应用程序名称来自以下内容:const appName=Wait buildProject(xcodeProject,selectedSimulator.udid,scheme,args.configuration,args.packager,args.verbose,args.port)代码>该函数有第254行:resolve(getProductName(buildOutput)| scheme)代码>无法使用函数getProductName找到产品名称,因此默认为变量方案。scheme变量的值是错误的,它不是应用程序的名称。因此脚本找不到Info.plist文件,因为路径中的应用程序错误