본문 바로가기
TechNical/Android

android material-calendarview 삽질 기행...

by 강멍멍이 2023. 8. 27.
반응형

진짜 오랜만에 안드로이드로 뭔가 개발 하려고 했더니... 개발 환경이 너무 많이 바뀌었다.

일단 안드로이드 디벨로퍼 기린을 받았는데

kotlin 도 모르겠고 gradle 도 모르겠고.... gradle.kts 는 또 뭐냐..

 

정말 하나도 모르겠다! 얏호!

 

 

네비게이션 드로어 뷰를 템플릿으로 선택해서 프로젝트를 생성한 다음... 커스텀 달력을 만들려고 했다.

 

일단 custom calendar 를 써 볼려고 material-calendarview 라이브러리를 쓰려고 했는데 .... 일단 그냥 막혔다.

https://github.com/prolificinteractive/material-calendarview

 

GitHub - prolificinteractive/material-calendarview: A Material design back port of Android's CalendarView

A Material design back port of Android's CalendarView - GitHub - prolificinteractive/material-calendarview: A Material design back port of Android's CalendarView

github.com

 

github 에 갔더니... 이거 부터 하라는데 어따가 하는거지...

github 에서 라이브러리를 가져 오려면 jitpack 이 있어야 하나 보다.

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

Gradle Scripts 하위에 보면 setting.gradle.kts 라는 파일이 있다

거길 보면 dependencyResolutionManagement 라는 부분이 있는데 거기에다가 좀 바꿔서 넣어야 한다.

시킨대로 붙여 넣으면 아래와 같은 오류가 발생한다. 뭔지 모르겠는데 문법이 다른가 보다. 내가 뭘 하는지 모르겠네..

Unexpected tokens (use ';' to separate expressions on the same line)

 

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url = uri("https://jitpack.io") }
    }
}

이제 진짜 라이브러리를 가져 오자.

build.gradle.kts 파일에다가 붙여 넣자.

 

dependencies {
  implementation 'com.github.prolificinteractive:material-calendarview:2.0.1'
}

파일을 바꾸면 우상단에 Sync Now 라는 글자를 누르면 라이브러를 가져 온다.

 

어찌저찌 해서 AVD 실행까지 눌렀다. 그랬더니.....

 

Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-27.0.2-runtime (com.android.support:support-compat:27.0.2)
     Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-27.0.2-runtime (com.android.support:support-compat:27.0.2)
     Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-27.0.2-runtime (com.android.support:support-compat:27.0.2)
     Duplicate class android.support.v4.os.IResultReceiver found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-27.0.2-runtime (com.android.support:support-compat:27.0.2)
  m.android.build.gradle.internal.tasks.CheckDuplicatesRunnable

.....

 

괴롭다...

외부 라이러리와 충돌이 나는 거라고 한다. 충돌을 피하려면 뭔가 설정 추가해 줘야 한다.

gradle.properties 파일을 까서 아래 부분을 추가하자.

android.enableJetifier=true

 

레이아웃에 달력을 껴 넣어 보자.

<com.prolificinteractive.materialcalendarview.MaterialCalendarView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/calendarView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:mcv_showOtherDates="all"
    app:mcv_selectionColor="#00F"
    app:layout_constraintTop_toBottomOf="@+id/text_home"
    />

constraintLayout ... 이건 또 뭐냐.. top, bottom 이런거 셋팅 안 해 주면 빨간줄 긋는다.. 짜잉..

 

이제 겨우 깡통 달력 하나 띄웠네... ㅠ

 

 

반응형

댓글