8

iOSアプリ公開のビルド->アーカイブ->送信プロセスを簡素化しようとしています。フレームワークはほぼ同じですが、アートワークと構成の設定が異なる50を超えるモバイルアプリがあります。

私は通常、各プロジェクトをxcode 4.2でロードし、xcode GUIを使用して通常の方法でビルド->アーカイブ->送信しますが、現在50を超えるアプリがあり、更新をプッシュするたびにこのプロセスは非常に面倒です。

そうは言っても、私はシェル関数を使用してこのプロセスを高速化しようとしています。たくさんの調査を行ったところ、xcodebuild(Reidの回答を参照)は機能するはずですが、次のエラーが発生するため、アーカイブオプションが機能しません。

unsupported build action 'archive'

だから私は次のように書いた:

# $1 should be a date like: 2012-07-17
# $2 should be a time like: 10.31AM
# $mybase will be the current directory at the time the function was called
# so make sure to cd into the folder containing the xcode project folders first

function xcodeArchive {
    mkdir ~/Library/Developer/Xcode/Archives/$1
    mybase=$PWD
    for x in `ls`
    do
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/dSYMs
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/Products
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/Products/Applications
        cd $mybase/$x
        xcodebuild
        #read -p "Press [Enter] to continue"
        cd $mybase/$x
        cp $x/$x-Info.plist ~/Library/Developer/Xcode/Archives/$1/$x/Info.plist
        cp -r build/Release-iphoneos/$x.app.dSYM ~/Library/Developer/Xcode/Archives/$1/$x/dSYMs/$x.app.dSYM
        cp -r build/Release-iphoneos/$x.app ~/Library/Developer/Xcode/Archives/$1/$x/Products/Applications/$x.app
        cd ~/Library/Developer/Xcode/Archives/$1/
        mv $x $x\ $1\ $2.xcarchive
        cd $mybase
    done
}
export -f xcodeArchive

これを.bash_profileに入れると、正しい「Info.plist」をコピーしておらず、どこからコピーするか、またはどのように生成するかがわからないことを除いて、すべてが期待どおりに正しく実行されます。だから今私は立ち往生しています。

Xcodeはアーカイブを認識しますが、オーガナイザーの「不明なスキーマ」と「名前のないアーカイブ」の下にアーカイブを一覧表示します。

正しいInfo.plistを取得するための今に関するヘルプは大歓迎です。

また、スクリプトを改善する方法や、これらのiOSアプリをバッチビルドおよびアーカイブするためのより効率的な方法に関する推奨事項も歓迎します。

ノート:

  • Xcode 4.2を超えてアップグレードすることはできません。これは、(私が理解しているように)まだ入手できないOS X 10.7+(会社のコンピューター)が必要なためです。

  • 私はまだbash/shellの初心者なので、上記の醜いコード/練習についてお詫びします。

  • また、これは公式アプリの提出用であり、アドホックなどではありません。

よろしくお願いします。

4

2 に答える 2

13

archive コマンドで同じ問題が発生し、Google でこの質問を見つけました。次のビルド コマンドでは失敗します。

xcodebuild -verbose -project $ProductName.xcodeproj -target $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"

それでも、次のビルド コマンドで成功します。

xcodebuild -verbose -project $ProductName.xcodeproj -scheme $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"

唯一の違いは、ビルドするターゲットの代わりにスキームを指定することです。この行動に合理的な理由がある場合、私はそれを聞くのを楽しみにしています.

Mac OS X 10.7.5 で XCode 4.5.1 を実行しています

于 2012-10-24T21:21:00.037 に答える
1

OK、うまくいく解決策を見つけました。さらに多くの検索と多くの推測とチェックを行った後、xcodebuild で「アーカイブ」オプションを引き続き使用できることがわかりました。ワークスペースとスキームを指定するだけでよく、以前は正しく実行していなかったようです。動作します。

したがって、同様のソリューション (xcode プロジェクトをバッチ アーカイブする) を探している人のために、ここに私の機能があります。

# $mybase will be the current directory at the time the function was called
# so make sure to cd into the folder containing the xcode project folders first

function xcodeArchive {
    mybase=$PWD
    for x in `ls`
    do
        cd $mybase/$x
        xcodebuild -workspace $x.xcodeproj/project.xcworkspace -scheme $x archive
        cd $mybase
    done
}
export -f xcodeArchive
于 2012-07-20T15:14:18.807 に答える