인프런 커뮤니티 질문&답변

Section님의 프로필 이미지
Section

작성한 질문수

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

데이터바인딩(Databinding) 설명

databinding 사용 시 오류

작성

·

1.6K

0

안녕하세요 강의 잘 듣고 있습니다.
Databinding 단계에서 gradle에 sync now 했을 때 까진 오류가 없이 잘 실행 되는데 layout을 작성하거나 activity에 바인딩 관련 코드를 입력 후 실행하면 오류가 나더라고요.
 
Build 시 오류는 없다고 나오는데 제가 사진 첨부 한 것 처럼 해당 오류가 나오고 있는데 혹시 해결법이 있을까요?
 
구글링해서 다른 databinding 코드를 입력 해봐도 해당 사진과 같은 오류가 출력됩니다.
 
 
자바 오류 인 것 같아서 자바를 재 설치랑 안드로이드 스튜디오 캐시도 삭제해도 같은 오류가 뜨는데 방법이 있을까요?
 
 
 
 
 

답변 10

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

안녕하세요 :)
잘 해결하셨다니 다행입니다. 끝까지 파이팅입니다~!

0

Section님의 프로필 이미지
Section
질문자

네 윈도우 사용합니다.

강사님이 말씀하신대로 JDK와 gradle 파일에서 오류가 있었더라고요. 

아예 안드로이드 스튜디오 완전 삭제 후 최신 버젼으로 재 설치해서 잘 사용중입니다! 감사합니다 :)

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

혹시 윈도우를 사용하시나요?

 

윈도우를 사용하시면 JDK를 삭제 후 한번 재 설치 해보시겠어요?

0

Section님의 프로필 이미지
Section
질문자

컴파일 옵션을 1.7로 바꾸면 다른 오류가 뜨더라고요 

일단 코드엔 이상 없으니 재설치나 다른 설정 건드려서 해결해봐야겠네요 감사합니다!

> Task :app:mergeExtDexDebug FAILED

AGPBI: {"kind":"error","text":"Invoke-customs are only supported starting with Android O (--min-api 26)","sources":[{}],"tool":"D8"}

AGPBI: {"kind":"error","text":"Default interface methods are only supported starting with Android N (--min-api 24): Landroidx/core/internal/view/SupportMenuItem;setTooltipText(Ljava/lang/CharSequence;)Landroid/view/MenuItem;","sources":[{}],"tool":"D8"}

AGPBI: {"kind":"error","text":"Static interface methods are only supported starting with Android N (--min-api 24): Landroidx/constraintlayout/core/motion/utils/TypedValues$Attributes;getId(Ljava/lang/String;)I","sources":[{}],"tool":"D8"}

 

Invoke-customs are only supported starting with Android O (--min-api 26)

 

Default interface methods are only supported starting with Android N (--min-api 24): Landroidx/core/internal/view/SupportMenuItem;setTooltipText(Ljava/lang/CharSequence;)Landroid/view/MenuItem;

 

Static interface methods are only supported starting with Android N (--min-api 24): Landroidx/constraintlayout/core/motion/utils/TypedValues$Attributes;getId(Ljava/lang/String;)I

 

Execution failed for task ':app:mergeExtDexDebug'.

> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.

   > Failed to transform constraintlayout-2.1.1.aar (androidx.constraintlayout:constraintlayout:2.1.1) to match attributes {artifactType=android-dex, dexing-enable-desugaring=false, dexing-incremental-transform=false, dexing-is-debuggable=true, dexing-min-sdk=16, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.

      > Execution failed for DexingNoClasspathTransform: C:\Users\H\.gradle\caches\transforms-2\files-2.1\c4d871516e96305937f335519db771b4\constraintlayout-2.1.1-runtime.jar.

         > Error while dexing.

           The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

           android {

               compileOptions {

                   sourceCompatibility 1.8

                   targetCompatibility 1.8

               }

           }

           See https://developer.android.com/studio/write/java8-support.html for details. Alternatively, increase the minSdkVersion to 26 or above.

 

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

그대로 돌려봤는데 잘 되네요~ 설정 문제인듯 합니다.

 

아래 부분 참고해보시겠어요?

 

https://stackoverflow.com/questions/48162522/android-studio-an-exception-has-occurred-in-the-compiler-1-8-0-152-release

0

Section님의 프로필 이미지
Section
질문자

package com.h.databinding_ex

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.databinding.DataBindingUtil
import com.h.databinding_ex.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

private lateinit var binding : ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

// 1번 방식 findViewById
// val btn = findViewById<Button>(R.id.testBtnID)
// btn.setOnClickListener {
// Toast.makeText(this,"click", Toast.LENGTH_SHORT).show()
// }

// 2번 방식 - Databinding
binding.testBtnID.setOnClickListener {
Toast.makeText(this, "click", Toast.LENGTH_LONG).show()
}


}
}

 

plugins {
id 'com.android.application'
id 'kotlin-android'
}

android {
compileSdkVersion 31
buildToolsVersion "30.0.3"

defaultConfig {
applicationId "com.h.databinding_ex"
minSdkVersion 16
targetSdkVersion 31
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures{
dataBinding = true
}
// dataBinding{
// enabled true
// }
}
dependencies {

implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
<?xml version="1.0" encoding="utf-8"?>
<layout>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
android:id="@+id/testBtnID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

늦게 확인했네요;-; 여깄습니다!

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

코드 복사해서 주시면 제가 실행해볼게요 ㅎㅎ

0

Section님의 프로필 이미지
Section
질문자

네 빠른 답변 감사합니다. 혹시 보기 불편하시다면 코드 복사해서 다시 올리겠습니다.

gradle 파일

xml 파일

mainActivity 파일

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

스크린샷이 아니라 코드를 복사해서 공유해주세요~

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

안녕하세요

 

 

gradle 파일과 

xml 파일

activity 파일

 

모두 다 어떻게 하셨는지 

 

공유해주시면 살펴보겠습니다.

Section님의 프로필 이미지
Section

작성한 질문수

질문하기