Cordova 和 ios-deploy 导致构建失败 "codesign exit code 1"/ "permission denied"
Cordova and ios-deploy causes builds to fail with "codesign exit code 1"/ "permission denied"
我正在开发基于 Cordova 的移动应用程序,并且想利用 Cordova CLI 的能力来部署和 运行 我的移动应用程序直接从命令行,而无需进入 XCode 进行构建
做的时候:
cordova run ios --device
Cordova 亲切地告诉您应该安装 ios-deploy 节点模块。我是按照他们 GIT 网站上的步骤操作的。
当我下次尝试做 运行 时,我开始遇到代码设计错误,特别是:
/Users/blahblah/platforms/ios/build/device/myApp.app: Permission denied
Command /usr/bin/codesign failed with exit code 1
我无法从终端进行代码签名,更糟糕的是,返回 XCode 导致了同样的错误!
幸运的是,错误消息说明了一切:权限被拒绝;我能够通过弹出回到终端并 运行 在我的整个应用程序文件夹上设置一个 chmod 来纠正这个问题,即:
chmod -R a+rwx myApp
然后我可以返回 XCode 并再次构建和部署项目(哇!),但是如果我尝试通过 Cordova CLI 进行部署,则会出现同样的问题。
似乎 ios-deploy 和/或 cordova 在搞乱文件夹权限,但我不确定如何更正此问题。
如有任何建议,我们将不胜感激!
更新:
需要明确的是,如果我先进入终端,然后进入 platforms/ios 文件夹并在 [=50= 上执行 chmod -R a+rwx ] 文件夹。
我遇到的问题是试图从命令行成功构建/签名。
我做了一些进一步的诊断,看来问题出在 Cordova CLI 本身,而不是 ios-deploy;当我执行时:
cordova prepapre
它将我的 "www" 文件夹复制到 "platforms/ios/www",但是在这样做时它更改了权限,从每个具有写权限的人(即:drwxrwxrwx)到只有我的用户具有写权限,即: (drwxr-xr-x)
这似乎破坏了代码设计应用程序,并导致我出现上述权限被拒绝的错误。
我只是希望有人知道我可以如何解决这个问题,或者我的构建可能做错了什么 - 我宁愿不必进入 XCode 来进行这些构建。
检查构建设置中的 CODE_SIGN_IDENTITY 属性。在那里选择了您的配置文件吗?
您还需要在您的应用程序 .plist 中输入有效的捆绑包标识符。
标识符必须与您在生成配置文件时提供的标识符相匹配。
事实证明,Cordova CLI 工作正常,ios-deploy npm 包也是如此。
问题出在解决方案本身,与工具无关。
我在这个特定的 Cordova 应用程序中使用 Ionic 框架,他们的框架安装了一些 "after_prepare" 挂钩(在 hooks 文件夹中),这些挂钩试图在构建之前帮助准备/清理一些无关的文件。
其中一个挂钩(名为“020_remove_sass_from_platform.js”)试图通过在构建之前清理不需要的 SASS 文件来提供帮助,以减小已编译应用程序的大小。
不幸的是,这个挂钩正在调整文件夹权限(我想是为了确保删除能够成功),这就是 "www" 文件夹的权限在 "cordova prepare" 期间发生变化的原因。
我删除了挂钩,现在 Cordova CLI 按预期构建并签署 APK,ios-deploy 包将其推送到设备,所有这些都没有使用 XCode。
希望这对其他人有所帮助。
试试这个
sudo npm install -g ios-deploy --unsafe-perm
我正在开发基于 Cordova 的移动应用程序,并且想利用 Cordova CLI 的能力来部署和 运行 我的移动应用程序直接从命令行,而无需进入 XCode 进行构建
做的时候:
cordova run ios --device
Cordova 亲切地告诉您应该安装 ios-deploy 节点模块。我是按照他们 GIT 网站上的步骤操作的。
当我下次尝试做 运行 时,我开始遇到代码设计错误,特别是:
/Users/blahblah/platforms/ios/build/device/myApp.app: Permission denied
Command /usr/bin/codesign failed with exit code 1
我无法从终端进行代码签名,更糟糕的是,返回 XCode 导致了同样的错误!
幸运的是,错误消息说明了一切:权限被拒绝;我能够通过弹出回到终端并 运行 在我的整个应用程序文件夹上设置一个 chmod 来纠正这个问题,即:
chmod -R a+rwx myApp
然后我可以返回 XCode 并再次构建和部署项目(哇!),但是如果我尝试通过 Cordova CLI 进行部署,则会出现同样的问题。
似乎 ios-deploy 和/或 cordova 在搞乱文件夹权限,但我不确定如何更正此问题。
如有任何建议,我们将不胜感激!
更新: 需要明确的是,如果我先进入终端,然后进入 platforms/ios 文件夹并在 [=50= 上执行 chmod -R a+rwx ] 文件夹。
我遇到的问题是试图从命令行成功构建/签名。
我做了一些进一步的诊断,看来问题出在 Cordova CLI 本身,而不是 ios-deploy;当我执行时:
cordova prepapre
它将我的 "www" 文件夹复制到 "platforms/ios/www",但是在这样做时它更改了权限,从每个具有写权限的人(即:drwxrwxrwx)到只有我的用户具有写权限,即: (drwxr-xr-x)
这似乎破坏了代码设计应用程序,并导致我出现上述权限被拒绝的错误。
我只是希望有人知道我可以如何解决这个问题,或者我的构建可能做错了什么 - 我宁愿不必进入 XCode 来进行这些构建。
检查构建设置中的 CODE_SIGN_IDENTITY 属性。在那里选择了您的配置文件吗?
您还需要在您的应用程序 .plist 中输入有效的捆绑包标识符。
标识符必须与您在生成配置文件时提供的标识符相匹配。
事实证明,Cordova CLI 工作正常,ios-deploy npm 包也是如此。
问题出在解决方案本身,与工具无关。
我在这个特定的 Cordova 应用程序中使用 Ionic 框架,他们的框架安装了一些 "after_prepare" 挂钩(在 hooks 文件夹中),这些挂钩试图在构建之前帮助准备/清理一些无关的文件。
其中一个挂钩(名为“020_remove_sass_from_platform.js”)试图通过在构建之前清理不需要的 SASS 文件来提供帮助,以减小已编译应用程序的大小。
不幸的是,这个挂钩正在调整文件夹权限(我想是为了确保删除能够成功),这就是 "www" 文件夹的权限在 "cordova prepare" 期间发生变化的原因。
我删除了挂钩,现在 Cordova CLI 按预期构建并签署 APK,ios-deploy 包将其推送到设备,所有这些都没有使用 XCode。
希望这对其他人有所帮助。
试试这个
sudo npm install -g ios-deploy --unsafe-perm