如何从应用程序的(布局)XML变量中获取Manifest版本号?
我想有一种方法可以在代码的主要部分中引用项目的清单版本号。 到目前为止,我一直在做的是将String XML文件中的版本号链接到清单(@ string / Version)。 我想要做的是以相反的方式执行此操作,将字符串XML变量链接到清单中的版本。 原因? 我只想在一个位置更改版本号,即清单文件。 有没有办法做到这一点? 谢谢!
我相信这已经在这里得到解答。
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
要么
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
没有办法直接获取版本,但有两种解决方法可以完成。
版本可以存储在资源字符串中,并通过以下方式放入清单中:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.somepackage"
android:versionName="@string/version" android:versionCode="20">
可以创建一个自定义视图,并将其放入XML中。 该视图将使用它来分配名称:
context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
这两种解决方案都允许将版本名称放入XML中。 不幸的是,没有一个简单的解决方案,比如android.R.string.version
或类似的东西。
您可以在XML资源中使用versionName
,例如活动布局。 首先在app/build.gradle
使用以下代码段在android
节点中创建一个字符串资源:
applicationVariants.all { variant ->
variant.resValue "string", "versionName", variant.versionName
}
所以整个build.gradle
文件的内容可能如下所示:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '24.0.0 rc3'
defaultConfig {
applicationId 'com.example.myapplication'
minSdkVersion 15
targetSdkVersion 23
versionCode 17
versionName '0.2.3'
jackOptions {
enabled true
}
}
applicationVariants.all { variant ->
variant.resValue "string", "versionName", variant.versionName
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:support-v4:23.3.0'
}
然后你可以在XML中使用@string/versionName
。 Android Studio会将其标记为红色,但该应用程序将无问题地编译。 例如,这可以在app/src/main/res/xml/preferences.xml
:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="About"
android:key="pref_key_about">
<Preference
android:key="pref_about_build"
android:title="Build version"
android:summary="@string/versionName" />
</PreferenceCategory>
</PreferenceScreen>
链接地址: http://www.djcxy.com/p/16119.html
上一篇: How can you get the Manifest Version number from the App's (Layout) XML variables?