以 SDK 26 为目标时,cardslib 错误资源 android:attr/foregroundInsidePadding 是私有的

cardslib error resource android:attr/foregroundInsidePadding is private while targeting SDK 26

好的,我已经在 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>

我的最低 SDK 版本是 16,目标 SDK 是 26。我使用的是 Android Studio 3.0 Beta 2,构建工具版本是 26.0.1。 Gradle 插件 3.0.0-beta2.

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

尝试通过将 android.enableAapt2=false 添加到您的 gradle.properties 文件来禁用 AAPT2

Builds may fail while AAPT2 is enabled. Additionally, AAPT2 is currently not compatible with Robelectric. If your build fails due to an AAPT2 resource processing issue or you want to use Roboelectric, you can disable AAPT2 by setting android.enableAapt2=false in your gradle.properties file and restarting the Gradle daemon by running ./gradlew --stop from the command line.

参考:here

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

更新:2018 年 3 月 28 日

使用 Android Studio 3.1.1 这可能行不通。您的图书馆之一可能正在使用 android 的私有资源。您需要找到导致错误的库并将 android:attr/foregroundInsidePadding 替换为 foregroundInsidePadding 并将其导入到您的项目中。

  1. 在您的本地克隆库存储库。
  2. 在 Android Studio 中打开存储库找到 xml <attr name="android:foregroundInsidePadding" /> 并替换为
    <attr name="foregroundInsidePadding" /> 和构建。
  3. 打开您的项目并将该存储库作为依赖项导入到您的项目中。
  4. 从应用级别删除库编译语句build.gradle
  5. 现在您也许可以使用 AAPT2,因此请尝试将 gradle.properties 中的 android.enableAapt2=false 更改为 true(如果存在)。

这是因为您不应为此资源使用 'android' 命名空间。要解决此问题,请将 android:foregroundInsidePadding 替换为 foregroundInsidePadding。
有关 Android Studio AAPT2 migration guide.

的更多信息

我从 :

更新了我的依赖项
compile 'com.android.support:support-v4:19.1.0'
compile 'com.android.support:appcompat-v7:19.1.0'

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

它对我有用

试试这个:通过在 gradle-properties 中添加 android.enableAapt2=false 来禁用 AAPT2。还要确保 compileSdkVersiontargetSdkVersion 是相同的版本。我的是 android studio 3.2.1 的 28。

重建你的项目它应该工作。