Start() 안의 부분은 내가 지어낸 건데 보통 대부분의 언어는 싱글톤을 만들면 초기 인스턴스를 설정해주는 부분이 없으나 유니티는 저 부분이 매우 필요하다.
(먼가 글하나 날로 먹는 것 같아서 살짝 TMI를 넣어본다.)
이 말이 이해가 안 가는 사람은 아직 유니티에서 싱글톤의 초기 인스턴스가 필요한 형태의 특수성을 이해할 정도로 더 많이 쓰지 않았다는 것이다. 쉽게 말하자면 유니티 프로젝트 안에 싱글톤 매니저 만들고 인스펙터에서 초기값 이것저것 설정해놓는 부분이 있는데 그거 자체가 이미 싱글톤 인스턴스가 생성된 것이라고 보면 된다. 그래서 저 코드가 없으면 당신이 설정해놓은 싱글톤 인스턴스가 스태틱 인스턴스에 안 들어가서 설정해놓은 초기값을 못쓰고 스태틱 그냥 새로운 인스턴스를 만들어버린다.
더 깔끔한 방법이 없나 아쉽긴 한데... 저 정도만으로 해도 크게 문제 될 건 없을 것 같다.
ObstacleManager.getInstance().SpawnCar() 이런 식으로 호출해서 사용하면 된다.
mainTemplate.gradle file is using the old aaptOptions noCompress property definition which does not include types defined by unityStreamingAssets constant.
에러와 함께 빌드 실패한다.
해결방법
Project Settings > Player > Publishing Settings > Build > Custom Main Gradle Template 체크
생성된 mainTemplate.gradle파일에 아래에 aaptOptions 부분에 noCompress =['.ress','.resource','.obb']+ unityStreamingAssets.tokenize(', ') 추가
CommandInvokationFailure: Failed to update Android SDK package list.
stderr[ Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156) at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75) at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 5 more
라는 에러와 함께 빌드 실패처리
해결방법
뭐 jdk를 재설치하고 external tools에서 JDK 경로 재설정하고 이것저것 하라고 나와있는데 나의 경우 해결방법은 이것이었다.
Edit > Preferences > External Tools > JDK Installed with Unity의 경로의 자동 설정을 체크해제 > 맨마지막에 슬래시 추가
/Users/jim/Desktop/workspace/project/project/Temp/gradleOut/launcher/build/intermediates/merged_manifests/release/AndroidManifest.xml:52: AAPT: error: unexpected element found in
xcode로 프로젝트를 아이폰에 빌드, 실행도 잘되고 아카이브, 업로드도 잘되는데 출시하려고 좀 기다리면 "잘못된 바이너리로 상태가 변경되었습니다."라고 메시지가 날아오면서 해당 바이너리가 사라져 버린다.
아무런 설명 없이 날아가버리는데 뭐가 문제일까?
원인
알고 보니 회사 공식 메일(앱스토어가 연결되어 있는 공식 계정)에 바이너리가 거절된 이유를 상세하게 설명한 메일이 와 있었다.
내가 해당 메일 접근 권한이 없어서 메일이 온지도 전혀 몰랐던 것이다.
당신도 앱스토어 공식 계정으로 메일이 왔는지 확인해보라
메일에는 아래와 같은 내용이 와 있었다.
Dear Developer, We identified one or more issues with a recent delivery for your app, “Mecha head League” 1.0.11 (115). Please correct the following issues, then upload again. ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references one or more APIs that access sensitive user data. The app’s Info.plist file should contain a NSPhotoLibraryUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn’t contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy). Though you are not required to fix the following issues, we wanted to make you aware of them: ITMS-90078: Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature’s entitlements do not include the ‘aps-environment’ entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the ‘aps-environment’ entitlement. Xcode does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor’s Capabilities pane, or manually add the entitlement to your entitlements file. For more information, see https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1. Best regards, The App Store Team