今日、Xcode 9をダウンロードし、アプリケーションをコンパイルするために必要な変更を加えました。アプリケーションは問題なくコンパイルおよび実行されています。
Xcode 9を使用して、App Storeにアップロードしました。アップロードはエラーなしで成功しました。
次に、Appleから次のメールを送信します。
親愛なる開発者、
「KiteSpotter-Kitesurf風と天気予報」の最近の配信で1つ以上の問題が発見されました。配送を処理するには、次の問題を修正する必要があります。
無効なバンドル-LLVMインスツルメンテーションは許可されていません。 LLVMプロファイリングインストルメンテーションまたはカバレッジコレクションが有効になっているアプリを送信しないでください。 LLVMプロファイリングまたはコードカバレッジをオフにして、アプリを再構築し、アプリを再送信します。
これらの問題を修正したら、修正したバイナリを再配信できます。
よろしく、
App Storeチーム
ターゲットとココアポッドターゲットの両方のコードカバレッジを無効にしました。これは、見つけることができる唯一の関連設定でした。
アプリケーションを再送信すると、同じエラーが表示されます。
私のプロジェクトでは、15以上の依存関係があるCarthageを使用しています。ソリューションを検索すると、すべてのプロジェクトを上記の設定で更新する必要があることがわかりました。
すべての依存関係に対してコードカバレッジをfalseに設定することを自動化するソリューションは、ターミナルで次のコマンドを実行することです(プロジェクトのディレクトリに移動してください)。
grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g'
これにより、コードカバレッジがNOに設定され、iTunes Connectからエラーが発生しなくなります。
すべてを機能させるシーケンスは次のとおりです
carthage update --platform iOS --no-use-binaries --no-build
。これにより、すべての依存関係が更新およびダウンロードされます。 Carthageがコンパイルを開始したら、ctrl + cを押してキャンセルできます。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
プロジェクトのNiceの人々は、すでにユーザーフレンドリーな修正に取り組んでいるので、必ずリリースを確認してください。
Carthageを最新バージョンに更新しましたが、Xcode 9.1でも同じエラーが発生しました https://github.com/Carthage/Carthage/releases ビルドをiTunesにアップロードできませんでした
私のためにこのように働いた:-
Xcodeを9.1に更新した場合
https://github.com/Carthage/Carthage/releases からダウンロードするcarthage.pkg
を更新します
.pkg
をインストールし、
プロジェクトを参照して、Terminal
にcarthage update
コマンドを指定します
そして
次にプロジェクトに行きますBuild Settings
find Enable Code Coverage Support
その設定をYes
からNo
次に、アーカイブしてAppStore
にアップロードします。ビルドはready
になります。 Happy
!
Carthage
をバージョン0.26.0
以降に更新し、carthage update
コマンドを再度実行するだけです。