我刚将我的一个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();
}
所有提示,技巧或解决方案均受到赞赏。
答案 0 :(得分:4)
使用BuildConfig
类获取build.gradle
文件中定义的版本代码:
Log.e(TAG, BuildConfig.VERSION_NAME + " Build " + BuildConfig.VERSION_CODE);