Xcode 9, Carthage. iTunes Connect Error: "Invalid Bundle - Disallowed LLVM instrumentation"
Xcode 9, Carthage. iTunes Connect Error: "Invalid Bundle - Disallowed LLVM instrumentation"
今天我下载了 Xcode 9 并为我的应用程序进行了必要的更改以进行编译。该应用程序正在本地编译 运行,没有任何问题。
使用 Xcode 9 我将其上传到 App Store。上传成功,没有任何错误。
然后我转到以下来自 Apple 的电子邮件:
Dear developer,
We have discovered one or more issues with your recent delivery for
"KiteSpotter - Kitesurf wind and weather forecast". To process your
delivery, the following issues must be corrected:
Invalid Bundle - Disallowed LLVM instrumentation. Do not submit apps
with LLVM profiling instrumentation or coverage collection enabled.
Turn off LLVM profiling or code coverage, rebuild your app and
resubmit the app.
Once these issues have been corrected, you can then redeliver the
corrected binary.
Regards,
The App Store team
我去关闭了我的目标和 cocoa pods 目标的代码覆盖,这是我能找到的唯一相关设置:
重新提交了申请,我得到了同样的错误。
在我的项目中,我使用的是 Carthage,它有超过 15 个依赖项。搜索解决方案我发现所有项目都需要使用上述设置进行更新。
- 是否有任何解决方案可以为所有框架自动执行此设置(如果这是导致问题的原因)。
- 有没有其他人遇到过这个问题并解决了这个问题。问题是 Carthage 框架造成的还是其他原因?
自动将所有依赖项的代码覆盖率设置为 false 的解决方案是 运行 在终端上执行以下命令(请转到您的项目目录):
grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g'
这会将代码覆盖率设置为“否”,iTunes 连接不会报错。
使一切正常的顺序如下
- 运行
carthage update --platform iOS --no-use-binaries --no-build
。这将更新和下载所有依赖项。
当 Carthage 开始编译时,您可以按 ctrl+c 取消。
- 运行 上面的命令设置代码覆盖率为NO
- 现在一切就绪 运行
carthage build --platform iOS
。这将构建代码覆盖率为 NO 的所有内容
您现在可以存档并上传到 iTC。
命令是由 https://github.com/gunterhager 发出的,所以归功于他
作为 fastlane 用户 的替代方案,将以下内容添加到您的 fastlane 文件,这将自动执行所有操作:
desc "Update Carthage"
lane :update_carthage do
carthage(
command: "update", # One of: build, bootstrap, update, archive. (default: bootstrap)
use_binaries: false, # Check out dependency repositories even when prebuilt frameworks exist
no_build: true, # When bootstrapping Carthage do not build
platform: "iOS" # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
)
sh("grep -lR 'codeCoverageEnabled' --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = 'YES'/codeCoverageEnabled = 'NO'/g'")
carthage(
command: "build", # One of: build, bootstrap, update, archive. (default: bootstrap)
platform: "iOS" # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
)
end
作为快速修复,运行 终端中的这些命令(一定要转到项目的根文件夹):
carthage update --platform iOS --no-use-binaries --no-build
这将更新您的依赖项,但不会构建任何内容。
grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g'
这会将代码覆盖率设置为 NO
。
carthage build --platform iOS
这将最终构建所有没有代码覆盖的框架。
现在您可以存档项目并将其上传到 iTunes Connect。
Carthage
项目的好心人已经在着手进行更加用户友好的修复,所以一定要检查那里的版本。
只需将 Carthage
更新到版本 0.26.0
或更高版本,然后 运行 再次执行 carthage update
命令。
我也从 Xcode 9.1 得到了同样的错误,尽管我已经将 Carthage 更新到最新版本 https://github.com/Carthage/Carthage/releases 我无法将构建上传到 iTunes
我是这样工作的:-
如果您已将 Xcode 更新为 9.1,则
更新您从 https://github.com/Carthage/Carthage/releases
下载的 carthage.pkg
安装 .pkg
和
参考你的项目
在Terminal
中给出carthage update
命令
和
然后转到您的项目 Build Settings
找到 Enable Code Coverage Support
将设置从 Yes
更改为 No
然后存档并上传到 AppStore
。您的构建将是 ready
。 Happy
!
今天我下载了 Xcode 9 并为我的应用程序进行了必要的更改以进行编译。该应用程序正在本地编译 运行,没有任何问题。
使用 Xcode 9 我将其上传到 App Store。上传成功,没有任何错误。
然后我转到以下来自 Apple 的电子邮件:
Dear developer,
We have discovered one or more issues with your recent delivery for "KiteSpotter - Kitesurf wind and weather forecast". To process your delivery, the following issues must be corrected:
Invalid Bundle - Disallowed LLVM instrumentation. Do not submit apps with LLVM profiling instrumentation or coverage collection enabled. Turn off LLVM profiling or code coverage, rebuild your app and resubmit the app.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
我去关闭了我的目标和 cocoa pods 目标的代码覆盖,这是我能找到的唯一相关设置:
重新提交了申请,我得到了同样的错误。
在我的项目中,我使用的是 Carthage,它有超过 15 个依赖项。搜索解决方案我发现所有项目都需要使用上述设置进行更新。
- 是否有任何解决方案可以为所有框架自动执行此设置(如果这是导致问题的原因)。
- 有没有其他人遇到过这个问题并解决了这个问题。问题是 Carthage 框架造成的还是其他原因?
自动将所有依赖项的代码覆盖率设置为 false 的解决方案是 运行 在终端上执行以下命令(请转到您的项目目录):
grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g'
这会将代码覆盖率设置为“否”,iTunes 连接不会报错。
使一切正常的顺序如下
- 运行
carthage update --platform iOS --no-use-binaries --no-build
。这将更新和下载所有依赖项。 当 Carthage 开始编译时,您可以按 ctrl+c 取消。 - 运行 上面的命令设置代码覆盖率为NO
- 现在一切就绪 运行
carthage build --platform iOS
。这将构建代码覆盖率为 NO 的所有内容
您现在可以存档并上传到 iTC。
命令是由 https://github.com/gunterhager 发出的,所以归功于他
作为 fastlane 用户 的替代方案,将以下内容添加到您的 fastlane 文件,这将自动执行所有操作:
desc "Update Carthage"
lane :update_carthage do
carthage(
command: "update", # One of: build, bootstrap, update, archive. (default: bootstrap)
use_binaries: false, # Check out dependency repositories even when prebuilt frameworks exist
no_build: true, # When bootstrapping Carthage do not build
platform: "iOS" # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
)
sh("grep -lR 'codeCoverageEnabled' --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = 'YES'/codeCoverageEnabled = 'NO'/g'")
carthage(
command: "build", # One of: build, bootstrap, update, archive. (default: bootstrap)
platform: "iOS" # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
)
end
作为快速修复,运行 终端中的这些命令(一定要转到项目的根文件夹):
carthage update --platform iOS --no-use-binaries --no-build
这将更新您的依赖项,但不会构建任何内容。grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g'
这会将代码覆盖率设置为NO
。carthage build --platform iOS
这将最终构建所有没有代码覆盖的框架。
现在您可以存档项目并将其上传到 iTunes Connect。
Carthage
项目的好心人已经在着手进行更加用户友好的修复,所以一定要检查那里的版本。
只需将 Carthage
更新到版本 0.26.0
或更高版本,然后 运行 再次执行 carthage update
命令。
我也从 Xcode 9.1 得到了同样的错误,尽管我已经将 Carthage 更新到最新版本 https://github.com/Carthage/Carthage/releases 我无法将构建上传到 iTunes
我是这样工作的:-
如果您已将 Xcode 更新为 9.1,则
更新您从 https://github.com/Carthage/Carthage/releases
下载的carthage.pkg
安装 .pkg
和
参考你的项目
在Terminal
中给出carthage update
命令
和
然后转到您的项目 Build Settings
找到 Enable Code Coverage Support
将设置从 Yes
更改为 No
然后存档并上传到 AppStore
。您的构建将是 ready
。 Happy
!