0

アプリケーションがいつビルドされたかを実行時に Android アプリケーションに認識させたい。私は Gradle を初めて使用しますが、非常に柔軟性があり、外部ヘルパー プログラムやトークンの置換なしでこれを達成できる可能性があると思います。

私のアイデアは、ある種の Gradle ビルド前タスクでタイムスタンプ文字列を計算することでした。次に、この文字列をシステム プロパティとして Java アプリケーションに渡します。例えば:

def timestamp = ...
systemProperty 'my.build.timestamp' timestamp

次に、Java で実行時にタイムスタンプを取得します。

String iWasBuiltAt = System.getProperty("my.build.timestamp");

これを達成するために必要なGradleコードを書くにはどうすればよいですか? より具体的には、どこで/どのようにカスタム タスクを呼び出すか、および上記のような方法でシステム プロパティを追加することは可能ですか。

4

1 に答える 1

4

以下は、buildTime定数を BuildConfig クラスに追加します (このクラスはビルド システムによって自動生成されます)。

defaultConfig {
    buildConfig  "public final static String buildTime = \"" + new Date() + "\";"
}

任意の Android Java ファイルで、次のように使用できます (ビルド構成は、インポートする必要があるアプリの既定のパッケージにあります)。

Log.v("foo", "buildtime:" + BuildConfig.buildTime);

Groovy 日付フォーマット関数を使用して、日付を別のフォーマットにできます。これを変更して、エポックミリ秒を保存し、Java で解析することもできます。

defaultConfigは、これがすべてのビルドに追加されることを意味しますbuildType

ビルド タイプなどの詳細については、defaultConfigこちらをご覧ください: http://tools.android.com/tech-docs/new-build-system/user-guide

アプリでこれを知りたい理由がわかりません。バージョン管理システムのリビジョン番号またはハッシュを使用する方が、日付よりも理にかなっていると思います。

于 2013-10-11T20:37:04.367 に答える