Android 64-bit & macOS Catalina release

It’s finally public. As described in the previous Status Update, a new maintanence release is out. Among the most important enhancements

Android 64-bit support (arm64-v8a & x86_64)

macOS 10.15 Catalina, iOS 13 & Xcode 11 support

Native Xcode Archive support for submitting apps to the App Store or for macOS Notarization

There are also a lot of smaller fixes and changes under the hood to support these things. However, an aggressive attempt was made to NOT change too many things because for those wanting to add 64-bit Android builds, the better thing is to simply recompile and not worry about other things breaking. So the next release will look at updating more things. In addition, because this release was already long overdue, Raspberry Pi and Swift compilers are untouched this released and planned for the next.

So without further adieu, hit Purge, then Generate, and then build your project. Hopefully all will just work, just as before.

Android 64-bit

It should be easy to use, and is pretty much just a recompile and ship new version on your part. It contains 64-bit binaries for both arm64-v8a and x86_64. The latter is useful for Android Emulator testing, though as always, it is best testing on a real device. 32-bit armeabi-v7a and x86 are still included. (Contrary to my expectations, I learned the hard way that brand new 32-bit Android devices are still sold in major stores.)

However there are a few subtle changes you should be aware of.

Google reorganized the Android NDK quite a bit, so the build process for all of the libraries shipped in Blurrr had to undergo a build system overhaul. 64-bit itself has a higher minimum SDK requirement of API 21 (Android 5.0), but there was a serious bug in 5.0 which was fixed in 5.1. So Blurrr’s new miniumum Android version is now API 22 (Android 5.1).

The OpenAL implemention for Android needed to be replaced. Since the very early days of Android, I’ve been using a special fork of OpenAL Soft specially intended to deal with Android and the lack of floating point in the early days. Unfortunately, this implementation is not 64-bit clean and is effectively end-of-life. Fortunately, modern Android devices have hardware floating point, so we can move to the official OpenAL Soft implementation which now supports Android. But because this is a different OpenAL backend, you may want to do extra testing with your audio code to make sure things still work the way you expect.


Android 64-bit support: After clicking the Run button


All 4 primary architectures are present:
Google Pixel is arm64-v8a
Nexus 7 is armeabi-v7a
Nexus 5X Emulator is x86
Pixel 2 Emulator is x86_64

macOS 10.15 Catalina & iOS 13

macOS App Notarization is the big change which will be discussed in the next section. But due to new OS bugs and Apple restricting once acceptable APIs in the name of security & privacy, SDL has been updated for macOS & iOS to fix these problems. The other platforms have kept the existing version of SDL to minimize changes as described in the introduction.

macOS App Notarization & native Xcode Archive Feature (macOS & iOS)

One ugly area of the CMake Xcode generator is the Archive feature which is used to submit apps (both iOS & Mac) to the App Store. Additionally macOS 10.15 Gatekeeper now requires apps to be Notarized if downloaded from the Internet. 

Blurrr SDK has now managed to wrangle the CMake generation to make the Archive feature work. So now you can submit apps the way Apple has intended.

Remember that to submit to the App Store or to distribute for GateKeeper compliance (Developer ID and notarization), you must have an Apple Developer membership ($99/year). Make sure you have connected Xcode with your account so all your certificates are on your machine.

As an example of the native Archive feature, the following screenshots show step-by-step how easy it is to Notarize your app. Starting with BlurrrGenProj, make sure you enable code signing with your Developer ID Application certificate. 

Code signing with Developer ID Application

Enable Code Signing and select Developer ID Application

Generate and open the project in Xcode. Change the selected target to your app (e.g. MyBlurrrProject or FlappyBlurrrLua). 

Make sure to change the selected target to the App.
(CMake sets the default to ALL_BUILD which is not what we want.)

Make sure to change the selected target to the App.
(CMake sets the default to ALL_BUILD which is not what we want.)

In this case, the app target is FlappyBlurrrLua

In this case, the app target is FlappyBlurrrLua

Then in the Xcode menu under Product, select Archive.

Xcode Archive feature in Menu

Xcode Product Menu: Archive

When successful, your Archive will appear in the Xcode Organizer. You can then use the Distribute App button on the right side. Follow the wizard. When successful, you will see the “Export Notarized App” become enabled in the bottom right corner.

Click Distribute App

1. Click Distribute App

Pick Developer ID

2. Pick Developer ID for Notarization
(or Pick App Store Connect to submit your app to the App Store)

Pick Upload

3. Pick Upload

Set Distribution certificate to Developer ID

4. Set Distribution certificate to Developer ID

Click Upload

5. Click Upload


6. Uploading

Notarization in progress

7. Notarization in progress

Notarization complete. Export Notarized App is clickable in bottom right corner.

8. Notarization complete. Export Notarized App is clickable in bottom right corner.

Of course, you may also notarize the hard way using Apple’s command line tools.

IupCocoa, IupCocoaTouch, IupAndroid & IupEmscripten accepted into official IUP SVN

As mentioned last time, our work for “IupNext” has been officially accepted into mainline of the official IUP project. I’ve updated the distribution to use our merged repo. Also, our proposal for IupPostMessage (useful for sending message from background threads to the main UI thread) is now accepted. The BlurrrNetworkDiscovery example and documentation (which was one heavy user of this API) has been updated to reflect the final accepted API.

BlurrrGenProj .blurrrproj file format

BlurrrGenProj now has its very own file format, with extension .blurrrproj.

This can sometimes be a small convenience helper, especially if you like to double-click files to open things in your platform’s file browser. (And on Mac, you can do all the extra things too, such as drag the file onto the Dock icon, etc.)

macOS will automatically associate this extension for you.

On Windows and Linux, use the menu option ‘Set file association for .blurrrproj’.

BlurrrGenProj Set File Association: Windows
BlurrrGenProj Set File Association: Linux

Smaller Distribution Size

This version of Blurrr SDK is now 60% smaller. The main reason is the use of hardlinks now in the SDK which cuts almost 2/3 of the size. Blurrr also no longer uses .zip as the primary archiver fomat, since zip is not hardlink aware, and others offer higher compression formats.

For Apple, we now ship a notarized DMG. There actually was kind of a bug in prior releases with the .zip distribution. I forgot about GateKeeper Path Randomization, which would break things if you didn’t move the folder out of your Downloads directory after unzipping. So the correct fix for this is to ship a code signed DMG. The DMG is using the ULFO format which is Apple’s newest format and has the greatest compression. However, I found zipping the dmg after the fact still shaved off another 20%, so the .dmg is zipped after the fact.

Simply download and open the .zip with Finder. The .dmg will extract to the file system. Open the .dmg. Drag the BlurrrSDKApple directory to /Applications (or any wrtiable directory of your choosing).

Opening the BlurrrSDKApple.dmg

For Windows and Linux,a tar.xz file is provided instead of a zip file. The tar allows for the preservation of hardlinks which keeps both the download smaller and actually uses less space on disk (sometimes more than what your tools may report). And xz provides better compression than many other formats, while mainstream enough that the Linux kernel source uses .tar.xz now for downloads.

Most Linux distros now have built-in support for xz in the tar utility:

tar xvf BlurrrSDKLinux.tar.xz

For Windows, unfortunately, there is still no built-in .tar support, let alone .xz. But the free and open source 7-Zip has great Windows support and handles .tar.xz (and many other formats) with ease. Grab it at (Remember that it is two-step with this tool…first the xz and then the tar.)

Try it today!

Link to Blurrr SDK download page is here.

-© PlayControl Software LLC
Mac OS X, iOS, and logos are trademars of Apple Inc.
Windows, Visual Studio, and logos are trademars of Microsoft Corportation.
Android and Android Studio, are trademars of Google Inc.
Steam and the Steam logo are trademarks and/or registered trademarks of Valve Corporation in the U.S. and/or other countries.
Other company and product names mentioned herein are trademarks of their respective companies and constitutes neither an endorsement nor recommendation. 
Privavy Policy