無効なSwiftサポート-ファイルが一致しません


116

私はSwift 2でアプリを書き直しました。内部テストのためにアプリを(Xcode 7 GM経由で)iTunesConnectにアップロードしようとしています。

しばらくの間、「無効なSwiftサポート」エラーと格闘しました(他の関連する質問があります)...しかし、今は少し違うものに変更されています。

アップルからのエラーは今言う:

無効なSwiftサポート

ファイルlibswiftCoreLocation.dylib、libswiftCoreMedia.dylib、libswiftCoreData.dylib、libswiftAVFoundation.dylibが一致しません

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib、/Payload/App.app/Frameworks/libswiftCoreMedia.dylib、/Payload/App.app/Frameworks/libswiftCoreData.dylib、/Payload/App.app/Frameworks/libswiftAVFoundation。 dylib

ファイルが正しいことを確認し(?)、アプリを再ビルドして、再送信します。

に後処理を適用しない

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib、/Payload/App.app/Frameworks/libswiftCoreMedia.dylib、/Payload/App.app/Frameworks/libswiftCoreData.dylib、/Payload/App.app/Frameworks/libswiftAVFoundation。 dylib。

「後処理を適用しない」、「ファイルが正しいことを確認し、アプリを再構築して再送信する」などで検索しても、同様のエラーを見つけることができませんでした。

「ファイルが正しいことを確認する」方法を知っている人はいますか------他に推奨事項がありますか?ありがとうございました。


まったく同じ問題があります。解決策はありますか?
Beny Boariu

このアプリを辞任しますか?これはXcodeからの直接アップロードですか?
アンディ

アーカイブした直後のXcodeからの@Andy直接アップロード。
Dan

回答:


82

ここでも同じ問題。これはおそらくビットコードに関連する開発ツールのバグだと思います。

これの回避策を見つけました。

  1. 新しいビルド番号でアプリをアーカイブします:(
  2. オーガナイザの「Finderに表示」からFinderでアーカイブ(.xcarchiveファイル)を見つけます
  3. パッケージを開いて、のようなディレクトリを見つけるProducts/Applications/YourApp.ipa/Frameworks/と、SwiftSupport/iphoneos/
  4. libswiftXxx.dylibからすべてのファイルをコピーSwiftSupport/iphoneos/Products/Applications/YourApp.ipa/Frameworks/て上書き
  5. オーガナイザーからApp Storeアップロードします

このプロセスで、ビルドのアップロードに成功しました。今、私はレビューを待っています。

注意:

CocoaPodsを使用していENABLE_BITCODEますが、オプションはNOでした。


どのiOS SDKをターゲットにしていますか?ビットコードが無効になっていると、ストアに送信できないと思いました。
JAL

3
私の場合、SwiftSupport / iphoneos /は空です。
Lim Thye Chean 2015

2
検証は成功しましたが、ビルドはまだProcessingiTunes Connectのプレリリースセクションの12時間後です。
ldiqual

2
こんにちは!私はまだ大きすぎるAPIの分析ファイルに関する警告を取得していますcl.ly/image/0s0N0s441s0X -しかし、重要なことは、それはまだ渡され、TestFlightに入ることができたということです。
DED

1
.ipa内にSwiftSupport / iphoneos /フォルダーがない場合はどうすればよいですか?
Alexander Yakovlev

51

編集:この問題を修正するCocoaPods 0.39.0がリリースされました!

@orkenstein言及があり、簡単な解決策ではいくつかのコードをコメントアウトすることではPod-frameworks.sh。ここでもう少し詳しく説明します。

Xcodeプロジェクトディレクトリで、 Pods/Target Support Files/Pods/Pods-frameworks.sh

次の行をコメント化します。

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

=>

# Embed linked Swift runtime libraries
# local basename
# basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
# local swift_runtime_libs
# swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
# for lib in $swift_runtime_libs; do
#   echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
#   rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
#   code_sign_if_enabled "${destination}/${lib}"
# done

保存する Pods-frameworks.shと、移動できます。


4
これでうまくいきました。ヘッドアップです。pod-installまたはpod-updateを実行する場合は、もう一度コメントする必要があるかもしれません。
Max Alexander

ここでCocoapodsの問題:github.com/CocoaPods/CocoaPods/issues/4188、このPRを試すことができます:github.com/CocoaPods/CocoaPods/pull/4221これらの手順:guides.cocoapods.org/using/unreleased-features
ldiqual

cocoaPods 0.39.0を更新しましたが、この問題は解決しません
nwales

@DJ Tarazonaレシピありがとう!cocopods gemを最新バージョンに更新したときでも、それは完全に私にとってはトリックでした
ホルヘビセンテメンドーサ

16

この問題の修正はマージされ、最新のCocoaPodsバージョンで利用可能です 0.39.0.beta.5

https://github.com/CocoaPods/CocoaPods/pull/4268

CocoaPodsの最新バージョンを取得するには gem install cocoapods --pre

または、未リリースの機能を実行するための指示に従います。http//guides.cocoapods.org/using/unreleased-features

CocoaPodsの最新バージョンを入手したら、pod installもう一度実行します。


これはお金のメーカーです
tommybananas

涙が来ています。ありがとうございました!
MQLN 2015年

エラーは特にCocoaPodsに関係する必要はありません。同じ問題が発生しており、CocoaPodsを使用していません。
devios1 2016年

8

私はfastlane gym 1.9.0を使用してアプリをビルドしましたが、ファイルが一致しなかったためにAppleに拒否され続けましたが、XCode 8経由でアップロードした場合は受け入れられました。ipaのswift supportフォルダーとFrameworksフォルダーでswift libsを確認したところ、swift supportフォルダー内のlibはswift 2.3用で、Frameworksフォルダー内はlib 3だったので、ジムファイルにツールチェーンを追加しましたオプション:

gym(
  scheme: "CoCadre", 
  configuration: "Production Release",
  clean: true,
  use_legacy_build_api: false,
  toolchain: "com.apple.dt.toolchain.Swift_2_3"
)

*ツールチェーンオプションを使用するには、use_legacy_build_apiをfalseに変更する必要がありました。

ツールチェーンオプションを使用するには、use_legacy_build_apiを設定する必要があります:false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185


ありがとうございました!FastlaneとGymも使用していますが、これで問題が解決しました。
Eystein Bye

おかげで、それはジムを使用するときにも問題を解決するのに役立ちました。このソリューションをuse_legacy_build_apiで引き続き使用できたことに注意してください:true
Viktor Malyi

6

GitHubにある少し複雑でないソリューションがあります

私はPods-frameworks.shを見て回り、次のようにコメントされたセクションを見つけました。

リンクされたSwiftランタイムライブラリを埋め込む
これらのライブラリをコピーする(そしてコードにコードを署名する)コードのブロックにコメントを付けると、私の提出の問題が修正されたようです。問題を引き起こしているのがそれらのコピーだけなのか、それともコード署名なのかを確認するために、まだ深く掘り下げていません。そこから少し深みを出しています。


4
  1. cocoapodsを最新バージョンに更新しsudo gem install cocoapods、ターミナルに入力します。
  2. pod updateプロジェクトのディレクトリの下で実行します。
  3. 忘れずに設定してくださいビットコードを有効NOのためにDebugすべてのあなたのポッドのオプション。
  4. 修繕

次のコードが含まれているため、問題は修正されていますPods-frameworks.sh

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

に変更されました:

# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
  for lib in $swift_runtime_libs; do
    echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
    rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
    code_sign_if_enabled "${destination}/${lib}"
  done
fi

2

これに対する私の解決策:

CocoapodsでRevealを使用していますが、Revealはビットコードを無効にする必要があります。だから私はデバッグのためだけにReveal(他のフレームワークでも機能するはずです)を含めました:

pod 'Reveal-iOS-SDK', :configurations => ['Debug']

現在、Revealはデバッグ用にのみ構成されているため、デバッグ用のビットコードのみを無効にしました。

ここに画像の説明を入力してください

この設定では、ハッキングなしですべてが正常に動作します...


0

このエラーは、ビットコードをサポートしていないライブラリ(現在の安定版のNew Relicなど)を統合するときに発生します。解決策は、ライブラリを削除するか、ビットコードを無効にする(そしてストアに送信できない可能性がある)か、ライブラリベンダーからのビットコードをサポートする更新されたバイナリを待つことです。


0

私のエラーは、スパをアプリストアにアップロードするために、アプリストアプロファイルではなくアドホックプロファイルを使用してビルドしたことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.