Android, SDK에 대해서 부제: Database Inspector가 보이지 않을 때

이도현·2023년 9월 6일
0

Android 공부

목록 보기
23/30

0. 개요

노트북과 데스크톱으로 Github로 Android Studio 개발환경을 공유하며 작업을 하던 중 노트북에선 Database Inspector가 되는데 데스크톱에선 Database Inspector가 안되는 문제에 봉착했다.

시도 했던 것

  • File -> Invalidate Caches -> Invalidate and Restart

    캐시문제 해결: 캐시된 데이터가 오래되거나 손상된 것을 해결
    인덱싱 문제: 파일들을 인덱싱 정보가 오류를 포함하거나 업데이트 되지 않는 것을 해결
    Gradle 동기화 문제: Gradle설정이나 종속성에 문제가 발생하여 동기화 에러가 발생한 것을 해결

  • Build -> Clean Project, Build -> Rebuild Project

    Celan Project: 이전에 컴파일된 클래스파일, 리소스, APK, AAR, 및 기타 빌드 관련 출력물을 제거
    Rebuild Projecdt: 모든 소스코드와 리소스를 컴파일하고, APK를 다시생성

이 두개를 해도 해결이 안될 때 우리는 이제 무엇을 확인해야할까.
필자의 경우에는 모듈이 세개 있고 각각의 build.gradle 에서의 compile sdk, target sdk, minsdk가 달랐었다.

domain, data 모듈에서 minSdk 24, targetSDK 33, presentation 모듈에서 min 33 taget 34, 그리고 모든 모듈의 complieSdk 34로하고 emulater의 API LEVEL을 34에서 33으로 변경하였다. 그리고 SDK Manager에서 필요한 것들을 설치했다.

  • 위와 같이 수정하니 됐다. 하지만 이렇게 하지말길 바란다.
    왜 됐을까, 왜 된지 모른다면 다음에 더 복합문제에 직면하게 될 것이다. 확실히 알아보자.
    SDK가 무엇인지 알아보고 SDK와 Database Inspector, emulator의 관계 알아보자.

1. SDK

1) sdk란?

  • SDK(Software Development Kit)은 특정 플랫폼이나 서비스에 애플리케이션을 개발하기 위해 필요한 도구, 라이브러리, 문서, 코드 샘플 등르 제공하는 것

2) minSDK

  • 애플리케이션이 실행될 수 있는 최소 안드로이드 버전을 나타낸다.
  • 이 버전보다 낮은 안드로이드 버전을 실행하는 기기에서는 애플리케이션을 설치할 수 없다.

3) targetSDK

  • 애플리케이션을 테스트하고 최적화한 안드로이드 버전을 나타냅니다.
  • 이는 애플리케이션이 주로 대상으로 하는 안드로이드 버전을 의미
  • targetSDK보다 높은 버전의 안드로이드에서는 호환성모드를 사용하여 앱을 실행할 수 있다.

4) Compile SDK(Compile SDK Version)

  • 애플리케이션을 컴파일하는 데 사용되는 Android API 버전을 나타냄
  • 이 버전은 개발 중에 사용할 수 있는 API 버전
  • Complie SDK는 minSDK와 targetSDK와 다르게 사용자에게 직접적인 영향을 주지 않는다.

2. Database Inspector와 Emulator

1) 에뮬레이터(emulator): 실제 기기 없이 PC에서 Android 환경을 에뮬레이션하여 앱을 싱행하게 테스트할 수 있게 해줌

  • 애뮬레이터에서 사용하는 Android버전은 Android SDK의 특정 버전과 연관되어 있다.
    예를 들어 Android 10을 대상으로 한 에뮬레이터는 Android10의 SDK 버전을 기반으로한다.

    그러므로 SDK Manager에서 해당 버전을 체크하고 설치하고 apply해주어야 한다.

2) Database Inspector

https://developer.android.com/studio/inspect/database?hl=ko

  • databse inspector는 API 수준 26 이상에서 Android 운영체제에 포함된 SQLite 라이브러리에서만 작동

    문제는 SDK MANAGER에 설치되지 않은 API LEVEL 33, 34를 33, 34레벨인 emulator에서 사용했던 것이 문제였던 것이다.

3. 추가적으로

  • 정리하자면 SDK MANAGER에서 emulator에서 사용될 수준의 API를 설치하지 않고 DATABASE INSPECTOR를 들여다 봤기 때문에 볼 수 없었던 것이다.

    왜인진 모르겠지만 34수준에선 Security 문제가 추가적 발생한다. 알아봐야겠지만. 안정적으로 33수준으로 진행하길 바란다.

  • 그렇다면 세가지 모듈에 minSDK와 TargetSDK는 쓸데 없이 다른 것이다. 특별한 이유가 없다면 통일시켜야겠다.

profile
좋은 지식 나누어요

0개의 댓글