【问题标题】:Android TV Settings build fails due to 'error: duplicate value for resource 'attr/orientation' with config ''.'由于“错误:资源 'attr/orientation' 与配置 '' 的重复值”,Android TV 设置构建失败。
【发布时间】:2019-03-28 18:54:13
【问题描述】:

我想构建从 Google Git repository 克隆的 Android TV 设置应用。 我使用的是 Android Studio 3.3.2,Gradle 版本会自动适应 SDK 版本。

我首先尝试从 TvSettings/Settings 目录自动生成一个新的 gradle 项目。它从来没有因为不同的原因而建造 现在我尝试创建一个新的 gradle 项目,如 here 部分“通过创建自定义 Gradle 构建文件进行迁移”。

在我从 Git 存储库克隆的 TvSettings/Settings 文件树中,我添加了 3 个符号链接(在 res 和 com 目录以及 AndroidManifest.xml 文件上)以适应 Gradle 文件树的期望

然后我在项目级别添加了一个 build.gradle 文件(我在这个线程的底部添加了它的内容,可能是真的错了,因为我不太习惯用 Gradle 生成)。

构建失败并出现警告和两个错误。看看吧:

Android resource compilation failed
build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:1077: warn: multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?.
build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:1580: error: duplicate value for resource 'attr/orientation' with config ''.
build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:1580: error: resource previously defined here.

我尝试了很多东西: - 干净的 - 使缓存无效并重新启动 - 大幅限制图书馆的数量 - 指定与正确的库版本相关的不同 API 版本(23、26 和 18)

我该如何解决这个问题?

感谢您的帮助

【问题讨论】:

    标签: android duplicates apk settings television


    【解决方案1】:

    uildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.3.2'
        }
    }
    
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 23
    
        defaultConfig {
            applicationId "com.android.tv.settings"
            minSdkVersion 23
            targetSdkVersion 23
            vectorDrawables.useSupportLibrary = true
        }
    
        sourceSets {
            main {
                manifest.srcFile 'app/AndroidManifest.xml'
                java.srcDirs = ['app/src']
                resources.srcDirs = ['app/src']
                aidl.srcDirs = ['app/src']
                renderscript.srcDirs = ['app/src']
                res.srcDirs = ['app/res']
                assets.srcDirs = ['app/assets']
            }
    
            debug.setRoot('build-types/debug')
            release.setRoot('build-types/release')
        }
    
    }
    
    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation 'com.android.support:gridlayout-v7:23.0.0'
    }

    【讨论】:

      【解决方案2】:

      我通过引用设置模块 Android.mk 文件中列出的库解决了这个问题。

      正确的库列表是:

      implementation 'com.android.support:recyclerview-v7:28.0.0-beta01'
      implementation 'com.android.support:preference-v7:28.0.0-beta01'
      implementation 'com.android.support:appcompat-v7:28.0.0-beta01'
      implementation 'com.android.support:preference-v14:28.0.0-beta01'
      implementation 'com.android.support:preference-leanback-v17:28.0.0-beta01'
      implementation 'com.android.support:leanback-v17:28.0.0-beta01'
      implementation 'android.arch.lifecycle:extensions:1.1.1'
      implementation 'android.arch.lifecycle:common-java8:1.1.1'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-04
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多