android studio 3.1 error: style attribute ‘android:attr/keyboardNavigationCluster’ not found.

升級到 android studio 3.1 之後,遇到 appcompat 如果是用 v25 或 v26 的版本,也許會遇到 Error:

 

解法,implementation  改用 27 版

implementation 'com.android.support:appcompat-v7:27.1.0'

還有:

compileSdkVersion 27
buildToolsVersion '27.0.3'

This issue is described in the migration guide for Android Gradle Plugin 3.0.0.

Incorrect use of @ resource reference symbols

AAPT2 now throws build errors when you omit or incorrectly place resource reference symbols (@). For example, consider if you omit the symbol when specifying a style attribute, as shown below:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  ...
  <!-- Note the missing '@' symbol when specifying the resource type. -->
  <item name="colorPrimary">color/colorPrimary</item>
</style>

When building the module, AAPT2 now throws the following build error:

ERROR: expected color but got (raw string) color/colorPrimary

Additionally, consider if you incorrectly include the symbol when accessing a resource from the android namespace, as shown below:

...
<!-- When referencing resources from the 'android' namespace, omit the '@' symbol. -->
<item name="@android:windowEnterAnimation"/>

When building the module, AAPT2 now throws the following build error:

Error: style attribute '@android:attr/windowEnterAnimation' not found

If you didn’t make the mistake described in second half, then perhaps an old version of appcompat-v7 is to blame.

The good

Update to newer support libraries, pick 25.4.0 or 26.1.0 or 27.0.0. Make sure you match compileSdkVersion.

Note: If you choose to update to something older than 27.0.0 you may run into this issue.

The bad

If for some reason you’re stuck with 25.3.1 or older you can disable AAPT2.

If you are experiencing issues while using AAPT2, you can disable it by setting android.enableAapt2=false in your gradle.properties file and restarting the Gradle daemon by running ./gradlew --stop from the command line.

相關文章

寫留言

你的電子郵件位址並不會被公開。 必要欄位標記為 *