2

私は現在、App Store にアップロードできるように、(最初の) iphone アプリの配布製品を構築しようとしています。App ID とディストリビューション プロビジョニング プロファイル プロセスをすべて実行し、最終的にオーガナイザーとターゲットのビルド構成を認識させました。

問題は、「ディストリビューション」に「アクティブ構成」を設定すると (iPhone Dev Center の指示に従って「リリース」構成の複製)、コードをコンパイルできないことです。プロジェクトには、プロジェクトの多くのクラスで基本クラスとして使用されるいくつかのクラスを含む静的ライブラリへの参照が含まれています。そのため、Distribution 構成でビルドする場合、コンパイラーは静的ライブラリーから基本クラスが見つからないというエラーをスローし、ビルドは失敗します。

Active Configを切り替えると。「デバッグ」(開発で使用される)にまったく問題はなく、アプリは期待どおりに正しくコンパイルされます。

問題が何であるかを見つけることができません。私はこれを別の同様の質問 here で見つけましたが、別のケースのようです:

iPhone の静的ライブラリの配布とリリースのビルド エラー (ただし、デバッグ用ではありません)

Google も有用な結果をあまり得ていないようです。また、ビルドセクションでターゲットの情報を確認し、「デバッグ」構成と「配布」構成を切り替えて関連する違いを確認しましたが、これまでのところ誰も見つかりませんでした. 実際、静的ライブラリに関する関連情報は見つかりませんでした。情報ウィンドウの [全般] タブでのみ、静的ライブラリが直接依存関係に正しく表示されます。

だから、この時点で私は無知です。できるだけ正確に指示に従おうとしましたが、それだけでは不十分で、現在問題が発生しています。修正はいくぶん単純なはずだと思いますが(おそらく、どこかでいくつかのパラメーターを設定するだけです)、それを見つけることができませんでした。

お願いします (PLEASE :)) これに関するヘルプを提供してください。ヘルプやヒントは大歓迎です。

前もって感謝します!

4

3 に答える 3

6

ここにあります:

ディストリビューション ビルドを作成するには (iPhone Dev Center の指示に従って)、"Release" 構成のコピーを作成し、"Distribution" という名前を付けてから、このアクティブな構成でプロジェクトをビルドする必要があります。ターゲットの情報ウィンドウでデバッグ構成と配布構成の「ヘッダー検索パス」を確認すると、(両方の構成で) 次のように設定されている値の違いに気付きました。

${BUILD_STYLE}-${PLATFORM_NAME}/usr/local/include

その結果、${BUILD_STYLE}-${PLATFORM_NAME} が各構成の「Debug-iphoneos」および「Distribution-iphoneos」に置き換えられました。静的ライブラリの基本クラスはすべて「include」フォルダーに格納されていましたが、「Distribution-iphoneos」フォルダーはありませんでした。

これは、メイン アプリのプロジェクトで行ったように、静的 lib プロジェクトに「ディストリビューション」構成を追加しなかったためです (そうしなければならないことを知りませんでした)。問題を解決するために、同じ構成のみを追加しました。静的 lib プロジェクトで、それをビルドしました。

要約すると、参照されている静的ライブラリのクラスを使用するプロジェクトに新しい構成を追加する場合は、静的ライブラリ プロジェクトにも同じ構成を追加してビルドを実行します。このようにして、メイン プロジェクトは基本クラスを見つけることができます。

たぶん、これは実際には基本的なものです。申し訳ありませんが、言語(およびXCode)を学習しているだけです:)。

アレックスに再び感謝します。

よろしく

于 2009-09-18T21:30:54.453 に答える
3

デバッグ構成のビルド オプションを確認します。たとえば、Debug 構成のヘッダー検索パスは、Distribution 構成とは異なる場合があります。メニューProject > Edit Project Settingsを選択し、次のように入力Header Search Pathsして、リストされている の設定を確認しますConfiguration。構成間で何かが異なる場合は、両方で同じにします。

于 2009-09-18T20:56:38.770 に答える
0

iPhone OS 3.0 SDK のリンカの問題について聞いたことがあります。いくつかの回避策には、プロジェクトをビルドするときに -all_load をリンカー フラグに追加することが含まれます (ただし、これには意図しない副作用が生じる可能性があります)。もう 1 つのオプションは、3.1 SDK にアップグレードすることです。これにより、これらの問題は解決されたと思います。もちろん、これはあなたの問題ではないかもしれません...

その他のヘルプ:

于 2009-09-18T21:00:19.090 に答える