Edited at

iPhoneアプリをGradleでビルドしてDeployGateで自動配布する方法

More than 5 years have passed since last update.

iOSアプリをビルドする際に、普通だったらxcodeでボタンぽちぽちしてビルドして〜ってやると思います

このやり方だと、xcodeのUIがある日突然変わった時など、結構困りますよね(自分だけ?)

そんなとき、コマンドでビルドからその先まで出来たら簡単ってこと、あると思います!

ってことで今回はGradleでビルドからDeployGateにアップロードするまでを自動化してみたいと思います


DeployGateの準備

DeployGateがつい先日iOS対応しましたね

ただ、普通にアカウント作ってもipaファイルをアップロードすることは今の所出来ません

beta programというものに入るとアップロード出来るようになります

まだアカウント持ってない人やbeta programに入ってない方は先にやっておいて下さい

https://deploygate.com/beta_program


gradleの準備

まずは今回使うビルドシステムであるgradleを準備しないと始まりませんね

OSXだとhomebrewで入ります、入れましょう

$ brew install gradle

ちなみに、今だとgradle-1.10がインストールされました


build.gradleの準備

次に、ビルドしたいiOSアプリのプロジェクト直下にbuild.gradleファイルを作ります

こんな感じになりました

ちなみに、Testっていう名前のプロジェクトです

buildscript {

repositories {
maven {
url('http://openbakery.org/repository/')
}
mavenCentral()
}
dependencies {
classpath group: 'org.openbakery', name: 'xcodePlugin', version: '0.9.+'
classpath 'com.deploygate:gradle:0.5'
}
}
apply plugin: 'xcode'
apply plugin: 'deploygate'

xcodebuild {
sdk = 'iphoneos'
target = 'Test'
scheme = 'Test'
workspace = 'Test.xcworkspace' //cocoapodを使用している時のみ指定
signing {
identity = 'iPhone Distribution: NAME (...)' //キーチェーンアクセスの証明書に載っているのを書く
mobileProvisionURI = 'file://localhost/(.mobileprovisionまでのfile path)' //プロジェクト直下にデベロッパーサイトからダウンロードしたTest.mobileprovisionを置いておくと便利
}
}

deploygate {
userName = 'deploygateのユーザー名'
token = 'deploygateのapi token'

apks {
ios {
sourceFile = file("ipaファイルまでのfile path")
message = "message"
}
}
}

task wrapper(type: Wrapper) {
gradleVersion = '1.10'
}

個別に詳しくはコメントで書いてあります


wrapperのダウンロード

用意したら、次にwrapperタスクを実行しましょう

これで他の人も同じバージョンのgradleを使用することが出来て便利ですね

$ gradle wrapper

以後は作成した./gradlewをgradleコマンドの変わりに使用します


ビルドの実行

さてビルドをしましょう!

$ ./gradlew codesign

これで問題なければipaファイルが作成されます!

そのfile pathをdeploygate内のsourceFileに書きましょう

これで以後、このように一発でDeployGateにアップロード出来ます

$ ./gradlew codesign uploadDeployGate

便利!!!!!!!!!!!!!!!!!!


おわりに

build.gradle内のコメントにも書いてありますが、テスト端末が増えて来てUDIDが増えてくると.mobileprovisionの管理が大変になってくる気がします

そんな時はプロジェクト直下に.mobileprovisionを置いておき、UDIDが増減して新しくなるたびに上書きして保存すれば常に一個で管理出来るので便利かなと思いました

あと、今回使った便利なgradleプラグインのgradle-xcodePluginにDeployGateも組込みたいですね


参考

https://github.com/openbakery/gradle-xcodePlugin


https://github.com/DeployGate/gradle-deploygate-plugin


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


ipaファイル生成とDeployGateへのアップロードをXcode上で自動化する