19

デバッグ用にうまくビルドできます。静的ライブラリがプロジェクトのビルドフェーズ設定に含まれていることをトリプルチェックしました。また、ヘッダーインクルードパスなどの他のことも試しましたが、役に立ちませんでした。

テスト飛行用のIPAを作成しようとすると、エラーが発生します。 #import <MBProgressHUD/MBProgressHUD.h>

以前にIPAを構築することはできましたが、以前はMBProgressHUD静的ライブラリを実装/使用していませんでした。

ヘッダーとコードファイルを静的にリンクする代わりに手動で含めることもできますが、ここで何が起こっているのかを知りたいと思います。

ありがとう。

PS- https://github.com/jdg/MBProgressHUDに記載されている「静的ライブラリ」の手順を使用しました

4

3 に答える 3

10

デフォルトでは、Xcodeはビルド製品をに入れます。$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)これは、たとえばに相当しbuild/Release-iphoneosます。これは、製品が組み込まれ、ヘッダーがコピーされるフォルダーです。

リリース構成を複製して「AppStore」と呼ばれるものにすると、Xcodeがに組み込まれるようになりbuild/App Store-iphoneosます。問題は、実際には、静的ライブラリがまだリリース構成でリリースビルドフォルダにビルドされていることです。

App Storeの構成(少なくとも私にとっては)はプロビジョニングプロファイルを簡単に切り替えるためだけにあるため、私の解決策は、App Storeの構成の「構成ごとのビルド製品パス」をに変更して、AppStoreの構成$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)もビルドするようにすることです。リリースビルドフォルダに。

于 2013-03-15T15:27:34.430 に答える
9

別のSOの質問( https://stackoverflow.com/a/10159481/143225 )の助けを借りて、ヘッダーファイルにインクルードすることができました。

どうやら、アーカイブビルドプロセスはデバッグビルドプロセスとはどういうわけか異なります。"$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts"「ユーザーヘッダー検索パス」ビルド設定に追加することで、正常にビルドされました。

なぜこれが期待どおりに機能しないのかを理解したいと思います。プロジェクトは、デバッグビルドとリリースビルドのヘッダーファイルを自動的にインクルードするようにビルドされていますが、アーカイブビルドの場合はどういうわけかそうではありません。アーカイブビルドは、Xcodeのスキーム設定のデバッグ設定またはリリース設定のいずれかから継承すると思ったので、これは奇妙なことです。

追加情報は大歓迎です。

于 2012-12-10T22:31:47.267 に答える
6

Daniel Tullの回答は機能しますが、「構成ごとのビルド製品パス」を変更する代わりに、静的ライブラリプロジェクトの構成を更新して、「AppStore」構成またはアプリターゲットがビルドする他の名前付き構成を含めることができます。リリース構成の複製です。このように、静的ライブラリは、ライブラリとヘッダー/インクルードファイルを適切なディレクトリに出力します。これは、構成ごとのビルド製品パスで使用される$(BUILD_DIR)/ $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)マクロによって解決されます。 '; およびwalllaaaaa...パブリックライブラリヘッダーがXcodeによって適切に解決されるようになりました。つまり、アプリのターゲットに「App Store」という名前の構成があり、ヘッダーをエクスポートする静的ライブラリに対するリンクがある場合、

于 2013-12-03T18:11:27.683 に答える