build.gradle文件包含以下部分。如何从Android应用 MainActivity
中读取 android.defaultConfig.versionCodeandroid {
defaultConfig {
applicationId "com.gatta.e.gatta"
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
}
答案 0 :(得分:4)
您无需读取gradle文件即可获取版本代码。以下是活动中的直接方式:
private PackageInfo getPackageInfo() {
PackageInfo pi = null;
try {
pi = this.getPackageManager().getPackageInfo(
this.getPackageName(), PackageManager.GET_ACTIVITIES);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.e("yourTagHere", e.getMessage());
}
return pi;
}
例如,在onCreate(...)
方法中使用它来获取版本代码:
String versionCode = "" + getPackageInfo().versionCode;
有关PackageInfo
班级here的更多信息。并快速描述了该课程:
有关包裹内容的整体信息。这对应于从AndroidManifest.xml收集的所有信息。
答案 1 :(得分:2)
我认为您无法读取build.gradle文件中的任何属性,但是有一个API可以获取应用程序版本代码和版本名称。
这是我一直使用的实用工具类。
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
/**
* Utility class used in getting application version code and version name.
*/
public class AppUtils {
/**
* @return Application's version code from the PackageManager.
*/
public static int getAppVersionCode(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionCode;
} catch (NameNotFoundException e) {
// should never happen
throw new RuntimeException("Could not get package name: " + e);
}
}
/**
* @return Application's version name from the PackageManager.
*/
public static String getAppVersionName(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionName;
} catch (NameNotFoundException e) {
// should never happen
throw new RuntimeException("Could not get package name: " + e);
}
}
}
答案 2 :(得分:1)
以上属性是特定于构建配置的。您可以在java文件中将它们作为BuildConfig.propertyName引用,因为所有构建配置变量都会自动转换为文件BuildConfig.java中的静态资源。 例如applicationId可以用作
BuildConfig.APPLICATION_ID
在您的情况下,您可以将versionCode引用为:
BuildConfig.VERSION_CODE
如果你想拥有自定义BuildConfig,你也可以这样做: 在你的build.gradle默认配置/风味部分使用:
buildConfigField "variable type", "variable name", new Type(var name)
e.g。
multiDexEnabled false
buildConfigField "Boolean", "MY_FIELD", new Boolean(multiDexEnabled).toString
我希望它有所帮助。