LoginSignup
0
1

More than 5 years have passed since last update.

NativeScriptで一発でビルド環境を切り替える

Last updated at Posted at 2017-09-05

概要

AndroidStudioでの開発では、Flavorsでデバッグ版とか開発版とか定義できて便利だったのですが、NativeScriptでは多分そのような仕組みは用意されていません。
なので、直接設定ファイルを置き換えるスクリプトを作成してみました。

内容

アプリIDを変えるには、下記のファイルを書き換える必要があります。

./package.json
./app/App_Resources/Android/app.gradle

コード

最近はWindowsでもbashが使えるようになったので、以下のようなshスクリプトを用意してみました。

switch.sh
#!/bin/sh
case "$1" in
    "stg")
    sed -E "s/applicationId = \".*\"/applicationId = \"com.hogehoge.dev\"/g" ./app/App_Resources/Android/app.gradle > ./app.gradle.tmp
    cp ./app.gradle.tmp ./app/App_Resources/Android/app.gradle
    rm ./app.gradle.tmp
    sed -E "s/\"id\": \".*\"/\"id\": \"com.hogehoge.dev\"/g" ./package.json > ./package.json.tmp
    cp ./package.json.tmp ./package.json
    rm ./package.json.tmp
    echo "switch to staging."
    ;;
    "prod")
    sed -E "s/applicationId = \".*\"/applicationId = \"com.hogehoge\"/g" ./app/App_Resources/Android/app.gradle > ./app.gradle.tmp
    cp ./app.gradle.tmp ./app/App_Resources/Android/app.gradle
    rm ./app.gradle.tmp
    sed -E "s/\"id\": \".*\"/\"id\": \"com.hogehoge\"/g" ./package.json > ./package.json.tmp
    cp ./package.json.tmp ./package.json
    rm ./package.json.tmp
    echo "switch to production."
    ;;
esac

こんな感じに置き換えてやると、

./switch stg

とした時は、com.hogehoge.dev、

./switch prod

とした時は、com.hogehogeというパッケージ名になります。
プログラム内で分岐したい場合は、

let application = require('application');
let applicationId;
if(application.android){
    applicationId = application.android.context.getPackageName();
}
if(application.ios){
    let mainBundle = utils.ios.getter(NSBundle, NSBundle.mainBundle);
    applicationId = mainBundle.bundleIdentifier;
}

みたいな感じでアプリIDが取得できますので、これを利用すれば良いと思います。
もっと良い方法があるかもしれません。

0
1
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
0
1