유니티로 만든 AR 앱을 구글 플레이스토어에 등록하려 하니 예상치 못한 에러들이 연속으로 발생했습니다. 앱을 등록하는 과정에서 겪은 다양한 문제들과 그 해결 방법을 공유하려 합니다. 이 글이 유사한 문제로 고민하는 개발자들에게 도움이 되길 바랍니다.
AAB 파일로의 변환
구글 플레이스토어는 이제 *.apk 대신 *.aab 파일 형식을 요구합니다.
AAB 파일 형식으로 앱을 만드는 것은 유니티의 File > Build Settings 메뉴에서 Build App Bundle (Google Play) 옵션을 선택하면 됩니다.
이는 구글 플레이스토어가 요구하는 새로운 앱 배포 형식입니다.
첫 번째 에러: 디버그 모드 서명 문제
"디버그 모드로 서명한 APK 또는 Android App Bundle을 업로드했습니다. 출시 모드로 APK 또는 Android App Bundle에 서명해야 합니다"라는 메시지는 keystore를 등록함으로써 해결할 수 있었습니다.
Keystore 설정 후, 패키지 이름과 버전 정보를 확인하는 것이 중요합니다.
디버그 가능 APK 및 Android App Bundle에 관해 자세히 알아보기
두 번째 에러: 디버그 가능 속성
Assets > Plugins > Android > AndroidManifest.xml 파일에서 android:debuggable="true"로 설정되어 있었습니다.
<application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="true" android:exported="true">
이를 false로 변경함으로써 보안 문제를 해결할 수 있었습니다.
세 번째 에러: API 수준 타겟팅
""현재 앱이 30의 API 수준을 타겟팅하고 있지만, API 수준 31 이상을 타겟팅해야 합니다"라는 메시지는 타겟 API Level을 API 31 이상으로 설정함으로써 해결했습니다.
네 번째 에러: android:exported 속성 문제
"인텐트 필터를 포함하되 'android:exported' 속성을 설정하지 않고 활동, 활동 별칭, 서비스 또는 broadcast receiver가 있는 APK 또는 Android App Bundle을 업로드했습니다."라는 에러가 발생했습니다.
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:exported="true">
AndroidManifest.xml 파일에 android:exported="true"를 추가하는 것으로 문제를 해결하려 했으나 실패했습니다.
최종 해결 방법
위 방법으로도 문제가 해결되지 않았을 때, AndroidManifest.xml을 추출하고, android:exported 속성이 누락된 receiver 또는 activity 태그를 찾아 해결했습니다.
이후 android:exported="false" 및 tools:replace="android:exported" 속성을 추가하여 문제를 해결할 수 있었습니다.
1. APK 빌드
첫 번째로, 문제 해결을 위해 Android App Bundle (aab) 파일 대신 APK 파일을 빌드합니다.
이렇게 하면 완성된 최종본 AndroidManifest.xml 파일을 검사할 수 있게 됩니다.
2. APKToolGUI 사용
APKToolGUI를 다운로드 받아 사용하여 빌드된 APK 파일에서 AndroidManifest.xml 파일을 추출합니다.
이 툴을 사용하면 APK 파일 내부의 구조와 함께 AndroidManifest.xml 파일을 손쉽게 얻을 수 있습니다.
3. AndroidManifest.xml 파일 검사
추출된 AndroidManifest.xml 파일을 열고, 태그를 검색합니다.
이 태그가 포함된 혹은 태그에서 android:exported 속성이 누락된 구성 요소를 식별합니다.
4. Custom Main Manifest 수정
이제, 유니티 에디터에서 Custom Main Manifest를 활성화했을 때 생성되는 AndroidManifest.xml 파일을 수정합니다.
누락된 android:exported 속성을 가진 <receiver> 혹은 <activity> 태그를 찾아 해당 파일에 복사한 후, android:exported="false"와 tools:replace="android:exported" 속성을 추가해줍니다.
이렇게 하여 android:exported 속성의 명시적 설정을 완료합니다.
5. 재빌드 및 업로드
수정된 AndroidManifest.xml 파일을 바탕으로 앱을 다시 빌드하고, 구글 플레이스토어에 업로드합니다.
이 과정을 통해 앞서 마주쳤던 android:exported 속성 관련 에러가 해결됩니다.
결론
유니티로 제작된 안드로이드 앱을 구글 플레이스토어에 등록하는 과정은 여러 단계의 검증과 수정을 필요로 합니다.
위에서 언급한 에러와 해결 방법을 참고하여, 앱 등록 과정에서 발생할 수 있는 문제들을 체계적으로 해결할 수 있습니다.
이 과정을 통해 개발자는 안드로이드 앱 배포의 복잡성을 이해하고, 성공적인 앱 등록 경험을 쌓을 수 있을 것입니다.
'Language > UNITY' 카테고리의 다른 글
[UNITY] 빌드 시 IL2CPP.exe 에러 (0) | 2023.01.30 |
---|---|
[UNITY] 안드로이드 12(API LEVEL 31) 빌드 시 블루투스 앱 강제종료 (0) | 2023.01.27 |
유니티엔진 창 여러개 띄우기 (0) | 2014.08.06 |
유니티엔진과 비쥬얼스튜디오 연결하자 UnityVS (0) | 2014.07.31 |