안드로이드 스튜디오 4.x를 사용할 때는 이런 오류가 없었는데 3.x version 에서 코딩을 하는데 오류가 발생하였습니다. 정확한 안드로이드 스튜디오 버전은

 

이고

 

 

오류가 발생한 붉은색 Nullable에 마우스를 가져가면 오류 내용이 보입니다.
Cannot resolve symbol ‘Nullable’

 

 

public class SDBHelper extends SQLiteOpenHelper {

    private String TB_Member = "member";

    public SDBHelper(@androidx.annotation.Nullable Context context, @androidx.annotation.Nullable String name, @androidx.annotation.Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

 

내가 짠 프로그램이 아니고 상속받은 메소드를 자동 생성한 것이라 수정이 아닌 오류 해결을 해야 하겠군요.

AndroidX library를 사용하도록 디펜던시를 추가합니다.

 

build.gradle (Module) 파일을 열고 아래 내용을 추가 합니다.

dependencies {
    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'

 

 

Sync Now를 해주면

 

 

Nullable에 오류가 사라졌습니다. App을 실행하면 다른 오류가 발생합니다.

 

gradle.properties에 androidx를 사용하기 위해 추가 합니다.

 

android.useAndroidX=true
android.enableJetifier=true

 

 

Sync Now를 하고 보면 또 다른 오류가 기다리고 있습니다

 

 

 

산 넘어 산이네요.  Refactor를 이용해 소스를 activex용으로 수정을 해봅니다.  코딩 시작 단계라 사실 이렇게 까지는 하지 않아도 되지만...

 

 

 

Refactor > Migrate to AndroidX...
메뉴를 클릭하면 만일을 위해 소스를 백업 하라고 나옵니다.

 

 

예전에 사용하던 프로젝트라면 backup 해야 잘못 migrate 되었을 때 비교 확인을 할 수 있습니다. 오류가 사라지고 소스가 조금 변경 되었습니다.

 

 

import android.support.v7.app.AppCompatActivity.;

 

이것 말고 하단에 추가로 

 

import androidx.appcompat.app.AppCompatActivity;

이게 추가 되었네요. 위에 있는 v7은 사용하지 않으니 주석 처리합니다.

다시 앱을 실행해 볼까요?  이런 또 오류 군요.

 

 

 

 

MainActivity.java의

 

13번째 라인이 문제 이군요.

 

 

layout에 문제가 있다고 하네요. Layout 파일에서 오류를 찾아 봅시다.

 

 

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
  .....

 

별거 없는 것 같은데....
자세히 보면 android.support..... 이렇게 되어 있습니다.  Refactor가 수정을 못한 것 같습니다.
androidx로 수정을 해보도록 합니다.

 

 

수정을 하려면
Design > Component Tree > ConstraintLayout > 마우스 우클릭 > Convert view...

 

팝업 창에서 ConstraintLayout이 androidx.constraintlayout.widget.ConstraintLayout 로

되면 [Apply]버튼을 클릭 합니다.

 

 

activity_main.xml

 

파일을 열어보면

 

 

 

수정이 되었습니다.  이제 또 다시 한번 app을 실행해 봅니다.

 

 

 

오류 없이 화면이 나왔습니다.  오랜만에 참 힘든 오류 수정이었습니다.
그냥 안드로이드 스튜디오 4.x 버전을 사용해야 겠습니다. -_-;;

 

- copy coding -


+ Recent posts