53

iOS 8 では、アプリの拡張機能を作成するときに、それを接続するターゲットを決定する必要があります。拡張機能には、ターゲットと同じバンドル ID のプレフィックスが付きます。

  1. 後でターゲットを変更する方法はありますか?
  2. プロジェクトに 2 つ (またはそれ以上) のターゲットが含まれている場合 (たとえば、デバッグ/シミュレーター用に 1 つ、プロダクション/デバイス用に 1 つ)、拡張機能を使用する最善の方法は何ですか? 別の拡張機能を作成してコードを複製する必要がありますか (両方のターゲットに同じコードを保持するのは非常に面倒です)?
4

8 に答える 8

13

Extensionターゲットを独自のInfo.plistで複製することはできるはずですが、それ以外はできないようです。

ただし、拡張機能を作成すると、以下に示すように、Xcode はアプリのターゲットのビルド フェーズに「Embed App Extensions」を追加しますが、それを行うための UI はまだありません。

ここに画像の説明を入力

それでも、2 番目のターゲットの拡張子を作成し、.plist 以外のすべてのファイルを削除して、修正が必要なものを修正できます。手順は次のとおりです。

  • 「対象1」に「拡張1」を作成
  • 「対象2」に「拡張2」を作成
  • 「Extension 2」用に作成された、Info.plist を除くすべてのファイルを削除します。
  • 「拡張 2」ターゲットの「ビルド フェーズ」を「拡張 1」のビルド フェーズと同じにします。通常、必要な .m ファイルを「ソースのコンパイル」フェーズに追加し、リソースを「バンドル リソースのコピー」フェーズに追加します。
于 2014-10-11T01:05:18.717 に答える
1

ID ごとに複数の拡張機能を作成する必要がありますが、動的なフレームワークを作成して、各拡張機能にリンクするだけで済みます。その後、コードを複製する必要はありません。

于 2014-09-26T14:41:39.117 に答える