4

アプリ内購入の pkg ファイルの作成を自動化する bash スクリプトを作成しようとしています。

私は、スクリプトがすべてのアプリ内購入 xcodeproj プロジェクトを正常に作成し、このコマンドを使用してそれらをアーカイブする時点にいます

xcodebuild -scheme $nameOfProject archive

$nameOfProjectは、ループ内で、アプリ内購入に対応する xcodeproj ファイルの名前を保持する変数です。

これを行った後、Xcode のアーカイブ部分を開き、すべてのアーカイブを手動でエクスポートして、iTC にアップロードする必要がある pkg ファイルを作成する必要があります。

これを端末から自動的に行うために使用できるコマンドはありますか?

同じ解決策を提供するもう1つのことは、xcarchiveファイルをpkgファイルに変換する方法ですか?

4

1 に答える 1

8

productbuild「アプリ内購入コンテンツ」プロジェクトでいくつかのグーグルとテストを行った後、使用する必要があるのはコマンドラインツールだと思います。私自身は iOS 開発者なので、インストーラーを作成した経験はありませんが、アプリ内コンテンツの「pkg」ファイルはこのコマンド ライン ツールを使用して作成されていると確信しています。

正しいパラメータを見つけるには、 https://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/OSXWorkflowGuide/DistributingApplications/DistributingApplications.html#//apple_ref/doc/uid/TP40011201-CH5-を参照してください。 SW1

またはman

編集:
XCodeが何をするかをテストするために、簡単なプロジェクトを作成しました
計画

そして、私はそれをアーカイブしました: アーカイブの内容

次に、簡単なプログラムを作成しました。それを と呼びましょうArgumentLogger。コードは次のとおりです。

int main(int argc, const char* argv[]) {
    //Open a file for logging 
    FILE* file = fopen("/Users/Sulthan/Desktop/log.txt","a+");

    for (int i = 0; i < argc; i++) {
        //log all parameters
        fprintf(file, "%s\n", argv[i]);
    }

    //end
    fclose(file);
    return 0;
}

例を挙げましょう - bash コマンドの場合:

ArgumentLoggger --arg test1 test2 test3

log.txt含まれます

ArgumentLogger
--arg
テスト1
テスト2
テスト3

/usr/bin/productbuildでは、このプログラムに置き換えてみましょう

sudo mv /usr/bin/productbuild /usr/bin/productbuild_old
sudo mv ArgumentLogger /usr/bin/productbuild

次に、XCode で [配布] をクリックします。 分配します そしてパッケージをエクスポートします。

log.txt現在含まれている

/usr/bin/productbuild
- コンテンツ
/var/folders/v5/wwrmfpqx2mx1q5sf67_6vgg00000gn/T/FDCEA38E-1EF6-490B-8C30-8B0675C56CC8-47322-00014822C462D3CD/TestContent
/var/folders/v5/wwrmfpqx2mx1q5sf67_6vgg00000gn/T/FDCEA38E-1EF6-490B-8C30-8B0675C56CC8-47322-00014822C462D3CD/TestContent.pkg

これで、XCode が行ったことを正確に確認できます。

2番目のファイルは結果のファイルで、さらに何か手を加えているかどうかはわかりませんが、 で展開すると、 XCodeから作成されpkgutilたものと同じ内容になっているようです。pkg

最初のファイルは、ファイルから直接取得されたように見えるディレクトリxcarchiveです。その内容を見てみましょう
一時ディレクトリの内容

編集 2:
要約すると、bashスクリプトは次の行に沿ったものにする必要があります。

CONTENTS_DIR = $( find "$nameOfProject.xcarchive" -name "InAppPurchaseContent" -type d )
PKG_FILE = "$nameOfProject.pkg"

productbuild --content "$CONTENTS_DIR" "$PKG_FILE"
于 2013-03-30T20:52:01.720 に答える