Runtime issue with 64bit Unity game integration into iOS native app - ios

My company integrates Unity games into our native iOS app. Basically our iOS app would run the Unity code when a user decides to launch any of the games.
With the past 32 bit of Unity and native iOS code, we were taking Unity generated Xcode files, and compiling it into a static lib for the native iOS app to use. Whenever the user chooses to launch any of the games, UnityAppController would be loaded, and ran. This worked well for us.
But with the latest 64 bit builds, the same approach would give us a runtime error on app start - specifically when "main.mm" is executed, the app would crash at the "InitializeScriptingBackend()" call in "main.mm". Please see attached screenshot for sample stack trace.
Same issue happens regardless if we are running in debug or release scheme.
We are currently using Unity version 4.6.3p3 for generating the games for iOS, and using Xcode 6.2 for compiling the Unity code to static lib.
Does anyone have any idea why the crash is happening, and how we might get around it? Thanks!

Another discussion is happening on official Unity forum: http://forum.unity3d.com/threads/runtime-issue-with-64bit-unity-game-integration-into-ios-native-app.316796/

Related

iOS app compiles but crashes on launch when using unsupported 3rd party SDK

I have recently dropped the support of iOS 9 in one of my SDKs and set the minimum target version to iOS 10. This has caused some of the users of my SDK who updated to the latest version of SDK to face an unusual crash in their apps as they are still supporting iOS 9.
My SDK is a dynamically linked library, and the app running on iOS 9 devices crashes even before main() is called. I have tried setting the library to be optional in the build phases, but that doesn't stop linking the library at run time. I can't seem to capture the point where the library is linked and somehow make an exception for the unsupported iOS versions.
Is there anyway to avoid this crash on the lower versioned devices right within the SDK? Or this can only be handled from the app integrators end?
Any help or pointers would be highly appreciated!

Images are not showing only in iOS simulator

This is a high-level question so some general guidance will be helpful here.
I am developing an app using react native and firebase. I have a web version, and am developing a react native app and testing it using iOS simulator.
From yesterday, iOS simulator won't show any image for my app, while the images all show up properly on my web/mobile web versions.
Any potential reasons why this might be happening? New to app development and am very confused, especially because until yesterday all the images were loaded on iOS simulator as well without any problem.
Any idea? Thanks!
is the simulator iOS 14 and your RN version is below 63? if yes this is a known issue you can use a patch package in RN issues in GitHub that fixes this or use react-native-fast-image. I personally use fastImage because it has a lot of benefits.

iOS 14 Google Cardboard view is broken

On all apps that I can find that use Cardboard in iOS 14 (iPhone), the VR view is insanely bugged. The camera swings wildly all over the place.
Here is a video example: https://www.reddit.com/r/youtube/comments/i1nbs0/ios_14_vr_error/
The official Google Cardboard app-store application is broken as soon as you start it. It is also broken on the app I develop for which uses GVR and Unity.
Weirdly, it will temporarily function as expected if you restart your iPhone. The time it takes to break is seemingly random - sometimes it will be broken right away, and sometimes it will work for hours before breaking.
We have tested this on two iPhone 8+, and an iPhone 11.
Things I have tried:
Updating to beta iOS14.2 does not fix the issue.
Rebuilding in Xcode 12.2 Beta does not fix the issue
No errors or warning appear in my local build for our GVR project.
Turns out GVR is now obsolete for IOS14 (unless someone makes a fix for it.. doubt it). Have to upgrade to Cardboard SDK.
https://github.com/googlevr/cardboard/issues/118
I've answered this question on the Official Goggle Cardboard repository, but here's a quick recap for who got here first:
This is a iOS 14 incompatibility with the (now obsolete) Google Cardboard Plugin for Unity. I don't know for sure if there's a workaround to continue using this plugin, but I've tested the new plugin on both iPhone XR and SE and it works exactly as expected.
I've even loaded my app and the test app side by side, having the first one with a completely bugged view as described on the post and the test app, with the new plugin, working normally.
Finally, in order to continue using Cardboard VR with Unity on iOS 14, you should:
Upgrade to Unity 2019.3.15f1 or later
Integrate the new Google Cardboard XR Plugin
The new Cardboard XR plugin fixes this iOS 14 issue however, it was still somewhat buggy for me. My solution to this was to update my app with the Mobfish Google Cardboard package. I highly recommend it. It works with Metal/OpenGLES2/OpenGLES3 and default renderer/URP/HDRP. It also works with unity 2018 and up so no XR subsystem is needed. I published an update to my app using this plugin and it fixed the issue that arose from iOS 14.
Alright so look. I'm using an I7 updated to the most recent version of IOS14 AND Unity 2020.1.9f and xcode12, I've integrated the project EXACTLY how the https://github.com/googlevr/cardboard-xr-plugin shows it to be more specific here's the actual step by step page I followed and the ONLY way it has worked for me so far(does work outside of the test scene too just reverse engineer what's in the test scene or create a prefab of the player and drag and drop into your original scene then delete the old sample scene out of your build scenes)https://developers.google.com/cardboard/develop/unity/quickstart
obviously make sure you follow the steps for your phone, but make sure you follow every step exactly how it's done.
I WOULD NOT RECOMMEND DOWNGRADING PAST 2019.4.11f
Anything past 2019.4.11f has a bunch of depreciated scripts that will either cause issues in build or in xcode, also the new unity is set up to allow people to easily ask for permissions now needed with iOS' new privacy policy and security. For example if you build a successful VR project in an older version of Unity you MAY be giving up other cool features like voice command and etc...
FYI:
I was able to make it work without the need of compiling anything.
(I use a DESTEK V5 headset with an iPhone 11 running iOS 14.5 beta)
How I solved it:
I just updated to 14.5 beta, but also
I installed "Player360" from Mobfish.
After a restart, it works perfectly.
VR cardboard view 1
VR cardboard view 2
Please the experts explain what might be the trick happening here:
I don't know if it was the update to 14.5 beta and/or installing the app from Mobfish. (I thought if I installed an app with the Unity plugin update for iOS 14.X embedded, I might be forcing iOS to use the Unity VR version what was on its RAM).
CAVEATS: the issue comes back under the following conditions:
After switching from one VR app to another
After using the VR app for a long period (I use Holofit for indoor rowing)
Solution: Restart iOS
UPDATED

Creating pod from Unity iOS project

I have created a game with Unity.
I have exported it as a Xcode project.
I want to create a pod from that Xcode project.
My problem is that the exported Unity project has a Native folder that contains way too many files.
When installing my podspec for the Unity project my computer runs out of ram when trying to write up the Pods.xcodeproj.
Has anyone faced a similar problem as this one?
No you can perfectly do that. But in order to achieve what you are asking, you should your game as a view in native ios and then use cocoapods to add extra capabilities to your ios app. In this case your game becomes like a component in your native ios app and you can play with the rest of your app as you wish here is a guide that can help you;
https://github.com/jiulongw/swift-unity
You probably should not do that. Unity creates a XCode project that is not supposed to be versioned or reused in any way. It is just necessary to create a working iOS version of your game and sometimes used for debug proposes but it is an ephemeral thing. If you want to redistribute your game you should do it using the Unity project itself.

Compiling Titanium (Appcelerator) app in xcode produces warnings and errors

I am currently using OSX Snow Leopard with Xcode 4.2 and Titanium v 2.1.1. and I installed iOS 5.1.1 Sdk as per this quesiton: How to get iOS 5.1 SDK on Snow Leopard.
However when I try to build my generated xcode project file from the Titanium studio in Xcode I get a whole bunch of warnings. See image. I have set the base sdk target as 5.0 for the app in Xcode. Can't find much on Google or their forums.
I tried creating a new project and copying the contents of resources over and still get these warnings. Is there a better way and of course a fix? I need to get this app complete for this weekend and this is making me nervous that the app store will reject it.
Any ideas?
Thanks!
Unfortunately, that's the way a Titanium project looks like. If you're app is compiling and you're not receiving errors, you should consider yourself happy.
App Store will not reject your app because it has warnings. They won't even see that. You're getting compilation warnings and they are not visible on the binary you send to Apple.

Resources