当我尝试在 Linux 下为 Android 版本 > 到 5.0 (lollipop) 的 android 设备构建项目时,我发现我的项目有一个奇怪的行为。
错误信息是:
Error:(5, 28) No resource found that matches the given name (at 'versionName' with value '@string/Application_Version').
消息指向我的 AndroidManifest.xml 文件,其中包含:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.testApplication"
android:versionCode="1"
android:versionName="@string/Application_Version"
split="lib_dependencies_apk">
</manifest>
当我在低于 5.1 的设备上测试我的应用程序时,它按预期工作,没有任何警告/错误(因为字符串 Application_Version 存在并且被完美找到)但是当我尝试5.1 或更高版本的设备(真实的或模拟的),它向我抛出此消息。
我最近将我的 Android Studio 更新到 2.3,因为它会产生此错误消息。使用 AS 2.2 我没有任何问题...
我已经尝试通过做一些我在 SO 上发现的类似问题来解决这个问题,比如清理缓存并重新启动,手动删除构建文件,使用 ./gradlew clean 清理我的项目并重新导入我的项目,但似乎没有任何效果直到现在。
最佳答案
根据这个问题: https://code.google.com/p/android/issues/detail?id=235893
您必须将 versionName 移动到 app/build.gradle 文件中。如果您想根据这个 StackOverflow 问题访问 xml 布局文件中的 versionName: Reference build.gradle versionName attribute in xml layout
你应该这样做:
android {
...
defaultConfig {
applicationId "se.test.myapp"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
...
applicationVariants.all { variant ->
variant.resValue "string", "versionName", variant.versionName
}
...
}
关于为版本 > 5.0 的设备构建时,Android Studio 找不到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42604987/