Open sloway opened 2 years ago
UAALExportedUnityProjectOnAndroid 를 설정한다
app project 가 unity project 를 참조하도록 dependency를 설정한다
여기까지 하면 unityLibrary module 이 추가된다. 원래 module 위치를 참조하나 했더니 그게 아니고 통채로 복사한다.
아직 UnityPlayerActivity 를 설정하지도 않았는데 참 다양한 build error 가 발생했다. 발생 할 때마다 기록을 했어야했는데 마음이 급해서 그러지는 못하고 기억나는대로 지금 기록한다.
이건 바꾼건 아니지만 기록 삼아서...
이건 아마 gradle version 에 따라 다를텐데 어느 버전 이상으로 가면 activity 마다 exported 설정을 해야한다고 한다. unityLibrary 에는 그게 안되어 있어서 AndroidManifest.xml 에서 그 부분 추가해줬다
// 맨 마지막에 exported attribute 추가해줬다
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:resizeableActivity="false" android:hardwareAccelerated="false" android:exported="true">
이걸 몰라서 한참 헤맸다. 아무리 SDK Manager를 통해서 ndk 를 설치해줘도 계속 없다고... 참고로 il2cpp 때문에 NDK 가 필요하다. java나 kt 만 있었으면 안필요했겠지... 저 값이 비어있었다 그래서 설정을 하려고 하니 저 창에서는 설정 불가 local.properties 에 ndk.dir 을 추가해줬다. android ndk 사용 할 줄 알았는데, Unity 의 NDK 를 사용했다. 생각해보면 이게 맞긴 맞는듯....
이런 Error 도 발생했다.
Error: Could not get unknown property ‘unityStreamingAssets’ for object of type com.android.build.gradle.internal.dsl.AaptOptions.
gradle.properties 에 한줄 추가해서 해결은 했다. 하지만 정확히 무슨 의미인지는 잘...
unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist
여기까지 해서 Gradle build error 는 없어졌던 것 같다
별거 없다 딱 이거만 있으면 됨
public class UnityActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("Unity", "This is unity activity");
}
}
IUnityPlayerLifecycleEvents 를 찾을 수 없다는 에러가 나와서 (이 파일은 unity-classes.jar 에 있다) 아래 라인 추가
// build.gradle of app
dependencies {
implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\\libs'), include: ['*.jar']) // 이거
여기까지 하면 project build 까지 되고 app 실행이 된다... 하지만....
App 실행 후 UnityPlayerActivity 에 진입하면 죽는다.... 에러 메세지는 대략 이렇다.
android.content.res.Resources$NotFoundException: String resource ID #0x0
이거만 보면 무슨 말인지 감도 안온다... 하지만 잘 찾아보니... 참 허접하게도 string resource 가 없어서란다. 이런건 Unity가...참... 좀... 그렇다... 이런거 예외처리도 안해놓다니.... 아무튼 string.xml 에 아래 내용 추가하면 된다
<string name="game_view_content_description">Game view</string>
여기까지 하고나니... 원하는대로 실행이 된다....
정리는 간단하게만 했지만 무한한 Trial and Error 의 반복... 아 힘들다...
그래도 aar 로 추가하는 것 까지는 해놔야 마움이 편할듯...
Unity app 을 Android project 에서 실행하도록 할 때 추천 하는 방식은 이렇다고 한다.
여기서는 우선 import module 로 시작한다