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

inf*_*ero 28 android date build apk

是否可以以编程方式读取构建我的Android apk的日期?我在PackageInfo类中找不到任何东西.

我想要使​​我的应用程序的beta版本到期,最简单的方法是读取这样的日期并在修复预定日期之后将其过期,因此我不必更新代码,因为我构建和部署了一段时间测试版.

fat*_*ire 50

自从被问到这个问题已经有一段时间了,但这是我使用Android Studio w/gradle做的方式....

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)"
            }
        }
    }
}    
Run Code Online (Sandbox Code Playgroud)

(注意," 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);
}
Run Code Online (Sandbox Code Playgroud)

因此,要在您的应用中访问构建日期....

Date buildDate = BuildConfig.BUILD_TIME;
Log.i("MyProgram", "This .apk was built on " + buildDate.toString());
Run Code Online (Sandbox Code Playgroud)

(您可以使用SimpleDateFormat格式化日期.)

希望这是有帮助的.

  • 谢谢。它运作得很好。 (2认同)