LoginSignup
10
5

More than 5 years have passed since last update.

Cordova向けビルド情報プラグイン(Cordovaでデバッグビルドかを判断するプラグイン)

Last updated at Posted at 2016-04-24

Apache Cordovaでビルド情報を扱うためのプラグインをVer2.0.1にして公開しました。
cordova-plugin-buildinfoです。

Ver2.0.1では何が変わった?

海外の方からPullRequestがあり、

  • Windowsプラットフォームのサポート
  • ビルド日時、インストール日時の取得

を追加しました。

何ができるの?

BuildInfo.packageName などでビルド時の情報を取得することができます。

何故作ったの?

バージョン情報やパッケージIDを取得するプラグインはいくつかあるのですが、 デバッグビルド なのか リリースビルド なのかを判断できるプラグインを見つけられなかったので作る事にしました。

document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady() {
    if (BuildInfo.debug) {
        alert('Debugだよ');
    } else {
        alert('Debugじゃないよ');
    }
}

ということができます。

そもそも、デバッグビルドかどうかを知る必要があるの?

デバッグの時とリリースの時で接続先サーバを替えたり、デバッグの時だけ表示させたいメニューがあったり・・・
ビルドの状態がどちらなのかは結構重要だったりする。

あと、iOSに対してPUSHをしようとすると

ビルド サーバから接続するときに使う証明書 サーバの接続先
リリースビルド APNs Production iOS証明書 Production server
デバッグビルド APNs Development iOS証明書 Development server

と言う感じでPUSHを送る時にビルドによって分ける必要があったので、一々サーバ側の情報とかを切り替えて対応するのが面倒になってきた。
( 今は APNs Provider API で HTTP/2 でのAPIが提供されていて、SandboxでもProductionでも、どちらでも1つの証明書でOKみたいだけど… まだ、Binary Provider APIなので、判別が必要。)

他の似たようなプラグインと違うところは?

  1. 前述のデバッグビルドかどうか分かる。
  2. 何かメソッドを呼び出さなくても BuildInfo オブジェクトのプロパティとして deviceready イベントが発生した時点で情報を持っている

案外、devicereadyイベントが発生した時点でプロパティとして情報を持っているのは良い感じだと思ってます。

他の似たようなプラグインでは、メソッドを呼び出してコールバック関数で受け取るっていう感じになっていたので、

function onDeviceReady() {
  $('#version').text(BuildInfo.version);

  if (BuildInfo.debug) {
    // Debug時の処理
  }
}

とできるところが…

var isDebug = false;

function onDeviceReady() {
  OtherPlugin.getVersion(function (ver) {
    $('#version').text(ver);
  });

  OtherPlugin.isDebug(function (debug) {
    if (debug) {
      // Debug時の処理(BuildInfoとは違うタイミングで発生)
      // 後で即座に参照できるように確保
      isDebug = debug;
    }
  });
}

と、コールバック関数になり非同期を上手く使わないといけないコードになってしまいます。


以下、README.mdの日本語版

cordova-plugin-buildinfo

このプラグインは、BuildInfoをグローバルのオブジェクトとして定義します。

BuildInfoは deviceready イベントが発火した時点で有効になっています。

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    console.log('BuildInfo.packageName    =' + BuildInfo.packageName);
    console.log('BuildInfo.basePackageName=' + BuildInfo.basePackageName);
    console.log('BuildInfo.displayName    =' + BuildInfo.displayName);
    console.log('BuildInfo.name           =' + BuildInfo.name);
    console.log('BuildInfo.version        =' + BuildInfo.version);
    console.log('BuildInfo.versionCode    =' + BuildInfo.versionCode);
    console.log('BuildInfo.debug          =' + BuildInfo.debug);
    console.log('BuildInfo.buildType      =' + BuildInfo.buildType);
    console.log('BuildInfo.flavor         =' + BuildInfo.flavor);
    console.log('BuildInfo.buildDate      =' + BuildInfo.buildDate);
    console.log('BuildInfo.installDate    =' + BuildInfo.installDate);
}

インストール

cordova plugin add cordova-plugin-buildinfo

サポートプラットフォーム

  • Android
  • iOS
  • Windows

プロパティ

  • BuildInfo.packageName
  • BuildInfo.displayName
  • BuildInfo.name
  • BuildInfo.version
  • BuildInfo.versionCode
  • BuildInfo.debug
  • BuildInfo.buildType
  • BuildInfo.flavor
  • BuildInfo.buildDate
  • BuildInfo.installDate
  • BuildInfo.windows
    • logo
    • version

BuildInfo.packageName

Application IDをpackageNameとして取得します。

Platform Value Type
Android Package Name String
iOS Bundle Identifier String
Windows Identity name String

BuildInfo.basePackageName

Androidのみ。

BuildConfigクラスのpackageNameを取得します。

ビルドタイプやFlavorを利用すると、config.xmlのwidget要素で指定したidとは異なるパッケージ名を指定できるため、BuildConfigクラスが属するパッケージ名を取得するためのプロパティです。
(config.xmlのwidget要素にあるid属性と同じになるはずです)

Platform Value Type
Android BuildConfigクラスにあるパッケージ名 String
iOS Bundle Identifier(BuildInfo.packageNameと同一) String
Windows Identity name(BuildInfo.packageNameと同一) String

BuildInfo.displayName

アプリのホーム画面での表示名を取得します。

Platform Value Type
Android Application Label String
iOS CFBundleDisplayName String
Windows AppxManifest.xmlのVisualElements要素にあるDisplayName属性 String

BuildInfo.name

アプリの名前を取得します。
(iOSのみ。Androidでは、displayNameと同一になります)

Platform Value Type
Android Application Label(BuildInfo.displayNameと同一) String
iOS CFBundleName String
Windows Windows Store display name String

BuildInfo.version

バージョンを取得します。

Platform Value Type
Android BuildConfig.VERSION_NAME String
iOS CFBundleShortVersionString String
Windows Major.Minor.Build 例) "1.2.3" String

BuildInfo.versionCode

Version Codeを取得します。
AndroidではINT型で提供されます。

Platform Value Type
Android BuildConfig.VERSION_CODE int
iOS CFBundleVersion string
Windows Major.Minor.Build.Revision 例) "1.2.3.4" String

BuildInfo.debug

デバッグビルドかどうかを取得します。

Platform Value Type
Android BuildConfig.DEBUG Boolean
iOS defined "DEBUG" is true Boolean
Windows isDevelopmentMode is true Boolean

BuildInfo.buildType

ビルドタイプを取得します。(AndroidおよびWindowsのみ)

Platform Value Type
Android BuildConfig.BUILD_TYPE String
iOS empty string String
Windows "release" or "debug" String

BuildInfo.flavor

フレーバーを取得します。(Androidのみ)

Platform Value Type
Android BuildConfig.FLAVOR String
iOS empty string String
Windows empty string String

BuildInfo.buildDate

Dateオブジェクトとしてビルド日時を取得します。

注意:

  • Aandroid: BuildInfo.gradeファイルをAndroidプロジェクトに追加します。
    BuildInfo.gradeファイルは、BuildConfigクラスに_BUILDINFO_TIMESTAMPというプロパティを追加します。
  • Windows: buildinfo.resjsonファイルをWindowsプロジェクトのstringsフォルダに追加します。
    また、buildinfo.resjsonファイルはCordovaApp.projitemsファイルに追記されたタスクよにりビルド実行時に書き換えられます。
Platform Value Type
Android BuildConfig._BUILDINFO_TIMESTAMP value Date
iOS メインバンドルのexecutionPathから取得したInfo.plistの更新日時 Date
Windows 文字列リソースの "/buildinfo/Timestamp" 値を返します Date

BuildInfo.installDate

Dateオブジェクトとしてインストール日時を返します
Get the install date and time in the Date object returns.

Platform Value Type
Android PackageInfoのfirstInstallTimeプロパティ Date
iOS documentディレクトリの作成日時 Date
Windows Windows.ApplicatinoModel.Package.currentのinstalledDateプロパティ Date

BuildInfo.windows

Windowsのみ。

Windowsの追加情報を格納しています。

Platform Value Type
Android (未定義) undefined
iOS (未定義) undefined
Windows Object Object
Property name Value Type
architecture Windows.ApplicationModel.Package.current.id.architecture integer
description Windows.ApplicationModel.Package.current.description String
displayName Windows.ApplicationModel.Package.current.displayName String
familyName Windows.ApplicationModel.Package.current.id.familyName String
fullName Windows.ApplicationModel.Package.current.id.fullName String
logo Object Object
publisher Windows.ApplicationModel.Package.current.id.publisher String
publisherId Windows.ApplicationModel.Package.current.id.publisherId String
publisherDisplayName Windows.ApplicationModel.Package.current.publisherDisplayName String
resourceId Windows.ApplicationModel.Package.current.id.resourceId String
version Windows.ApplicationModel.Package.current.id.version Object

BuildInfo.windows.logo

Property name Value Type
absoluteCannonicalUri Windows.ApplicationModel.Package.logo.absoluteCanonicalUri String
absoluteUri Windows.ApplicationModel.Package.logo.absoluteUri String
displayIri Windows.ApplicationModel.Package.logo.displayIri String
displayUri Windows.ApplicationModel.Package.logo.displayUri String
path Windows.ApplicationModel.Package.logo.path String
rawUri Windows.ApplicationModel.Package.logo.rawUri String

BuildInfo.windows.version

Property name Value Type
major Windows.ApplicationModel.Package.current.id.version.major integer
minor Windows.ApplicationModel.Package.current.id.version.minor integer
build Windows.ApplicationModel.Package.current.id.version.build integer
revision Windows.ApplicationModel.Package.current.id.version.revision integer
10
5
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
10
5