iPhone 11 Pro Crash - arm64e
I had a test user report a crash very early in my app experience (they didn't get to main functionality yet), I noticed in the crash report that they were using a iPhone 11 Pro and that its architecture is arm64e, so I'm listing this here as I don't have an iPhone 11 Pro to test but I did find this article which may be the cause: https://developer.apple.com/documentation/security/preparing_your_app_to_work_with_pointer_authentication?language=objc
So I tried adding the "arm64e" to the architectures build setting and when I tried to archive, the following error(s) came up:
Undefined symbols for architecture arm64e:
"uImage::Jpeg::CreateReader(uBase::Stream*)", referenced from:
g::Experimental::TextureLoader::TextureLoaderImpl::JpegByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
"uBase::Bundle", referenced from:
g::Uno::Content::Fonts::CppFontFace::LoadFontFaceHandle1(uString*) in Uno.Content.Fonts.g.o
"uBase::BundleAccessor::operator->()", referenced from:
g::Uno::Content::Fonts::CppFontFace::LoadFontFaceHandle1(uString*) in Uno.Content.Fonts.g.o
"uBase::BufferStream::~BufferStream()", referenced from:
g::Uno::Content::Fonts::CppFontFace::LoadFontFaceHandle(uArray*, int, int) in Uno.Content.Fonts.g.o
"uImage::Bitmap::Bitmap(int, int, uImage::Format, uBase::DataAccessor*, int, int)", referenced from:
g::JpegSaver::ByteArrayRgbaToJpeg(uArray*, int, int, uString*) in _root.JpegSaver.o
"uBase::Exception::GetFunction() const", referenced from:
g::JpegSaver::ByteArrayRgbaToJpeg(uArray*, int, int, uString*) in _root.JpegSaver.o
"_ConvertUTF16toUTF8", referenced from:
uAllocCStr(uString const*, unsigned long*) in ObjectModel.o
"uBase::Exception::GetLine() const", referenced from:
g::JpegSaver::ByteArrayRgbaToJpeg(uArray*, int, int, uString*) in _root.JpegSaver.o
"operator+(char const*, uBase::String const&)", referenced from:
uCreateGLTexture(uImage::Texture*, bool, uGLTextureInfo*) in Support.o
"uBase::Exception::~Exception()", referenced from:
l__ZN5uBase9ExceptionD1Ev$auth_ptr$ia$0 in Support.o
"uImage::Bitmap::GetPtr()", referenced from:
uCreateGLTexture(uImage::Texture*, bool, uGLTextureInfo*) in Support.o
g::Uno::Content::Fonts::CppFontFace__RenderGlyph_fn(g::Uno::Content::Fonts::CppFontFace*, float*, char16_t*, g::Uno::Content::Fonts::RenderedGlyph*) in Uno.Content.Fonts.g.o
"uBase::Object::Release()", referenced from:
uBase::Auto<uImage::ImageReader>::~Auto() in Support.o
uBase::Auto<uImage::Bitmap>::~Auto() in Support.o
uBase::Auto<uBase::BufferPtr>::~Auto() in _root.JpegSaver.o
g::Uno::Content::Fonts::CppFontFace__Dispose_fn(g::Uno::Content::Fonts::CppFontFace*) in Uno.Content.Fonts.g.o
uBase::Auto<uBase::Stream>::~Auto() in Uno.Content.Fonts.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::JpegByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::PngByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
...
"uImage::FontFace::Load(uBase::Stream*)", referenced from:
g::Uno::Content::Fonts::CppFontFace::LoadFontFaceHandle(uArray*, int, int) in Uno.Content.Fonts.g.o
g::Uno::Content::Fonts::CppFontFace::LoadFontFaceHandle1(uString*) in Uno.Content.Fonts.g.o
"uImage::FormatInfo::ToString(uImage::Format)", referenced from:
uCreateGLTexture(uImage::Texture*, bool, uGLTextureInfo*) in Support.o
"uBase::BufferStream::BufferStream(uBase::DataAccessor*, bool, bool)", referenced from:
g::Uno::Content::Fonts::CppFontFace::LoadFontFaceHandle(uArray*, int, int) in Uno.Content.Fonts.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::JpegByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::PngByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
"uBase::Exception::GetMessage() const", referenced from:
g::JpegSaver::ByteArrayRgbaToJpeg(uArray*, int, int, uString*) in _root.JpegSaver.o
g::Experimental::TextureLoader::TextureLoaderImpl::JpegByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::PngByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
"typeinfo for uBase::Exception", referenced from:
uCreateGLTexture(uImage::Texture*, bool, uGLTextureInfo*) in Support.o
GCC_except_table3 in _root.JpegSaver.o
GCC_except_table16 in Experimental.TextureLoader.g.o
GCC_except_table17 in Experimental.TextureLoader.g.o
"uImage::Jpeg::Save(uBase::String const&, uImage::Bitmap*, int)", referenced from:
g::JpegSaver::ByteArrayRgbaToJpeg(uArray*, int, int, uString*) in _root.JpegSaver.o
"uImage::Texture::Create(uImage::Image*)", referenced from:
g::Experimental::TextureLoader::TextureLoaderImpl::JpegByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::PngByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
"uBase::String::String(char const*, int)", referenced from:
uStringToXliString(uString*) in Support.o
"uBase::Exception::Exception(uBase::String const&)", referenced from:
uCreateGLTexture(uImage::Texture*, bool, uGLTextureInfo*) in Support.o
"_OBJC_CLASS_$_SRWebSocket", referenced from:
objc-class-ref in WebSocketClientObjc.o
"Xli::MessageBox::Show(Xli::Window*, uBase::String const&, uBase::String const&, Xli::DialogButtons, int)", referenced from:
uFatal(char const*, char const*) in Support.o
"_ConvertUTF8toUTF16", referenced from:
uString::Utf8(char const*, unsigned long) in ObjectModel.o
"uImage::Bitmap::DownSample2x2()", referenced from:
g::Experimental::TextureLoader::TextureLoaderImpl::JpegByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::PngByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
"uBase::String::~String()", referenced from:
uFatal(char const*, char const*) in Support.o
uCreateGLTexture(uImage::Texture*, bool, uGLTextureInfo*) in Support.o
g::JpegSaver::ByteArrayRgbaToJpeg(uArray*, int, int, uString*) in _root.JpegSaver.o
g::Uno::Content::Fonts::CppFontFace__get_FamilyName_fn(g::Uno::Content::Fonts::CppFontFace*, uString**) in Uno.Content.Fonts.g.o
g::Uno::Content::Fonts::CppFontFace__get_StyleName_fn(g::Uno::Content::Fonts::CppFontFace*, uString**) in Uno.Content.Fonts.g.o
g::Uno::Content::Fonts::CppFontFace::LoadFontFaceHandle1(uString*) in Uno.Content.Fonts.g.o
"uImage::Png::CreateReader(uBase::Stream*)", referenced from:
g::Experimental::TextureLoader::TextureLoaderImpl::PngByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
"uBase::BufferPtr::BufferPtr(void*, int, bool)", referenced from:
g::JpegSaver::ByteArrayRgbaToJpeg(uArray*, int, int, uString*) in _root.JpegSaver.o
g::Uno::Content::Fonts::CppFontFace::LoadFontFaceHandle(uArray*, int, int) in Uno.Content.Fonts.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::JpegByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
g::Experimental::TextureLoader::TextureLoaderImpl::PngByteArrayToTexture2D(uArray*) in Experimental.TextureLoader.g.o
"uBase::GetTicks()", referenced from:
uPthreadWaitOneMutex(_opaque_pthread_mutex_t*, int) in posix_mutex.o
"uBase::String::Ptr() const", referenced from:
uStringFromXliString(uBase::String const&) in Support.o
"uBase::String::String(char const*)", referenced from:
uFatal(char const*, char const*) in Support.o
"uBase::String::Length() const", referenced from:
uStringFromXliString(uBase::String const&) in Support.o
ld: symbol(s) not found for architecture arm64e
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Dependencies for arm64e has been added, so those linker errors should now be fixed. Hopefully we're one step closer to solving that crash... :)
Shweet man, hopefully 😄
Looks like Firebase is even waiting on Apple's official support: https://firebase.google.com/support/release-notes/ios#version_6210_-_march_24_2020