我需要弄清楚如何为我的Android应用程序获取或生成一个版本号。我需要在用户界面中显示版本号。
我需要在AndroidManifest.xml文件中做一些操作吗?
我需要在AndroidManifest.xml文件中做一些操作吗?
PackageInfo pinfo = null;
try {
pinfo = getPackageManager().getPackageInfo(getPackageName(), 0);
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
int versionNumber = pinfo.versionCode;
String versionName = pinfo.versionName;
Log.e("TAG","VERSION.RELEASE {" + Build.VERSION.RELEASE + "}");
Log.e("TAG","\nVERSION.INCREMENTAL {" + Build.VERSION.INCREMENTAL + "}");
Log.e("TAG","\nVERSION.SDK {" + Build.VERSION.SDK + "}");
Log.e("TAG","\nBOARD {" + Build.BOARD + "}");
Log.e("TAG","\nBRAND {" + Build.BRAND + "}");
Log.e("TAG","\nDEVICE {" + Build.DEVICE + "}");
Log.e("TAG","\nFINGERPRINT {" + Build.FINGERPRINT + "}");
Log.e("TAG","\nHOST {" + Build.HOST + "}");
Log.e("TAG","\nID {" + Build.ID + "}");
感谢https://dev59.com/FZzha4cB1Zd3GeqPBje1#40421709
output.json
的文件,其中包含每个生成的APK文件的信息数组,包括versionName和versionCode。[
{
"apkInfo": {
"baseName": "x86-release",
"enabled": true,
"filterName": "x86",
"fullName": "86Release",
"outputFile": "x86-release-1.0.apk",
"splits": [
{
"filterType": "ABI",
"value": "x86"
}
],
"type": "FULL_SPLIT",
"versionCode": 42,
"versionName": "1.0"
},
"outputType": {
"type": "APK"
},
"path": "app-x86-release-1.0.apk",
"properties": {}
}
]
public static String getVersionName(Context context) {
PackageInfo packageInfo;
try {
packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}
return packageInfo.versionName;
}
public static int getVersionCode(Context context) {
PackageInfo packageInfo;
try {
packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}
return packageInfo.versionCode;
}
**try {
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
int versionCode = packageInfo.versionCode;
String versionName = packageInfo.versionName;
// Now, you can use versionCode and versionName as needed.
// For example, you can display them in a TextView or log them.
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}**
2023年11月
要检索VERSION_CODE
,你可以简单地使用BuildConfig
类,就像下面的代码一样:
val versionCode = BuildConfig.VERSION_CODE
BuildConfig
类,但是如果您使用的是旧版本的插件或者在您的BuildConfig类中使用自定义字段,您需要在模块的build.gradle
文件中显式启用BuildConfig。(就像在Compose项目中一样)BuildConfig
的问题,请按照以下步骤操作:build.gradle
(应用程序模块)的android块中添加以下代码。 //....
buildFeatures {
//...
buildConfig = true // add this
//...
}
//....
}
从构建
val manufacturer = Build.MANUFACTURER
val model = Build.MODEL
val versionRelease = Build.VERSION.RELEASE
从 BuildConfig
val versionCode = BuildConfig.VERSION_CODE
val versionName = BuildConfig.VERSION_NAME
只需编写这个。
XML 代码
<TextView
android:id="@+id/appversion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
初始化TextView变量
TextView appversion;
appversion = findViewById(R.id.appversion);
BuildConfig.VERSION_NAME
,只需将其作为字符串值使用即可。textview.setText("v"+BuildConfig.VERSION_NAME);
try {
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
String versionName = packageInfo.versionName;
int versionCode = packageInfo.versionCode;
//binding.tvVersionCode.setText("v" + packageInfo.versionName);
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
int versionCode = BuildConfig.VERSION_CODE;
,获取版本名使用String versionName = BuildConfig.VERSION_NAME;
。 - Lukas