使用 Material Components 和 androidX 编译 Android 应用程序时出错

Posted

技术标签:

【中文标题】使用 Material Components 和 androidX 编译 Android 应用程序时出错【英文标题】:Error compiling Android app with Material Components and androidX 【发布时间】:2019-04-10 16:17:34 【问题描述】:

android 应用突然拒绝构建,返回此错误:

Android 资源链接失败 错误:资源样式/Theme.MaterialComponents.Light.NoActionBar(又名 it.duemilanet.icircle:style/Theme.MaterialComponents.Light.NoActionBar) 没找到。

D:\GitLab\iCircleAndroidRMA\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:1440: 错误:样式属性'attr/colorSecondary(又名 it.duemilanet.icircle:attr/colorSecondary)' 未找到。 错误:资源样式/Widget.Design.BottomSheet.Modal(又名 it.duemilanet.icircle:style/Widget.Design.BottomSheet.Modal)不是 成立。 错误:资源样式/Theme.Design.Light.BottomSheetDialog(又名 it.duemilanet.icircle:style/Theme.Design.Light.BottomSheetDialog)不是 成立。 D:\GitLab\iCircleAndroidRMA\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3296: 错误:样式属性'attr/bottomSheetStyle(又名 it.duemilanet.icircle:attr/bottomSheetStyle)' 未找到。 错误:链接引用失败。

之前编译还不错,几周前我切换到 androidX 和 material components 主题并启用 jetifier 没有问题

build.gradle:

buildscript 

    repositories 

        google()
        jcenter()

        maven 
            url 'https://maven.fabric.io/public'
        

    

    dependencies 
        classpath 'com.android.tools.build:gradle:3.3.0-alpha09'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
        classpath 'com.google.gms:google-services:4.0.2'
        classpath 'io.fabric.tools:gradle:1.25.4'
    



allprojects 

    repositories 

        google()
        jcenter()

        maven 
            url 'https://maven.google.com/'
        

    



task clean(type: Delete) 
    delete rootProject.buildDir

app build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
apply plugin: 'io.fabric'

android 
    compileSdkVersion 28
    defaultConfig 
        applicationId "it.duemilanet.icircle"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 3334
        versionName "3.3.3.4"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    dataBinding 
        enabled true
    


greendao 
    schemaVersion 1


dependencies 
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.6.0'
    implementation 'io.sentry:sentry-android:1.7.5'
    implementation 'org.simpleframework:simple-xml:2.7.1'
    implementation 'org.greenrobot:greendao:3.2.2'
    implementation 'com.synnapps:carouselview:0.1.5'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.bskim:maxheightscrollview:1.0.0@aar'
    implementation 'com.google.firebase:firebase-core:16.0.5'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
    implementation 'com.pspdfkit:pspdfkit:4.8.1'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'org.apache.commons:commons-compress:1.18'
    implementation 'androidx.databinding:databinding-runtime:3.3.0-alpha12'
    implementation 'com.jakewharton:butterknife:9.0.0-rc1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'


repositories 
    mavenCentral()
    maven 
        url "https://oss.sonatype.org/content/repositories/snapshots"
    
    maven 
        url 'https://customers.pspdfkit.com/maven/'
        credentials 
            username 'pspdfkit'
            password 'PASSWORD'
        
    


apply plugin: 'com.google.gms.google-services'
我尝试禁用 Instant Run 并恢复到之前版本的材料库,但无法修复错误。

【问题讨论】:

【参考方案1】:

材料设计文档中引用了几个组件,这些组件尚未在 Android 材料设计库的稳定版本中。尝试改用 alpha 版本。

将以下内容添加到您的build.gradle

dependencies  
    ...
    implementation 'com.google.android.material:material:1.2.0-alpha02'

【讨论】:

【参考方案2】:

Android StudioFile 菜单尝试Invalidate Cashes / Restart

【讨论】:

@Bek,您是否试图在所有问题上都写下这个以试图获得更多代表?为什么这样可以解决问题?这是否为您解决了问题?

以上是关于使用 Material Components 和 androidX 编译 Android 应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 Material-UI 和 styled-components 基于 props 的样式

在反应中使用 Material Icon 和 Styled-Components

使用 Material Components 和 androidX 编译 Android 应用程序时出错

无法使用 Webpack 2 导入 material-components-web

使用 styled-components 覆盖 material-ui 按钮样式

Material Components——Shape的处理