Android Studio集成Material Calendar后出现android.support.constraint包不存在错误
android.support.constraint包不存在错误 在Android Studio的Java项目中集成Material CalendarView实现日期范围标记时,出现编译错误:error: package android.support.constraint does not exist。错误来自自动生成的FragmentFirstBinding.java文件,该文件引用了旧的android.support.constraint.ConstraintLayout,但项目已配置AndroidX(gradle.properties中启用android.useAndroidX=true、android.enableJetifier=true,且依赖了androidx.constraintlayout:constraintlayout),尝试过切换库、更新依赖、清理重建等方法无效。
报错文件片段(FragmentFirstBinding.java)
// Generated by view binder compiler. Do not edit! package com.example.endurence.databinding; import android.support.constraint.ConstraintLayout; import android.view.LayoutInflater; // 其余代码略
项目配置代码
build.gradle(:app)
plugins { id 'com.android.application' } android { compileSdk 34 defaultConfig { applicationId "com.example.endurence" minSdk 30 targetSdk 34 versionCode 1 versionName "1.0" testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } // 其余配置略 } dependencies { implementation 'androidx.appcompat:appcompat:' implementation 'com.google.android.material:material:1.11.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'com.github.prolificinteractive:material-calendarview:2.0.1' // 其余依赖略 }
settings.gradle
pluginManagement { repositories { gradlePluginPortal() google() mavenCentral() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } } // 其余配置略
gradle.properties
android.nonTransitiveRClass=true android.useAndroidX=true android.enableJetifier=true
activity_main.xml片段
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="#292929"> <!-- 其余布局略 --> <com.prolificinteractive.materialcalendarview.MaterialCalendarView android:id="@+id/calendar_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:mcv_selectionMode="range" <!-- 其余属性略 --> /> </RelativeLayout>
解决方案
升级Material CalendarView到AndroidX兼容版本
当前使用的2.0.1版本依赖旧support库,Jetifier无法完全转换其内部布局绑定引用。替换为AndroidX迁移后的新版本:implementation 'com.prolificinteractive:material-calendarview:3.0.0'强制清理绑定生成文件
手动删除自动生成的绑定文件目录:
路径:app/build/generated/data_binding_base_class_source_out/debug/out/com/example/endurence/databinding/
删除后执行Clean Project->Rebuild Project。检查并修复布局文件引用
打开fragment_first.xml(对应FragmentFirstBinding的布局文件),确认其中的ConstraintLayout是AndroidX版本:<!-- 替换旧引用 --> <androidx.constraintlayout.widget.ConstraintLayout ...>验证Jetifier全局配置
确保项目根目录的gradle.properties(而非仅模块级)中以下配置生效:android.useAndroidX=true android.enableJetifier=true
内容的提问来源于stack exchange,提问作者rmunuu

