cardslib错误资源android:attr/foregroundInsidePadding在针对SDK 26时是私有的

cardslib错误资源android:attr/foregroundInsidePadding在针对SDK 26时是私有的,android,cardslib,Android,Cardslib,好的,我在Android Studio 3.0中创建了一个全新的项目。Gradle build在这个新实例化的项目中运行良好,直到我在模块的build.Gradle dependencies { ... compile 'com.github.gabrielemariotti.cards:cardslib-core:2.1.0' compile 'com.github.gabrielemariotti.cards:cardslib-cards:2.1.0' com

好的,我在Android Studio 3.0中创建了一个全新的项目。Gradle build在这个新实例化的项目中运行良好,直到我在模块的
build.Gradle

dependencies {
    ...
    compile 'com.github.gabrielemariotti.cards:cardslib-core:2.1.0'
    compile 'com.github.gabrielemariotti.cards:cardslib-cards:2.1.0'
    compile 'com.github.gabrielemariotti.cards:cardslib-recyclerview:2.1.0'
}
这是我在构建日志中得到的错误

/home/sparker0i/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.0.1.aar/e06e09188fb79d4d895b39247477d1c1/res/values/values.xml
Error:(246, 5) resource android:attr/foregroundInsidePadding is private
当我双击它时,我会得到一个
values.xml
文件(合并的文件),指针就在这个文件中

<dimen name="abc_action_bar_content_inset_material">16dp</dimen>
16dp
我的最小SDK版本是16,目标SDK是26。我使用的是Android Studio 3.0 Beta 2,构建工具版本是26.0.1。Gradle插件3.0.0-beta2


我打赌这是因为一个稍微过时的Cardslib库。没有办法解决这个问题吗?(从依赖项中删除这些行可以正常工作)

尝试禁用
AAPT2
,方法是将
android.enableApt2=false
添加到
gradle.properties
文件中

启用AAPT2时,生成可能会失败。此外,AAPT2是 目前与RobeElectric不兼容。如果由于以下原因导致构建失败: AAPT2资源处理问题或您希望使用RoboeElectric, 您可以通过在应用程序中设置android.enableApt2=false来禁用AAPT2 属性文件,并通过运行 ./gradlew—从命令行停止

参考:

我使用的是Android studio 3.0 beta 5,我在其中禁用了
AAPT2
,它解决了我的错误

更新日期:2018年3月28日

对于Android Studio
3.1.1
,这可能不起作用。您的一个库可能正在使用android的私有资源。您需要找到导致错误的库,并将
android:attr/foregroundInsidePadding
替换为
foregroundInsidePadding
,然后将其导入到您的项目中

  • 在本地复制库repo
  • 在Android Studio中打开存储库查找
    xml
    并将其替换为
    和构建
  • 打开项目并将该存储库作为依赖项导入到项目中
  • 从应用程序级别
    build.gradle
    删除库编译语句
  • 现在,您可能可以使用
    AAPT2
    ,因此尝试在
    gradle.properties
    中将
    android.enableApt2=false
    更改为
    true

  • 这是因为您不应该对此资源使用“android”命名空间。要解决此问题,请将android:foregroundInsidePadding替换为foregroundInsidePadding。

    有关的详细信息。

    我从以下位置更新了依赖项:

    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    


    它对我很有效

    试试这个:通过在gradle属性中添加
    android.enableApt2=false
    来禁用
    AAPT2
    。还要确保
    编译器dkversion
    targetSdkVersion
    的版本相同。我的是28,android studio 3.2.1


    重建您的项目它应该可以工作。

    我在代码中的任何地方都没有使用android:foregroundInsidePadding或foregroundInsidePadding。这一切都是因为包括了那个特别的图书馆。没有这些,代码运行得很好。如果我们禁用aapt2Ah也没关系,在这种情况下,库的所有者需要更新他们的代码来删除foregroundInsidePadding的“android”名称空间。或者你可以分叉他们的库,修改资源,然后构建为本地库模块。这只有在你瞄准较低版本的Android时才会起作用。就我而言,我的目标是更高的发行量。为什么要投否决票?已经有人回答你了。这对我来说很有效,也许也会对别人有所帮助。有时我们也会遇到类似的问题,但被接受的答案并不适用于所有人,有时我们会通过阅读未被接受的答案来找到对我们的具体情况有帮助的答案。这就是为什么我分享了我的答案。如果你的目标是Android的最新版本,比如API 27I,它可能会出现运行时错误。我在我的
    gradle wrapper.properties
    中添加了这个,但它仍然不起作用。请将它添加到
    gradle.properties
    中,而不是
    gradle wrapper.properties
    ,看看它是否起作用。感谢我在“错误:org.gradle.process.internal.ExecException:process'command'/Users/***/Library/Android/sdk/build tools/26.0.2/aapt''以非零退出值1结束”之后,这个错误应该主要在gradle clean之后发生。查看SO上发布的类似问题。在我的Android Studio中,没有gradle.properties文件。我该怎么办?
    compile 'com.android.support:support-v4:21.0.1'
    compile 'com.android.support:appcompat-v7:21.0.1'