언리얼엔진 4 모바일개발팁 신광섭 Developer Relations Lead / Programmer 에픽게임즈코리아
목차 Unreal Plugin Language 언리얼엔진 4 프로젝트 Android Studio 사용하기 (Java 빌드 / 디버깅 ) 모바일알려진이슈와팁 UE4 모바일지원에부족한부분은?( 피드백 )
Unreal Plugin Language
Unreal Plugin Language(UPL) XML 기반의언어 예전에는 Android Plugin Language 였고, ios 지원도추가개선되면서 Unreal Plugin Language 로개명 플러그인이패키징시에글로벌한어떤값들을설정가능 예 ) Android APK 의 AndroidManifest.xml 파일수정, IOS IPA 의 plist 파일수정 패키징에포함되어야하는특정파일들을지정가능 예 ).java 파일들
Tapjoy 플러그인확장 엔진에기본으로포함된 Tapjoy 플러그인사용 Engine\Plugins\Runtime\Advertising\IOSTapJoy\IOSTapJoy.uplugin ios 만지원되는플러그인에 Android 지원추가 플러그인이름이 IOSTapjoy 이기에이름수정도필요하지만, 이예제에서는그대로사용
Tapjoy 플러그인확장 Plugins 에서 Tapjoy 플러그인활성화
Tapjoy 플러그인확장 IOSTapJoy.uplugin 에 Android 용모듈추가
Tapjoy 플러그인확장 Engine\Plugins\Runtime\Advertising\IOSTapJoy\Source 에 AndroidTapJoy 폴더추가 AndroidTapJoy 폴더안에 AndroidTapJoy.Build.cs 추가 IOSTapJoy 에 IOSTapJoy.Build.cs 복사 IOSTapJoy 폴더안에 Private 폴더복사붙여넣기 IOSTapJoy.cpp -> AndroidTapJoy.cpp
Tapjoy 플러그인확장 AndroidTapJoy.Build.cs 내용에서 ios 부분삭제
Tapjoy 플러그인확장 AndroidTapJoy.cpp IOSTapJoy -> AndroidTapJoy 로수정 ios 관련코드들삭제 Development Android 빌드를통해서문제없는지확인!
Tapjoy 플러그인확장 본격적인 Android 지원추가하기! Unreal Plugin Language 파일추가 Engine\Plugins\Runtime\Advertising\IOSTapJoy\Source\AndroidTa pjoy\androidtapjoy_upl_android.xml OnlineSubsystemGameCircle_UPL.xml 을참고로 AndroidTapJoy.Build.cs 에 Uneral Plugin Language 파일처리추가
AndroidTapJoy_UPL_Android.xml 설정 Tapjoy 관련설정 Tapjoy Dashboard (https//ltv.tapjoy.com) 에친절한설명 Tapjoy 안드로이드 SDK 다운로드및라이브러리복사 TapjoySDK_Android_v11.10.1\Libraries\tapjoyconnectlibrary.jar -> Engine\Plugins\Runtime\Advertising\IOSTapJoy\ThirdPartyAndroid Libs\tapjoyconnectlibrary.jar
AndroidTapJoy_UPL_Android.xml 설정 jar 파일복사설정 <resourcecopies></resourcecopies>
AndroidTapJoy_UPL_Android.xml 설정 AndroidManifest 수정 <androidmanifestupdates></androidmanifestupdates>
AndroidTapJoy_UPL_Android.xml 설정 UE4 메인 Activity 파일 GameActivity.java 수정 <gameactivityimportadditions></gameactivityimportadditions>
AndroidTapJoy_UPL_Android.xml 설정 UE4 메인 Activity 파일 GameActivity.java 수정 <gameactivityoncreateadditions></gameactivityoncreateaddition s>
AndroidTapJoy_UPL_Android.xml 설정 UE4 메인 Activity 파일 GameActivity.java 수정 <gameactivityonstartadditions></gameactivityonstartadditions> <gameactivityonstopadditions></gameactivityonstopadditions>
AndroidTapJoy_UPL_Android.xml 설정 UE4 메인 Activity 파일 GameActivity.java 수정 <gameactivityclassadditions></gameactivityclassadditions>
AndroidTapJoy_UPL_Android.xml 설정 UE4 메인 Activity 파일 GameActivity.java 수정 JNI 를이용해서 AndroidTapJoy.cpp 파일과통신
Tapjoy Android 지원추가성공!
Unreal Plugin Language <proguardadditions></proguardadditions> <gameactivityreadmetadataadditions> </gameactivityreadmetadataadditions>
Unreal Plugin Language <gameactivityondestroyadditions> </gameactivityondestroyadditions> GameActivity.java 에 ondestroy 함수에추가 <gameactivityonpauseadditions> </gameactivityonpauseadditions> GameActivity.java 에 onpause 함수에추가 <gameactivityonresumeadditions> </gameactivityonresumeadditions> GameActivity.java 에 onresume 함수에추가
Unreal Plugin Language <gameactivityonactivityresultadditions> </gameactivityonactivityresultadditions> GameActivity.java 에 onactivityresult 함수에추가 <soloadlibrary></soloadlibrary> GameActivity.java 에추가라이브러리로드 (libue4.so 전에 )
언리얼엔진 4 프로젝트 Android Studio 사용하기
Android Studio Java 코드수정테스트및디버깅 Native 코드에대한빌드나테스트는현재는불가능 하나씩 Step By Step 으로이슈를해결하면서설명 프로젝트마다이슈가좀다를수있기에해결방법위주로
Android Studio - 프로젝트임포트하기 안드로이드패키징을이미한상태 Import project (Eclipse ADT, Gradle, etc.) 선택 임포트해야하는폴더는프로젝트폴더 /Intermediate/Android/APK
Android Studio - 프로젝트임포트하기
Android Studio 디바이스설치및디버그를시작하면에러발생 Native 빌드는어차피안되니, NDK 관련설정은제거
Android Studio 뷰옵션을 Project 를선택 APK -> src -> main -> jni 폴더삭제 Armeabi-v7a 폴더에 libue4.so -> jnilibs/armeabi-v7a 이동
Android Studio NDK 관련부분 build.gradle 에서삭제
Android Studio multidex 관련에러발생 build.gradle 파일에 multidexenabled true 추가
Android Studio 중복 entry 관련에러발생 더세부적인컴파일로그뽑아보기
Android Studio
Android Studio Playservicebasement920, playservicesgass920 에서 com/google/android/gms/buildconfig.class entry 중복
Android Studio 루트폴더에 settings.gradle 에서 playservicesgass920 삭제 build.gradle 에서 playservicesgass920 삭제
Android Studio android/support/v4/buildconfig.class 중복 entry 발생 세부로그를확인하면 supportv42300 가이슈이고제거필요
Android Studio 그런데! 필요한 android.support.v4.app 이없다는에러가 그부분만따로프로젝트에 dependency 추가
Android Studio Java heap space 에러발생 Caused by: java.lang.outofmemoryerror: Java heap space
Android Studio Java heap size 늘리기 환경변수에 _JAVA_OPTIONS 옵션사용 -Xmx4g 로 4GB 로
Android Studio 드디어빌드성공! oncreate 에브레이크포인트! 짜잔!
Android Studio 명심하셔야할부분들 Android Studio 에임포트된프로젝트는복사된프로젝트 수정한소스코드들이원본 UE4 프로젝트에적용되지않음 원본 UE4 프로젝트수정후에는변경된부분에대해서복사하거나다시임포트필요 특히 native 코드수정시에 libsue4.so 파일등
모바일알려진이슈와팁
ios Distribution mobileprovision 이슈 ios 에 Distribution mobileprovision 만사용시 signing 이슈 4.16 에서수정예정 https://github.com/epicgames/unrealengine/pull/2889
Xcode 8.3 빌드에러 Xcode 8.3 에서 ios 32 비트빌드에러이슈있음 /Users/Shared/UnrealEngine/4.15/Engine/Source/Runtime/Core/Pub lic/hal/platform.h:75:11: error: non-portable path to file '"ios/iosplatformcompilerpresetup.h"'; specified path differs in case from file name on disk [-Werror,-Wnonportable-include-path] 해결방법 ios 32bit 빌드를하지않는방법 (64bit 만빌드 ) 32bit 빌드가필요하면 Xcode 8.2.1 다운그레이드추천 https://issues.unrealengine.com/issue/ue-41313 확인후소스코드적용 4.15.2, 4.16 에수정적용예정
패키지된컨텐츠사이즈줄이기 Shader Permutation Reduction 을통해필요하지않은셰이더줄이기 Directories to Never Cook 을통해서 Editor 컨텐츠제거하기
ae727f8dabbec201963ce68d12aed0a7da6fab91 "Package game data inside.apk 크래쉬 "Package game data inside.apk" 사용시크래쉬발생 이유는 APK 안에들어가는 OBB 가 400-600 메가이상일경우 구글은 100MB 이상의 APK 를지원하지않음 중국에서는큰 APK 로서비스를하거나, 테스트를위해서큰 APK 하나가유용한경우가있음 4.16 에서수정예정! 지금필요하다면? https://github.com/epicgames/unrealengine/commit/ae727f8dabbec201 963ce68d12aed0a7da6fab91 GameActivity.java, AndroidJNI.cpp, AndroidFile.cpp 수정사항참고
같은 DLC 에대한패치청크파일증가이슈 ProjectLauncher 를사용해서쉽게패치관련청크를만드는기능지원됨 But! 컨텐츠변경이없은상황에서 DLC 다시생성시청크파일들이증가하는이슈 4.16 에수정예정으로, 지금은커맨드라인옵션사용권장
안드로이드 GPU 프로파일링 안드로이드디바이스에서렌더링관련이슈나크래쉬발생시디버깅 GPU 프로파일링을위해서는 APK 에라이브러리포함이나설정이필요 쉽게설정할수있는옵션추가
Q/A
Q/A \ 모바일관련피드백 /
감사합니다!