Edited at

iPhoneアプリをmakeコマンド一発でビルドしてDeployGateで自動配布する方法

More than 5 years have passed since last update.


2014/04/23追記

別記事にshenzhenでipaファイル作成する方法を書きました。

↑のほうが簡単です。


DeployGateでiOSアプリを配布できるようになりましたが、配布の度にGUIからちまちまアーカイブするのはだるいです。

だるくて仕事やる気がなくなりSNSをダラダラ眺めていたら、make adhocだけで.ipaをサッと作るという記事が流れてきたのでDeployGateで配布するところまで出来るようにしてみました。

まず、AdHoc配布用にプロビジョニングプロファイルを作成します。

iOS Developer CenterのCertificates, Identifiers & Profilesから、

[Provisioning Profiles] > [Distribution]でAd Hocのプロビジョニングプロファイルを作成してください。

作成したらダウンロードします。

ダウンロードしたhoge.mobileprovisionは、~/Library/MobileDevice/Provisioning\ Profiles/に放り込んでおきます。

次に、Makefileを作成します。

Makefileの作り方は参考にしたページほぼそのままです。

自分の場合、こんな感じになりました。

プロジェクト名がhogeの場合、


Makefile

default:

xcodebuild -sdk iphoneos -target hoge -configuration Release build

adhoc:
if [ -a build]; then rm -R build; fi;
xcodebuild -sdk iphoneos -target hoge -configuration Release clean build CODE_SIGN_IDENTITY="iPhone Distribution" PROVISIONING_PROFILE="12345678-FFFF-0000-9999-012345678901"
xcrun -sdk iphoneos PackageApplication build/Release-iphoneos/hoge.app -o $(PWD)/build/hoge.ipa --embed hoge.mobileprovision
dgate push k_kinukawa build/hoge.ipa


になります。

PROVISIONING_PROFILE=に続く文字列は、hoge.mobileprovisionをテキストエディタで開き、UUIDという項目をコピペします。


hoge.mobileprovision

<key>UUID</key>

<string>12345678-FFFF-0000-9999-012345678901</string>

UUIDを指定した.mobileprovisionが~/Library/MobileDevice/Provisioning\ Profiles/に存在しないと、ビルド時にエラーが出ます。

Check dependencies

Code Sign error: No matching provisioning profile found: Your build settings specify a provisioning profile with the UUID “12345678-FFFF-0000-9999-012345678901”, however, no such provisioning profile was found.
CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 7.0'

** BUILD FAILED **

The following build commands failed:
Check dependencies
(1 failure)
make: *** [adhoc] Error 65

最後の一行でDeployGateにipaファイルを投げています。

DeployGateでプロジェクトは作成しておいてください。

dgateコマンドをインストールしておく必要があります。

#macの場合

$curl https://deploygate.com/install.sh | /bin/sh

これでmake adhocすればビルド後にアーカイブ、DeployGateへ送信して自動配布、までが1コマンドで実行できるようになりました。

$ make adhoc

if [ -a build]; then rm -R build; fi;
/bin/sh: line 0: [: missing `]'
xcodebuild -sdk iphoneos -target hoge -configuration Release clean build CODE_SIGN_IDENTITY="iPhone Distribution" PROVISIONING_PROFILE="12345678-FFFF-0000-9999-012345678901"
Build settings from command line:
CODE_SIGN_IDENTITY = iPhone Distribution
PROVISIONING_PROFILE = 12345678-FFFF-0000-9999-012345678901
SDKROOT = iphoneos7.0

=== CLEAN TARGET hoge OF PROJECT hoge WITH CONFIGURATION Release ===
....
....
....
** BUILD SUCCEEDED **

xcrun -sdk iphoneos PackageApplication build/Release-iphoneos/hoge.app -o /Users/kenji.kinukawa/hoge/build/hoge.ipa --embed hoge.mobileprovision
dgate push k_kinukawa build/hoge.ipa
Push app file successful!

Name : hoge
Owner : k_kinukawa
Package : com.kkinukawa.hoge
Revision : 3
URL : https://deploygate.com/users/k_kinukawa/apps/com.kkinukawa.hoge?key=****************************************

jenkinsと組み合わせると更に便利そうですね!