Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode react native上不存在CbundleIdentifier_Xcode_React Native - Fatal编程技术网

Xcode react native上不存在CbundleIdentifier

Xcode react native上不存在CbundleIdentifier,xcode,react-native,Xcode,React Native,很容易就能拿到赏金。不一定需要任何本地经验。问题似乎出在开放源代码中,它可以从那里获得: 更新了xcode,现在当我试图通过发出以下命令来运行我的react native应用程序时:react native run ios我收到一个错误: 处理命令时遇到错误(域=NSPOSIXErrorDomain,代码=2): 未能安装请求的应用程序 在提供的路径中找不到应用程序包。 提供所需应用程序包的有效路径。 打印:条目“:CbundleIdentifier”不存在 错误命令失败:/usr/libexe

很容易就能拿到赏金。不一定需要任何本地经验。问题似乎出在开放源代码中,它可以从那里获得:

更新了xcode,现在当我试图通过发出以下命令来运行我的react native应用程序时:
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文件,因为路径中的应用程序错误