마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

kotlin 버전 1.5.0 뷰바인딩후 Expecting member declaration 에러가 왜 나는지 모르겠어요. 도와주세요.

0 추천

Expecting member declaration 에러가 나는데요. 왜 그런것인지 알 수 있을가요? 

build.gradle(:app) 코드

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

android {
    compileSdkVersion 32
    buildToolsVersion "30.0.3"
    
    buildFeatures {
        viewBinding true
    }

    defaultConfig {
        applicationId "com.example.kotlin"
        minSdkVersion 23
        targetSdkVersion 32
        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'
    }
}

dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

build.gradle(kotlin)코드 

ext.kotlin_version = '1.5.0'

buildscript {
    ext.kotlin_version = '1.5.0'
    repositories {
        google()
        jcenter()
        maven {
            url "https://maven.appspector.com/artifactory/android-sdk"
        }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.5'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.1'
        classpath "com.appspector:android-sdk-plugin:1.+"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

.kt 파일 

package com.example.kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.view.ViewCompat
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
import com.example.kotlin.databinding.ActivityMainBinding


class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)

        val view = binding.root
        setContentView(view)
    }​
}
백지장 (140 포인트) 님이 5월 3일 질문

3개의 답변

0 추천
일단은
 buildFeatures {
        viewBinding true
    }

buildFeatures {
    dataBinding = true
}
로 변환해서 사용해보시겠어요?
CJ여비 (5,730 포인트) 님이 5월 3일 답변
dataBinding 변경후 빌드하면 .kt 에서 binding부분이 모두 에러로 체크됩니다.
0 추천

빌드 설정은 아래 설정이 맞구요.

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}

 

혹 특정뷰를 못찾아서 생기는 에러가 맞다면, clean build - rebuild  를 먼저 해보시구요. 안되면 Invalidate cached/restart도 해보시구요. 그래도 해결이 안된다면 에러가 나는 뷰의  ID를 다른 걸로 바꾸어서 빌드를 해보세요.  제 경험상 뷰바인딩에 아주 희한한 버그가 존재하는데요, 도저히 납득이 가지 않는 일이지만, 특정한 ID를 사용하는 뷰의 경우는 해당 ID를 바꿀 때까지 빌드에러가 생기는 경우는 몇번 경험한 적이 있거든요. 

spark (131,260 포인트) 님이 5월 3일 답변
0 추천

제가한 뷰 바인딩 설정은

viewBinding {
    enabled = true
}

입니다 스튜디오 버전이던가에서 어떤것의 버전에 차이가 있던걸로 기억하는데 한번 바꿔보세요

 

 

Elan's (580 포인트) 님이 5월 11일 답변
...