-
[유니티] Android 13(API 33)을 타겟팅하는 앱을 출시하려면 먼저 광고 ID 선언을 작성해야 합니다. 이 선언은 Play Console에서 Android 13의 광고 ID 변경사항을 수용하기 위한 보호 장치를 제공하는 데 ..Unity/Solved Error 2023. 11. 14. 20:17728x90
얼마 전 또 구글 플레이가 업데이트를 한다고 메일이 왔었다.
귀찮아서 무시하고 있었지만 지금이 아니면 나중에 작업할 시간을 내기 어려울 것 같아서 이제서야 업데이트를 했다.
근 반년만에 업데이트를 하는지라 많은 것이 바뀌었다.
우선 결제 모듈 관련이니, 유니티 Package Manager에서 IAP를 최신 버전으로 업데이트 했다.
그 후 빌드하고 업로드 했더니 오류를 마구 뱉는다.
일단 이제 APK는 받아주지 않게 된 것 같다.
유니티에서 aab 빌드 설정에 체크하여 aab로 빌드한다.
aab로 바꿔 올리니 서명에 등록이 안 되었다고 한다.
사실 이전부터 서명을 몇 년간 계속 권유했었는데, 권장사항일 뿐 필수사항이 아니어서 무시해왔었다.
하지만 API 33부터는 강제사항인 것 같다.
App Bundle 위에 Play 앱 서명 사용을 눌러 서명 사용을 시작했다.
유니티에서 안드로이드 스튜디오로 export 하지 않는 이상, 자바 키 저장소 쪽으로 체크한다.
먼저 PERK 도구를 다운 받아 받은 파일을 키스토어 파일과 같은 폴더에 넣는다.
위 그림의 아래의 텍스트를 복사해서 2 가지를 수정해야 한다.
[예시]
$ java -jar pepk.jar --keystore=키스토어이름.keystore --alias=ㅇㅇㅇㅇ --output=encrypted_private_key_path --encryptionkey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
foo.keystore 부분은 키스토어 파일 이름으로 바꾼다.
alias 부분은 사전에 유니티 player settings에서 설정했던 alias 이름 값으로 바꾼다.
encrypted_private_key_path의 경우 출력할 파일 이름인데, 이 부분은 원하는 것으로 바꿔도 되고 안 바꾸고 그냥 해도 된다.
cmd를 실행 후 키스토어 파일이 있는 해당 폴더로 들어가 수정한 텍스트를 붙여넣어 실행한다.
혹시라도 실행이 안 될 경우 자바가 환경변수로 등록이 안되어있는지 확인하도록 한다.
실행하면 각 비밀번호 입력을 요구하는데, 유니티에서 publish setting에 했던 것처럼 비밀번호를 입력해준다.
완료되면 같은 폴더 내에 암호화 키가 파일로 저장되며, 이 파일을 업로드해주면 서명이 완료된다.
그러나 서명을 완료하고 aab 파일을 올려도 딱히 광고 ID 문제는 해결되지 않았다.
유니티에서 빌드할 때 자동으로 처리되지 않는 것이다.
간과한 게 몇 가지 있었는데 앱 업데이트를 하지 않는 동안 정책이 몇 가지가 더 추가되었다는 것이다.
메뉴 맨 아래에 있는 앱 콘텐츠로 들어가 광고 ID에 관련된 정책을 설정해주어야 했다.
혹시라도 오랫동안 방치하여 정책이 쌓여있다면 이 기회에 모두 업데이트 해준다.
그 다음으로는 수동으로 빌드 설정을 바꾸는 것이다.
간단한 게임이라 특별히 건드리지 않았었지만, AndroidManifest.xml 파일을 직접 수정해야 할 때가 온 것이다.
Player Settings로 들어가 Custom Main Manifest를 켜서 AndroidManifest.xml 파일이 생성되도록 해준다.
이 파일을 Project 뷰의 Plugins/Android 폴더 안에 생성된다.
이미 AndroidManifest를 사용중인 프로젝트라면 아래 한 줄만 추가하면 된다.
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
만약 그렇지 않아서 uses-permission은 어느 줄에 넣어야 되는지 잘 모르겠다면 아래와 같이 작성하면 된다.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="com.google.android.gms.permission.AD_ID"/> <application> <activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> </activity> </application> </manifest>
이 상태로 AAB로 빌드한 후 업로드하면 된다.
728x90'Unity > Solved Error' 카테고리의 다른 글
UNITY : failed to update android sdk package list. (0) 2024.09.11 Unity UIToolkit text elipsis(말줄임표) 문제 (0) 2023.12.27 유니티 UIToolkit 빌드 후 텍스트 잘림 현상 (1) 2023.12.17 Unity FCM (Firebase Cloud Messaging) com.amazonaws.unity.GCMBroadcastReceiver 에러 (0) 2022.01.03