gpt4 book ai didi

android - 如何以编程方式读取我的 Android apk 的构建日期?

转载 作者:IT老高 更新时间:2023-10-28 11:10:47 24 4
gpt4 key购买 nike

是否可以通过编程方式读取我的 Android apk 的构建日期?我在 PackageInfo 类中找不到任何内容。

我想使我的应用程序的 beta 版本过期,最简单的方法是读出这样的日期并在几天的修复前使其过期,因此我不必在每次构建时更新代码并部署测试版。

最佳答案

注 6/1/2020:Android Studio 4.1 Canary 10 w/Gradle >= 6.5 已更新说明。如果您看到“Unsupported BuildConfig type : java.util.Date 错误,请向下滚动以进行修复。

[旧指令]

build.gradle 中,您的每个 build types应该有一个 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”的newer version。)

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 随意格式化日期。)

更新 6/1/2020 -- 在 Android Studio 4.1 Canary 10 w/Gradle 6.5 中,上述解决方案导致“Unsupported BuildConfig type : java.util.Date”错误。一个 slight variation应改为使用上述内容:

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 随意格式化日期。 .

希望这有帮助。

关于android - 如何以编程方式读取我的 Android apk 的构建日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com