2017-08-24 38 views
9

好的,我在Android Studio 3.0中創建了一個全新的項目。搖籃在此建新實例化項目工作正常,直到我插入以下行我模塊的build.gradlecardslib錯誤資源android:attr/foregroundInsidePadding是專用的,但定位SDK 26

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斯圖DIO 3.0 Beta 2,構建工具版本是26.0.1。 Gradle插件3.0.0-beta2。

我敢打賭,這是因爲一個稍微過時的Cardslib庫。有沒有辦法解決這個問題? (從相關項刪除這些行很好)

回答

22

嘗試通過將android.enableAapt2=false添加到您的gradle.properties文件禁用AAPT2

啓用AAPT2時,構建可能會失敗。此外,AAPT2目前與Robelectric不兼容,爲 。如果構建失敗,因爲 的AAPT2資源處理問題,或者你想使用Roboelectric, 你可以通過設置android.enableAapt2 =假在 gradle.properties文件,並通過運行 ./gradlew重啓搖籃守護進程禁用AAPT2 - 從命令行停止。

參考:here

我使用的是Android 3.0的工作室公測5在​​我禁用了AAPT2,它解決了我的錯誤。

+0

感謝豬頭...這個工作 – Sparker0i

+0

我說這在我的'gradle這個-包裝.properties',但這不起作用。 – Khemraj

+0

請將它添加到'gradle.properties'而不是'gradle-wrapper.properties'並查看它是否有效。謝謝 –

2

這是因爲你不應該爲這個資源使用'android'命名空間。要解決此問題,請使用foregroundInsidePadding替換android:foregroundInsidePadding。
有關Android Studio AAPT2 migration guide的更多信息。

+0

我在代碼中的任何地方都沒有使用android:foregroundInsidePadding或foregroundInsidePadding。這一切都是因爲包含了特定的圖書館而發生的沒有這些代碼運行很好。如果我們禁用aapt2 – Sparker0i

+1

啊也是可以的,在這種情況下,庫的所有者需要更新他們的代碼以刪除foregroundInsidePadding的「android」名稱空間。或者你可以分叉他們的庫,修改資源,然後構建爲本地庫模塊。 –

-1

我更新了我的依賴從:

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' 

而且它爲我工作

+0

只有在您定位Android的較低版本時才能使用。在我的情況下,我的目標是更高的版本。 – Sparker0i

+0

爲什麼downvote?有人已經回覆給你。它爲我工作,也許會幫助別人。有時我們有類似的問題,但接受的答案並不適用於每個人,有時候我們通過閱讀未被接受的答案找到一個有助於解決具體情況的答案。這就是我分享我的答案的原因。 – Gabrielkdc

+0

如果您的目標是Android 27的最新版本,例如API 27,它可能會產生運行時錯誤 – Sparker0i

相關問題