개발 관련/SW, App 관련

[Unity 오류] Unity 2018에서 API 31 이상 빌드 오류 해결중..

by 소서리스25 2023. 3. 15.
반응형

 

오류의 상황..

 

unity 2018에서 API 30 까지는 기본적인 상태에 plugin/android에서  AndroidManifest.xml이

생성되지 않는다. 없어도 빌드하여 앱설치에는 문제가 되지 않는다.

(* 여러가지 plugin을 쓴 것은 아니고 기본적으로 admob 정도와 unity의 inapp 결재만 사용)

물론 최종 apk에서 보면 AndroidManifest.xml는 생성되어 있다.

 

하지만 API31에서는 저렇게 하면 빌드 조차 안된다.

 

이제까지 unity 2018에서 API 30까지는 문제 없이 사용토록 조치하였으나 그 이상에선

뭔가를 해주면 되지 않았다.

 

기본적으로 설치했다면 android 9.0(API 28)까진 문제 없이 사용하지만 API 29, 30 부터는

예전 쓰던 SDK-Manager로는 업데이트가 안되어 Android Studio 를 설치하고 거기에서

API 29, 30을 추가로 다운 받아서 sdk 폴더로 옮겨서 사용하면 적어도 API 30까진 문제 없이

사용할 수 있었다.

예전에 unity 5.6 프로젝트들을 2018로 업데이트하면서 그냥 빌드가 안되어 거기에 맞춰 셋팅해

줘서 문제가 안되었는데.. 

API 31부터는 도저히 저 방법으로는 빌드가 안되어 결국 Unity 2021 버전을 설치하여 처리

하였는데 아무래도 Unity 2018과 2021는 차이가 너무나서 어떻게 해보면 되지 않을까 해서

여러가지로 시도해 보았다.

 

우선 빌드하게 되면 API가 맞지 않아 빌드 중간에 멈춰버린다. (캡쳐자료가...)

 

이에 API 24 미만 관련사항은 sdk에서 모두 백업해 두고 현재까지 나온 API 33까지 다운 거기에

맞도록 다른 것도 업데이트하고 예전 버전은 백업하였다. 

 

정리하면..

 

우선 설치 환경은 이렇다.

 

1. Unity 2018.4.3f1 (64-bit) 이 설치되어 있다.

2. API는 31~33까지 Android Studio의 SDK Manager을 이용하여 tools 등 API에 맞춰 다운

    받아서 설치

3. Unity Project에서 Android 상에서 API 31~33까지 확인

4. 기존의 API 24미만은 백업하고 삭제(추후 일부 api는 복구할 수 있음)

 

그랬더니 Unity 2018에서 빌드가 된다.!! 

빌드는 됐는데 문제는 설치 과정에서 설치도 되는데 열기가 안된다...

 

-_-;;  뭐지... application에서는 보인다... 그러나 아이콘이 없다..

 

그래서 검색해보니 AndroidManifest.xml가 없어서 그렇다는 것을 알게 되고..다음과 같이 기본만 적용..

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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">
  
        <application>
      
            <activity android:name="com.unity3d.player.UnityPlayerActivity"
                      android:theme="@style/UnityThemeSelector"
                      android:exported="true" />
                    
                <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" />
   
  </application>
  
</manifest>
cs

 

위의 AndroidManifest.xml 를 그대로 넣으면 아이콘의 이름이 패키지로 뜨게 된다.

다음과 같이 application 부분을 바꿔줘야 한다.

 

1
<application android:label="@string/app_name">
cs

 

Unity에서의 기본적인 것만 사용하여 빌드하니 설치는 된다.

빌드가 되고 설치한 후 열기까지도 된 상황..그리고 정상적으로 앱 아이콘에 이름이 뜨게 된다.

그러나 현재는 실행된 후 앱은 로고 나온 후 회색 바탕화면에서 멈춰진 상태임...

다시 폭풍 검색....

 

2023.03.18 ( 아들 생일이다....)

 

퇴근한 다음 검색 후.. 발견한 사항 적용..

일단 간단한 프로젝트를 만들고 다음과 같이 설정해 주었다.

 

PlayerSettings  >  OtherSettings  >  Mute OtherAudioSources 를 체크하기

 

오~~!! 그랬더니 모든 것이 정상작동한다.!!  Unity 2018.4.3에서 API 31이 된다. 

(물론 실행 오류가 있는 android 12에서 아직 못 돌려봤다.)

이제 본 프로젝트에 적용하는 일만 남았다!!

 

이게 잘 되면 API 33까지 도전을..

반응형

댓글