好的,我在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库。有没有办法解决这个问题? (从依赖项中删除这些行可以正常工作)
答案 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
并将其导入您的项目。
xml
<attr name="android:foregroundInsidePadding" />
并将其替换为
<attr name="foregroundInsidePadding" />
和Build。build.gradle
删除库编译语句。 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
。另外,请确保您的compileSdkVersion
和targetSdkVersion
是同一版本。我的是28与android studio 3.2.1。
重建您的项目,它应该可以工作。