ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [유니티] Android 13(API 33)을 타겟팅하는 앱을 출시하려면 먼저 광고 ID 선언을 작성해야 합니다. 이 선언은 Play Console에서 Android 13의 광고 ID 변경사항을 수용하기 위한 보호 장치를 제공하는 데 ..
    Unity/Solved Error 2023. 11. 14. 20:17
    728x90

    얼마 전 또 구글 플레이가 업데이트를 한다고 메일이 왔었다.

    귀찮아서 무시하고 있었지만 지금이 아니면 나중에 작업할 시간을 내기 어려울 것 같아서 이제서야 업데이트를 했다.

    근 반년만에 업데이트를 하는지라 많은 것이 바뀌었다.

    우선 결제 모듈 관련이니, 유니티 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

    댓글

Designed by Tistory.