Cordova プロジェクトでチーム内でビルドするプラットフォームを分ける

Cordova を使っている人の多くは Android と iOS で動作するアプリを作るためだと思います。チーム開発のとき、開発者全員に Mac が回らずに Windows (もしくは Linux) での開発を強いられることも多いと思います。

Cordova は意外と不親切で、Windows (もしくは Linux) だからといって iOS プラットフォームのビルドをスキップしたりはしてくれません。残念ながらビルドの失敗します。(一応、Android プラットフォームの方が先にビルドされるようで、エラーながら Android アプリはできます)

ビルドを失敗させないためには面倒ですが、プラットフォームを意図的に指定する必要があります。

cordova build android

これを毎回行うのは意外と大変で、よく間違えてうがー! ってなります。

Cordova プロジェクトを generator-graybullet-cordova で作成するとこの問題が解決します。

generator-graybullet-cordova でもプラットフォームを引数で指定することができます。

grunt build --cordova-platforms=android

この設定は環境変数に書くこともできます。

Windows の場合は以下のようになります。

REM ビルドするプラットフォームを Android のみに絞る
set GRUNT_CORDOVA_NG_PLATFORMS=android
 
REM ビルドする (Android プラットフォームのみビルドされる)
grunt build

Mac や Linux の場合は以下のようになります。(bash のとき)

# ビルドするプラットフォームを Android のみに絞る
export GRUNT_CORDOVA_NG_PLATFORMS=android
 
# ビルドする (Android プラットフォームのみビルドされる)
grunt build

通常は面倒なので、Windows の場合はユーザー環境変数に、Mac や Linux の場合は bash_profile あたりに書いておくとよいでしょう。

この環境変数による設定は cordova コマンド用の Grunt プラグイン、grunt-cordova-ng の機能を使っていますので、プロジェクトローカルの Cordova を使うで紹介した方法で、generator-graybullet-cordova を使わずに作った Cordova プロジェクトにも適用できます。

環境変数による設定はこれ以外にもいろいろありますので、grunt-cordova-ng の README の Environment options を読んでください。プラットフォームだけでなく、ターゲットも設定できます。複数の Android 実機やエミュレーターが混在している環境では便利だと思います。

# ビルドするプラットフォームを Android のみに絞る
export GRUNT_CORDOVA_NG_PLATFORMS=android
# 二個目に起動した Android エミュレーターを使う
export GRUNT_CORDOVA_NG_TARGET=emulator-5556
 
# Android プラットフォームだけがビルドされ、emulator-5556 で実行する
grunt emulate

なぜだかはわかりませんが、Cordova は環境変数による設定をほとんど提供していません。環境変数による設定を受け付けて欲しい場合はぜひ grunt-cordova-ng を使ってみてください。

コメントを追加

Filtered HTML

  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <img>
  • 次のタグを使用してソースコード構文をハイライトすることができます。: <code>, <blockcode>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby> The supported tag styles are: <foo>, [foo].
  • 行と段落は自動的に折り返されます。

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
イメージ CAPTCHA
Enter the characters shown in the image.