WinCNT

Target Android SDK not installed 해결을 위한 Android SDK설치(Command-line tools 사용) 본문

Unity/Unity 개발 중 발생한 이슈 정리

Target Android SDK not installed 해결을 위한 Android SDK설치(Command-line tools 사용)

WinCNT_SSS 2024. 3. 4. 13:14

발생한 이슈

유니티를 버전 업하고 안드로이드 빌드를 실행할 때 에러가 발생했다


이슈 상세 - 빌드 시 Target Android SDK not installed 발생

발생한 에러는 다음과 같다

Target Android SDK not installed

Android SDK does not include your Target SDK of 29. Please use the Android SDK Manager to install your target SDK version. Restart Unity after SDK installation for the changes to take effect.

발생 원인 - Android 10.0(API level 29)가 없기 때문

조사해보니 다음과 같은 사실을 알게되었다

일단 현 프로젝트의 안드로이드 빌드는 Android 10.0(API level 29)로 되어 있다

이건 Meta Quest 2의 운영체제가 Android 10.0이기 때문이라 추측된다

 

그래서 우선 유니티 2022.3.8f1에는 어떠한 SDK가 설치됬는지 확인해봤다

현 유니티 버전에 안드로이드 모듈이 설치되어 있다면

유니티와 연동된 Android SDK의 경로는 Preferences > External Tools에서 확인할 수 있다

Copy Path로 이동하면 platforms라는 폴더가 있는데 거기에 설치된 Android SDK의 버전을 확인할 수 있다

유니티 2022.3.8f1에는 Android 12.0와 Android 12L가 설치되는 것 같다


Android 10.0(API level 29) 설치하기(근데 이번 해결책이 아님)

결론부터 말하자면 Meta Quest 2를 위해서는 Android 10.0를 설치할 필요가 전혀 없었다

Meta Quest Apps Must Target Android 12L Starting June 30

 

Meta Quest Apps Must Target Android 12L Starting June 30

Starting June 30, 2023, all new Meta Quest app submissions are required to target Android 12L (API level 32) in order to further improve the security and health of the VR ecosystem. Learn more about what’s required.

developer.oculus.com

 

일단 Android 10.0를 설치하려던 이유가 캡처 이미지 파일 저장 처리에서 에러가 발생하는 원인이 API Target Level이 다르기 때문이라 추측했기 때문이었다

Target API Level를 Android 12.0에 맞추니 빌드는 잘 만들어졌는데, 캡처한 이미지를 저장하는 부분에서 다음과 같은 에러가 발생했었다

Error Unity UnauthorizedAccessException: Access to the path "파일 경로" is denied.

 

그래서 Android 10.0(API level 29)를 설치를 시도했고, 삽질 끝에 성공했으며, 이미지 파일 자체는 저장은 됐으나, 캡처가 제대로 되지 않았음을 알게 되었다

 

그래도 Android 10.0(API level 29) 설치를 위한 삽질들은 나름 나중에 도움이 될 내용(이라고 생각하고 싶다)이기 때문에 정리해 놓고자 한다


Android 10.0(API level 29) 설치를 위한 JAVA_HOME 설정

현재 컴퓨터에 JAVA_HOME를 만든 적이 없기 때문에, 우선 JAVA_HOME부터 설정했다

JAVA를 따로 설치할 필요는 없고, 유니티에 설치된 OpenJDK를 설정해주면 된다

그리고 잊지말고 Path에 %JAVA_HOME%\bin\를 추가하고 재부팅을 해주자

 

CMD에서 확인이 가능하면 성공!


Android 10.0(API level 29) 설치

다음은 sdkmanager를 이용해 Android 10.0(API level 29)를 설치해려고 한다

https://developer.android.com/studio/command-line?hl=ko#tools-sdk

 

명령줄 도구  |  Android Studio  |  Android Developers

제공되는 패키지별로 구성되어 있는, 사용 가능한 가장 중요한 명령줄 도구에 관해 자세히 알아보세요.

developer.android.com

Unity - Manual: Android environment setup

 

Unity - Manual: Android environment setup

Getting started with Android Android environment setup To create a Unity application for Android, you first need to set up your Unity project to support Android. To support Android, a Unity project requires the following dependencies: The Android Build Sup

docs.unity3d.com

 

관리자 권한으로 CDM를 실행시키고 다음을 입력하자

cd “유니티에서 확인한 Android SDK의 경로\\cmdline-tools\\<Version>\\bin”

 

예) C:\Program Files\Unity\Hub\Editor\2022.3.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\cmdline-tools\6.0\bin

 

처음에는 다른 참고 사이트들을 참고해서 tools\bin에 있는 sdkmanager를 사용하려고 했으나 계속 NoClassDefFoundError가 발생했다(…)

안드로이드 공식 문서 보면 **android_sdk/cmdline-tools/<version>/bin/**라고 나와 있고, 거기에도 sdkmanager.bat이 있길래 실험해보니 에러가 발생하지 않았다

(도중에 대대적인 업데이트가 있었던 걸까?)

암튼 속았다!

 

해당 디렉토리에 이동했으면 다음으로 동작 확인을 해보자

sdkmanager --version

문제 없으면 라이센스에 동의하고

sdkmanager --licenses

 

Android 10.0(API level 29)를 설치하자

sdkmanager "platforms;android-29”

그러면 platforms폴더에 android-29가 추가된다!

 

하지만 Android 10.0(API level 29)로 바꾸고 빌드를 하니 다음과 같은 에러가 발생했다

License for package Android SDK Platform 30 not accepted.

CommandInvokationFailure: Gradle build failed.

잘 몰라서 android-30도 인스톨하고 유니티를 재기동하니 무사히 빌드할 수 있게 되었다(…)


마무리

Android 10.0 SDK의 설치는 결국 쓸모는 없었지만 그래도 유의미한 삽질이라 믿으며 정리해보았다

이제 이미지 캡처의 문제점이 무엇인지 다시 확인해봐야겠다


참고 자료

Meta Quest Apps Must Target Android 12L Starting June 30

 

Meta Quest Apps Must Target Android 12L Starting June 30

Starting June 30, 2023, all new Meta Quest app submissions are required to target Android 12L (API level 32) in order to further improve the security and health of the VR ecosystem. Learn more about what’s required.

developer.oculus.com

[Unity] 유니티 엔진 안드로이드 SDK API 수동 업데이트 다운로드 android sdk does not include your target sdk of ... 오류 해결

 

[Unity] 유니티 엔진 안드로이드 SDK API 수동 업데이트 다운로드 android sdk does not include your target sdk o

유니티를 이용해 안드로이드 플랫폼으로 빌드하는데 android sdk does not include your target sdk of 숫자 와 같은 오류를 뿜어내고 빌드가 진행이 되지 않는 현상이 나타난다. Player 세팅부분에서 Minimum API

note0913.tistory.com

sdkmanager  |  Android 개발자  |  Android Developers

 

sdkmanager  |  Android Studio  |  Android Developers

sdkmanager는 Android SDK용 패키지를 보고 설치하고 업데이트하고 제거할 수 있는 명령줄 도구입니다.

developer.android.com

Unity - Manual: Android environment setup

 

Unity - Manual: Android environment setup

Getting started with Android Android environment setup To create a Unity application for Android, you first need to set up your Unity project to support Android. To support Android, a Unity project requires the following dependencies: The Android Build Sup

docs.unity3d.com