본문 바로가기

[unity] CommandInvokationFailure: Unable to install APK to device. 오류 해결 방법

앤디가이 2022. 9. 1.

구글 플레이스토어 앱 등록 시 target sdk가 31 이상으로 변경되었다. 유니티에서 target sdk 31(Android 12)로 빌드 시 CommandInvokationFailure: Unable to install APK to device. Please make sure the Android SDK is installed and is properly configured in the Editor 오류 해결 방법에 대해 알아보자.

 

유니티에서 target sdk 30으로 빌드 및 실행이 잘 되던 상태에서 target sdk 만 31로 변경 후 빌드하면 핸드폰에 실행할 수 없다는 오류 메시지가 계속 발생되었다.

apk 빌드까지는 문제없이 진행되지만 실행이 안되는 현상이다.

오류 원인은 무엇이고 target sdk 31에서 추가적으로 해줘야 하는 작업이 어떤 게 있는지 알아보자.

 

 

오류 메시지

내가 마주한 오류메세지는 다음과 같다.

CommandInvokationFailure: Unable to install APK to device. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.
/Users/***/Library/Android/sdk/platform-tools/adb -s "***" install -r "/Users/***/Documents/Project/***/build/Android/***.apk"

stderr[
adb: failed to install /Users/***/Documents/Project/***/build/Android/***.apk: Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl1557439219.tmp/base.apk (at Binary XML file line #62): com.unity3d.player.UnityPlayerActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present]
]
stdout[
Performing Streamed Install
]
exit code: 1

오류 메세지를 보면 android:exported를 정의해줘야 한다고 나온다.

 

 

오류 해결 방법

유니티 프로젝트 내 AndroidManifest.xml 파일이 있다면 열어준다.

만약 AndroidManifest.xml 파일이 없다면, 기존 글을 참고하여 AndroidManifest 파일을 유니티에 만들어 준다.

2022.09.01 - [unity3d/Research] - [unity] AndroidManifest 만드는 방법

 

[unity] AndroidManifest 만드는 방법

유니티에서 AndroidManifest 파일을 만들어야 하는 상황이 있다. 유니티에서 AndroidManifest 파일을 만드는 방법 및 권한 추가하는 방법 등에 대해 알아보자. AndroidManifest 파일 추출방법 내 프로젝트 상

wonjuri.tistory.com

 

AndroidManifest 파일을 연 후 android:exported 를 추가 정의해 준 뒤 다시 저장해준다.

기본 저장 루트는 Assets/Plugins/Android/ 이다.

 

android:exported 설명

이 옵션 요소는 다른 애플리케이션의 구성요소에서 활동을 시작할 수 있는지를 설정한다.

"true"인 경우 모든 앱에서 활동에 액세스 할 수 있으며 정확한 클래스 이름으로 활동을 시작할 수 있다.

'false'인 경우 활동은 같은 애플리케이션의 구성요소나 사용자 ID가 같은 애플리케이션, 권한이 있는 시스템 구성요소에서만 시작될 수 있다.

본인 애플리케이션에서 옵션에 맞게 True, False 값을 설정해주면 된다.

 

 

댓글