移至Gradle后,无法在代码中获取版本名称

时间:2014-10-10 13:38:07

标签: java android gradle

我刚将我的一个Android项目移到了Gradle上,根据IDE内部的建议和在线,我已将所有配置(min / max sdk,版本名称/代码等)移动到build.gradle中文件。 现在,客户已经报告了一个错误,他通常会看到产品中的版本名称和代码没有任何内容。

检查后,我发现从android:versionCode=""删除android:versionName=""AndroidManifest.xml标记后,提取这些值的常用方法已停止工作。我已经证实,当这些值存在时,它会起作用。

现在我一直在尝试搜索一种提取这些相同值以在代码中使用的方法,但我还没有找到任何对此行为的引用(其中这不起作用)。

我以前用来获取值的代码就是简单地从PackageManager中提取它们

try {
   PackageInfo pInfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0);
   return pInfo.versionName +  " Build " + pInfo.versionCode;
} catch(PackageManager.NameNotFoundException e){
   e.printStackTrace();
}

所有提示,技巧或解决方案均受到赞赏。

1 个答案:

答案 0 :(得分:4)

使用BuildConfig类获取build.gradle文件中定义的版本代码:

Log.e(TAG, BuildConfig.VERSION_NAME + " Build " + BuildConfig.VERSION_CODE);