我正在使用一个库,我想要提取正在使用它的应用程序的应用程序版本,一切都很好用反射
Class.forName(context.getPackageName() + ".BuildConfig");
但是......然后......我把应用程序分成了各种风格,图书馆现在无法找到BuildConfig类,它总是抛出" Class not found Exception" ...调试我注意到我想要它的版本名称是默认项目ID或我的类所在的物理名称,而不是风味应用程序ID。
这是我的gradle配置。
productFlavors {
development {
applicationId "com.dev.testit"
buildConfigField 'String', 'API', '"api"'
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName '1.N'
}
production {
applicationId "com.testit"
buildConfigField 'String', 'API', '"prod"'
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName '1.S'
}
}
有办法吗?
谢谢
答案 0 :(得分:0)
public static String getAppVersionName(Context context) {
if (context == null)
return null;
PackageManager packageManager = context.getPackageManager();
try {
PackageInfo info = packageManager.getPackageInfo(context.getPackageName(), 0);
return info.versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
请参阅doc here。