16

好的,我在 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 库稍微过时了。有没有办法解决这个问题?(从依赖项中删除这些行可以正常工作)

4

4 回答 4

43

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

启用 AAPT2 时构建可能会失败。此外,AAPT2 目前与 Robelectric 不兼容。如果您的构建由于 AAPT2 资源处理问题而失败,或者您想使用 Roboelectric,您可以通过在 gradle.properties 文件中设置 android.enableAapt2=false 并通过运行 ./gradlew --stop 从命令行。

参考:这里

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

更新:2018 年 3 月 28 日

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

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

这是因为您不应该为此资源使用“android”命名空间。要解决此问题,请将 android:foregroundInsidePadding 替换为 foregroundInsidePadding。
有关Android Studio AAPT2 迁移指南的更多信息。

于 2017-10-30T14:44:54.550 回答
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'

它对我有用

于 2018-02-25T20:19:04.203 回答
0

试试这个:AAPT2通过添加android.enableAapt2=falsegradle-properties 来禁用。还要确保您拥有compileSdkVersiontargetSdkVersion是相同的版本。我的 28 岁,使用 android studio 3.2.1。

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

于 2019-01-09T07:09:40.970 回答