23
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CordovaでのGradleによるiOS Xcode buildからの〜testFlight!!! 日本語のプロジェクト名もOK

Last updated at Posted at 2015-02-01

Cordovaによるプロジェクトを進めているが、一つ困ったことがあった。

Xcodeのビルドが面倒なのよ。。。(笑

面倒な理由が以下の例

  • 日本語でプロジェクト名が作れない。・・・Buildさえ出来ないからね。。。
  • なんか、色々とAppleに引きずられて、自動ビルドとかの文化が無いんじゃないの?
  • コマンドラインツールもあるのでshellでなんとかなりそうだけど、コマンドもカオスだよね
  • AdHocリリースするのは良いんだけど、いちいちプロビジョニングとか、開発者に渡さないとならんし、めんどくせぇ。。。
  • まあ、その他諸々。

で、いろいろ調べましたよ。うん、いろいろと。

Gradleの Xcode Build プラグインを作ってくれてる、神な人が・・・!

素晴らしすぎます!
testFlightや、HockeyAppなどにも対応してるので、
gradleコマンドで、一発でAdHocがリリースできます。
※ 残念ながら、testFlightは2015/2/26で終了・・・現在iTunes Connect版を作成中?みたい

ここに、アプリ名や、BundleIDなどの設定をすれば、自由にコントロールできる。

ミニマムだと、こんな感じですかねー(確認はしてないので、調整して下さい)
これを、Cordovaなら、/platforms/ios/build.gradle として保存します。

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

xcodebuild {
    sdk = 'iphoneos'
    target = 'target-project'
    scheme = 'target-project'
    configuration = 'Debug'
    sdk = 'iphoneos'
    signing {
        identity = 'jp.hoge.target-project'
        certificateURI = 'file://localhost/target-project/platforms/ios/Development.p12'
        certificatePassword = signingCertificatePassword // e.g. 'secret'
        mobileProvisionURI = 'file://localhost/target-project/platforms/ios/Development.mobileprovision'
    }

    infoplist {
        bundleIdentifier = 'テスト用のBundleID'
        bundleDisplayName = 'テスト用のアプリ名(日本語名でもOK)'
        version = 0.0.1 // 適当に日付とかで組み立てればOK
    }
    
    testflight {
        apiToken = 'testFlight API Token'
        teamToken = 'testFlight team Token'
        notes = 'Release notes for the build'
    }
}

さらに、gulp.jsによるスクリプトと組み合わせるよー

これで、本体ビルドして、gradleを自動実行させることが可能になりました。

まずは準備。次のフォルダを用意します。
src/platforms/ios

このフォルダに、次のファイルをコピー

Development.p12 // CodeSignの鍵
Development.mobileprovision // CodeSignのプロビジョニングファイル
build.gadle // 上記のxcode buildタスクの入った、gradleファイル

このフォルダをリポジトリ管理して、再配布を簡略化してます。
セキュリティ的にどーのこーのとかいうプロジェクトだったら、
どこかセキュリティ的にもーまんたいなサイトに置いておけば良いんじゃ無かろうかと。

そして、Gulpの準備
必要なモジュールをインストールして。。。

npm install --save-dev run-sequence
npm install --save-dev gulp-shell

こちらが、ミニマムなコード

var runSequence = require('run-sequence');
var shell = require("gulp-shell");

////////////////////
// gradle build ios
////////////////////
gulp.task('gradle-ios', function () {
    runSequence('build', 'cordova-build-ios', 'platforms-ios-copy', 'gradle-build-ios');
});
// build ios platform.
gulp.task('cordova-build-ios', shell.task([
    'cordova build ios'
]));

// copy local platform.
gulp.task('platforms-ios-copy', function () {
    return gulp.src(['src/platforms/ios/**/*.*'])
        .pipe(gulp.dest('platforms/ios'));
});

// packaging Android
gulp.task('gradle-build-ios', shell.task([
    'cd ./platforms/ios;gradle --daemon integration' // integrationはGradleタスクなので、プロジェクトに応じて設定してね。 
]));

そして、たぶん、みんなが幸せになれるコマンドを叩く。
gulp gradle-ios

神プラグインに感謝。

23
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?