Android apk がビルドされた日付をプログラムで読み取ることはできますか? PackageInfo クラスで何も見つかりませんでした。
アプリのベータ版を期限切れにしたいのですが、最も簡単な方法は、そのような日付を読み取り、数日の修正期間後に期限切れにすることです。そのため、ビルドして展開するたびにコードを更新する必要はありませんベータ版。
注 2020 年 6 月 1 日: Android Studio 4.1 Canary 10 w/Gradle >= 6.5 の手順が更新されました。" エラーが表示されている場合はUnsupported BuildConfig type : java.util.Date、下にスクロールして修正を確認してください。
[古い指示]
では、ビルド タイプbuild.gradleごとに. (これは構成の簡略化されたバージョンです。ここには他のものがある可能性がありますが、どこに配置したかを示したかったのです):buildConfigField
android {
signingConfigs {
buildTypes {
debug {
buildConfigField "java.util.Date", "BUILD_TIME", "new java.util.Date(" + System.currentTimeMillis() + "L)"
}
release {
buildConfigField "java.util.Date", "BUILD_TIME", "new java.util.Date(" + System.currentTimeMillis() + "L)"
}
}
}
}
BuildConfigField(" " は、0.8.0 ビルド システムの時点で" " の新しいバージョンであることに注意してください。)BuildConfigLine
次に gradle が assembleRelease または assembleDebug を実行するときに、以下が生成されます。
./build/source/buildConfig/releaseORdebug/com/your/project/BuildConfig.java
次に、そのBuildConfigファイル内で、次のように自動生成されたものが表示されます。
public final class BuildConfig {
public static final java.util.Date BUILD_TIME = new java.util.Date(1395794838381L);
}
したがって、アプリ内のビルド日付にアクセスするには....
Date buildDate = BuildConfig.BUILD_TIME;
Log.i("MyProgram", "This .apk was built on " + buildDate.toString());
( SimpleDateFormatを使用して、好きなように日付をフォーマットできます。)
2020 年 6 月 1 日更新-- Gradle 6.5 を搭載した Android Studio 4.1 Canary 10 では、上記の解決策を実行すると " Unsupported BuildConfig type : java.util.Date" エラーが発生します。代わりに、上記のわずかなバリエーションを使用する必要があります。
android {
signingConfigs {
buildTypes {
debug {
buildConfigField("String", "BUILD_TIME", System.currentTimeMillis().toString())
}
release {
buildConfigField("String", "BUILD_TIME", System.currentTimeMillis().toString())
}
}
}
}
2020 年 7 月 30 日更新 gradle 6.6-rc4 以降では、次の行に変更して、時刻を囲む引用符を含める必要があります。
buildConfigField("String", "BUILD_TIME", "\"" + System.currentTimeMillis().toString() + "\"")
ファイル内で、次のBuildConfigように自動生成されたものが表示されるはずです。
public final class BuildConfig {
public static final String BUILD_TIME = "1590735284503";
}
それでは、アプリ内のビルド日付にアクセスするには....
private Date buildDate = new Date(Long.parseLong(BuildConfig.BUILD_TIME));
Log.i("MyProgram", "This .apk was built on " + buildDate.toString());
以前と同様に、 SimpleDateFormatを使用して好きなように日付をフォーマットできます。
これが役に立てば幸いです。