12

iOS アプリで Dropbox Core API をかなり長い間使用しています。Xcode 7 にアップデートした後、プロジェクトをコンパイルしようとすると、次のエラーが発生しました。

ld: '.../Frameworks/Dropbox/iOS/DropboxSDK.framework/DropboxSDK' does not contain bitcode. 
You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated 
library from the vendor, or disable bitcode for this target. 

ビットコードとは何か、そしてそれが何に役立つかを知っています。このエラーは、ターゲットのビルド設定でEnable Bitcodeオプションを設定するだけで解決できます。Noこの後、すべてがエラーなしでコンパイルされ、アプリは問題なく実行されます。

これまでのところはうまくいっていますが、これは「正しい」解決策ですか? Dropbox ページで SDK の更新バージョンを確認しましたが、既に最新バージョンを使用しています。

プロジェクトには、Dropbox SDK を使用しないアプリ ウィジェット、Watch 拡張機能などの他のターゲットが含まれています。ここではどのオプションをEnable Bitcode使用する必要がありますか? (何らかの理由で)Noすべてのターゲットに同じ値 (私の場合) を使用する方がよいですか? メインアプリのターゲットがビットコードを使用していない場合、ウォッチとウィジェットのターゲットでビットコードを有効にすることは意味がありますか?

ここでのベストプラクティスは何ですか?

4

2 に答える 2

2

この質問をしたので、ウィジェットとApple Watchのターゲットで使用しているときに、ターゲットでオプションEnable Bitcodeを設定するだけです。それはうまく機能し、問題や制限に気づきませんでした.NoBuild SettingsYes

今、アプリの新しいバージョンを App Store にリリースしようとしましたがInclude Bitcode、アプリ ファイルを Apple にアップロードするときにチェック ボックスがあることに気付きました。このチェック ボックスを有効にすると、次のエラーが表示されます。

Match-O 形式が無効です。Match-O バンドル「MyApp.app/PlugIns/MyApp WatchKit Extension.appex」は、メイン バンドルの Match-O と一致しません。

メイン バンドルの Match-O には armv7 (マシン コード) と arm64 (マシン コード) が含まれ、ネストされたバンドルの Match-O には armv7 (ビットコードとマシン コード) と arm64 (ビットコードとマシン コード) が含まれます。

プラットフォームのすべてのターゲットで、ENABLE_BITCODE ビルド設定の値が一貫していることを確認します。

昨年中にアップロードした他のすべてのバージョンは問題なく通過したのに、なぜこれが問題なのかわかりません。ただし、この問題は、チェック ボックスをオフにすることで簡単に解決できInclude Bitcodeます。その後、アップロードは問題なく受け入れられます。

しかし、もっと良い解決策があります。Greg が指摘したように、Dropbox はついに SDK のビットコード対応バージョンをリリースしました!

新しい SDK 1.3.14をダウンロードし、それをプロジェクトに含めて、すべてのターゲットに対して に設定すれば完了ですENABLE_BITCODEYes少なくとも、Apple があなたのリリース ワークフローを妨害する新しい方法を見つけるまでは:-)

于 2016-06-16T08:14:38.120 に答える