为什么我会收到“preserveIconSpacing是私有的”错误?

4

我拿出了我的一个旧的安卓项目,几年前是在Eclipse Luna上开发的,现在想要重启这个项目。

我将它导入了Android Studio,据说它可以将项目转换为自己的格式,并且我能够继续工作。

经过所有初始链接和版本兼容性错误的处理后,我卡在了以下错误上,无法解决:

c:\....\MyProjectFolder\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:643: error: resource android:attr/preserveIconSpacing is private.

有什么解决办法还是这是一个合法的错误?
这是我的build.gradle文件:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "com.eibimalul.smartgallery"
        minSdkVersion 16
        targetSdkVersion 22
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:gridlayout-v7:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile files('libs/robobinding-0.8.3-jar-with-dependencies.jar')
    compile files('libs/simple-xml-2.7.1.jar')
    compile files('libs/universal-image-loader-1.9.2.jar')
}

为了清晰解决方案:Mohsen的帮助下,解决这个错误的方法是:

  1. 我根据下面Mohsen的答案更改了build.gradle内容,更新旧的依赖项,并将编译更改为implementation - 错误消失了。
  2. 我按照这里的方法解决了我得到的第二个错误(资源整数/ google_play_services_version) - 见下文。

现在我有了第三个错误,但似乎与第一个错误无关,所以我相信主要问题已经解决。


我必须说,感谢您遵守社区规则。 :) 如果您有任何问题创建了另一个问题,请告诉我,我可以帮助您解决。 - ʍѳђઽ૯ท
1个回答

4

values.xml:643: 错误:资源 android:attr/preserveIconSpacing 是私有的。

您正在使用私有资源,因此出现了此问题。

注释掉该行或删除它将有助于继续进行。


更新:这是更改后的build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "com.eibimalul.smartgallery"
        minSdkVersion 16
        targetSdkVersion 28
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    implementation 'com.android.support:gridlayout-v7:28.0.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation files('libs/robobinding-0.8.3-jar-with-dependencies.jar')
    implementation files('libs/simple-xml-2.7.1.jar')
    implementation files('libs/universal-image-loader-1.9.2.jar')
}

我只是改变了appcompatcompileSdkVersion的版本等,以便更新它们。此外,如果这并没有帮助,由于这些库已经足够老(例如Date(Jul 08, 2013)),也许你应该用最新的依赖项来替换它们。

例如,添加:

implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

不要使用 compile files('libs/universal-image-loader-1.9.2.jar'),因为它可以从在线存储库下载库文件,您无需手动添加。

还要使用implementation而不是compile

如果错误仍然出现,请检查此链接并以此方式添加simple-xml:https://dev59.com/NmIk5IYBdhLWcg3wRcQo#19455878


1
这就是问题所在,属性:“preserveIconSpacing”不是我的。它可能是自动生成的或者来自模板。 - Eibi
1
谢谢你的帮助,Mohsen ;) 我已经删除了构建并重新构建了项目 - 没有运气。 你链接的线程也没有给出可行的答案。 - Eibi
也许这是来自其中一个依赖项的问题,因为你说:“那是几年前在Eclipse Luna上开发的”。所以在这种情况下,我会将我的应用程序build.gradle文件中的依赖项添加到问题中,以查看哪个引起了问题。但你可以尝试更新它们。如果你找不到该属性,则似乎是运行时问题,因此它主要来自于添加的依赖项-库。 - ʍѳђઽ૯ท
1
请检查我的更新答案。那些相当老了,这并不奇怪。 - ʍѳђઽ૯ท
1
是的,看起来那个错误已经消失了。请查看此链接:https://dev59.com/FVQK5IYBdhLWcg3wV-lZ 它正在寻找一个未找到的整数。 - ʍѳђઽ૯ท
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接