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なので、判別が必要。)
他の似たようなプラグインと違うところは?
- 前述のデバッグビルドかどうか分かる。
- 何かメソッドを呼び出さなくても 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 |