当前位置: 首页 > 工具软件 > Buildapp > 使用案例 >

【Android】获取app的打包时间

苍德寿
2023-12-01

分享是让牛逼的人更牛逼。
做有质量技术交流平台,闲话少说~
欢迎进群交流,群号 414302560
初学者勿扰,谢谢~

很多时候,发个包给测试,明明修复了bug,但却一直在说”我这还不行”。很多时候由于版本没有变更,很难判断当前正在运行的app是不是最新的打包产物。所以如果能够在线下的版本中显示app的打包时间,这样就能节省好多不必要的沟通。

上代码。原理是获得打包签名文件的生成时间。

    /**
     * 获得app的打包时间
     * 
     * @return
     */
    private String getAppBuildTime() {
        String result = "";
        try {
            ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(),0);
            ZipFile zf = new ZipFile(ai.sourceDir);
            ZipEntry ze = zf.getEntry("META-INF/MANIFEST.MF");
            long time = ze.getTime();
            SimpleDateFormat formatter = (SimpleDateFormat) SimpleDateFormat.getInstance();
            formatter.applyPattern("yyyy/MM/dd HH:mm:ss");
            result = formatter.format(new java.util.Date(time));
            zf.close();
        } catch (Exception e) {
        }

        return result;
    }

上述方法貌似在5.0之后不好用,所以现在建议使用Gradle生成打包时间,然后再引用。核心代码如下:

buildTypes {
        release {
            buildConfigField("String", "releaseTime", "\""+new Date().format("yyyy/MM/dd HH:mm:ss")+"\"")
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    ....
  }

主要是使用buildConfigField生成打包时间。
然后使用 TextView.setText(BuildConfig.releaseTime);

 类似资料: