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

时间:2017-08-24 15:20:03

标签: android cardslib

好的,我在Android Studio 3.0中创建了一个全新的项目。 Gradle构建在这个新实例化的项目中工作正常,直到我在我的模块中插入以下行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库。有没有办法解决这个问题? (从依赖项中删除这些行可以正常工作)

4 个答案:

答案 0 :(得分:40)

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

  

启用AAPT2时,构建可能会失败。另外,AAPT2是   目前与Robelectric不兼容。如果你的构建失败了   AAPT2资源处理问题或您想使用Roboelectric,   你可以通过设置android.enableAapt2 = false来禁用AAPT2   gradle.properties文件并通过运行重新启动Gradle守护程序   ./gradlew - 从命令行停止。

参考: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" />和Build。
  3. 打开您的项目并将该存储库作为依赖项导入您的项目。
  4. 从应用级build.gradle删除库编译语句。
  5. 现在您可以使用AAPT2,因此如果存在android.enableAapt2=false,请尝试将true更改为gradle.properties

答案 1 :(得分:3)

这是因为你不应该使用&#39; android&#39;此资源的命名空间。要解决此问题,请将android:foregroundInsidePadding替换为foregroundInsidePadding 有关Android Studio AAPT2 migration guide的更多信息。

答案 2 :(得分:0)

我更新了我的依赖项:

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'

它对我有用

答案 3 :(得分:0)

尝试以下操作:通过在gradle-properties中添加AAPT2来禁用android.enableAapt2=false。另外,请确保您的compileSdkVersiontargetSdkVersion是同一版本。我的是28与android studio 3.2.1。

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