Unity 에서 빌드를 통해 만들어진 APK 파일을 실행시키면 가장 먼저 실행되는 디폴트 액티비티가
UnityPlayerActivity로 고정되어 있다.
이번 포스팅에서는 Unity에서AndroidManifest.xml파일 수정을 통해 디폴트 액티비티를 변경 또는 확장하는 방법에 대해 다룬다.
시작하기 앞서 나는 Unity 2021.3.1f1 를 사용하고 있다.
우선 새로운 프로젝트를 하나 생성한다.

Android 로 플랫폼 바꿔주고

Player Settings > Player > Settings for Android > Publishing Settings > Other Settings 에서 아래의 그림과 같이 세팅해준다.

다음 Publishing Settings > Custom Main Manifest 옵션을 체크하면 AndroidManifest 경로가 나타난다.

매니페스트 파일을 확인해보면 메인 액티비티가 UnityPlayerActivity 로 설정되어 있다.
<?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">
<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>
AndroidManifest.xml 파일을 수정하기 전에 Development Build 로 빌드한다.

빌드가 완료되면 UnityProjectsPath\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\build\intermediates\runtime_library_classes_jar\debug\classes.jar 파일과
UnityProjectPath\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\libs\unity-classes.jar 파일이 생기는데 두 파일을 킵해둔다.
다음 유니티 메인 액티비티를 변경하기 위해 안드로이드 스튜디오에서 Unity 와 같은 SDK 버전으로 새로운 프로젝트를 하나 생성한다.

기존 포스팅을 참고해서 킵해둔 classes.jar 파일과 unity-classes.jar 파일을 임포트 해주고 build.gradle 파일을 수정해준다.
plugins {
id 'com.android.library'
}
android {
...
}
dependencies {
compileOnly files('libs\\classes.jar')
compileOnly files('libs\\unity-classes.jar')
}
그리고 UnityPlayerActivity 를 상속받도록 MainActivity 를 수정한다. 나는 Toast 를 띄우는 코드를 추가했다.
package com.example.testapplication;
import android.os.Bundle;
import android.widget.Toast;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(this, "L3ts.Koo00 !", Toast.LENGTH_LONG).show();
}
}
그냥 빌드하면 에러나기 때문에 res 폴더를 지우고 AndroidManifest.xml 파일을 다음과 같이 수정해준다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testapplication">
<application>
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
빌드 결과 나온 app-debug.aar 파일을 유니티 프로젝트의 Assets\Plugins 폴더에 추가해준다.

유니티 프로젝트의 AndroidManifest.xml 파일을 수정해준다.
<?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.example.testapplication.MainActivity"
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>
빌드하고 앱을 실행시키면 메인 액티비티가 변경되어 Toast 팝업이 나타난다.

Stay calm and focused when playing slope game. Keep the ball in the middle of the track; this will help your ball go in the right direction and not roll off the track.
The most important piece of advice I received while using such a service was to pick the correct slope company.