我想要一个引用versionName我的gradle文件中的属性的布局文件:
...
defaultConfig {
applicationId "se.test.myapp"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
....
Run Code Online (Sandbox Code Playgroud)
就像是
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/versionName"
/>
Run Code Online (Sandbox Code Playgroud)
有没有一个简洁的方法,而不必在我的代码中设置布局?
Ole*_*eGG 35
根据http://tools.android.com/tech-docs/new-build-system,你可以直接从gradle创建资源,所以把
android {
...
defaultConfig {
applicationId "se.test.myapp"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
...
applicationVariants.all { variant ->
variant.resValue "string", "versionName", variant.versionName
}
...
}
Run Code Online (Sandbox Code Playgroud)
在你的build.gradle中可以解决这个问题
它generated.xml在编译期间在generated/res文件夹中创建资源文件,该文件包含在您在values文件夹中提供的资源旁边.所以你可以android:text="@string/versionName"用来引用这个值.遗憾的是,有时IDE无法解析此引用,因此它在布局资源中看起来像一个错误(虽然它是一个有效的语句,并将在运行时解析).
您可以通过单击"@ string/versionName",然后按Alt + Enter,在菜单中选择"Create string value resource'versionName",然后选择"Suppress for tag"来抑制错误.
编辑:您不应该只使用Jack。根据官方公告, Jack已弃用(适用于Java 8功能以外的所有功能)。
我使用了一个字符串资源:
<resources>
<string name="app_ver" translatable="false">1.0.2</string>
...
</resources>
Run Code Online (Sandbox Code Playgroud)
在应用程序的build.gradle中:
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
...
versionName "@string/app_ver"
jackOptions {
enabled true
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
像这样:
<Preference
android:title="Version"
android:summary="@string/app_ver"/>
Run Code Online (Sandbox Code Playgroud)
GitHub中的该项目包含此版本的工作版本。
| 归档时间: |
|
| 查看次数: |
5436 次 |
| 最近记录: |