AR development has moved far from the realm of gimmicks. It’s a completely viable technology with loads of potential–and everyone from Google to Apple wants a piece. Both Google’s new Depth API and Apple’s recent audio patent go to show just how much time, money, and energy both companies are investing in the technology. But should developers prioritize iOS or Android AR development? Which one produces better results?
What’s Changed Since 2018?
We aren’t the first to ask about the best OS for AR, but most other articles are a bit out of date. In fact, the top-ranking result on google was published in 2018–a lot has changed since then. We’ve seen iOS 12 and 13, Android 10, a whole new ARKit 3, and fifteen ARCore releases. That’s a lot.
Now that both ARKit and ARCore have had some time to mature, let’s take a fresh look at the iOS/Android AR rivalry.
Both iOS and Android come with their very own SDKs: ARKit for iOS and ARCore for Android. While ARCore works on both Apple and Android, ARKit is exclusive to iOS devices. Their features can be divided into the following categories:
3D Mapping is how the device figures out what the environment looks like. Both programs excel in this field, but for different reasons.
ARCore is excellent at mapping out your surroundings–thanks to the new Depth API. It tracks points in space as your device moves, allowing your device to create an accurate map of its surroundings with a single moving camera. That means that virtual objects can hide behind real ones–how cool is that?
ARKit can occlude objects, too, but not quite as well. While it can map objects, these maps tend to be clunkier and less accurate than the ARCore ones.
Its primary occlusion feature is “people occlusion,” meaning that virtual objects appear to pass behind people. However, the edges are not nearly as clean as they would be in ARCore. In this ARKit 3 demo, the bowling pins and bowling ball frequently glitch around the edges.
While the occlusion is still impressive, it’s a far cry from the ARCore Depth API. That’s a point for Android AR development.
However, 3D mapping isn’t everything. To make virtual objects stick, your app also needs to master the 2D plane.
2D Plane Tracking
Anyone can make an object float in 3D space–it’s getting it to stick that can be tricky. That’s why it’s so important that an AR app can stick objects or images to flat planes, such as the ground or a bus ticket.
2D plane tracking is especially good with cross-platform SDKs like Spark AR and Vuforia, but both ARCore and ARkit support 2d plane tracking.
ARCore does have a bit of an edge in this category. Since the program already tracks feature points, it can track images and objects on angled planes and moving surfaces.
While ARKit can handle most 2d planes, it isn’t perfect. The plane must be either verticle or horizontal–not angled. Again, ARCore takes the cake.
But Android isn’t perfect; its measuring features could use some improvement.
If you need your AR app to measure real-world distances, ARKit takes the cake. David Murphy at LifeHacker compared the iOS and Android AR measurement apps and concluded that ARKit tends to be a bit more accurate.
Of course, neither app is perfect. Both have a margin of error, but Google’s is a bit larger. If your app needs to accurately measure objects, consider ARKit.
However, size isn’t everything. Sometimes, the look of the virtual object is more important.
Light estimation makes the difference between an awkward 3d blob and a tangible AR experience, so it’s crucial for all iOS and Android AR development. Both ARKit and ARCore are on a similar footing, but they do have a few distinctions.
Lighting objects in ARKit is pretty straightforward. ARKit will return a value that represents ambient light, which you can use to auto-adjust an object’s lighting. The results speak for themselves: the box that uses light estimation looks like a real-world object, while the box without light estimation looks fake.
ARCore gives you a little bit more freedom. It offers an environmental HDR mode (with and without reflection) for more realistic, directional lighting, as well as an ambient mode for graphics with baked-in shading. While you have a bit more control, the results are about the same.
Neither SDK has a major edge at the moment. However, ARKit renders very well, so it may take the lead in future updates.
But we don’t need to wait until future updates to access ARKit’s strongest features.
ARKit has so many more interactive features than ARCore that it’s almost unfair to lump them into a single category.
The most recent version of ARKit, ARKIt 3, comes with lots of spicy new features–most of which are focused on interactivity. You can create collaborative AR experiences and record using both cameras at once.
But that’s only the tip of the iceberg. ARKit supports motion capture, facial tracking, and more. Of course, these features aren’t completely polished–ARKit is still pretty new. However, they’re advanced enough to score some points for iOS AR development.
ARCore lags behind pretty far. While it has interactive gameplay and motion capture, too, they aren’t quite on ARKit’s level.
But what if you’re using a different SDK? Does it still make a difference which operating system you use?
For the most part, neither iOS nor Android has a clear advantage in terms of third-party SDKs. Most relevant SDKs are cross-platform–in fact, ARKit is unique in being exclusive to iOS. You’ll only need to worry about the OS if you’re using a very niche SDK.
Cross-platform SDKs are a great option for both iOS and Android AR development. Check out our favorite AR SDKs.
ARKit is baked into iOS, and ARCore is baked into Android. Shouldn’t the relevant hardware support the AR platform?
As it turns out, many iOS users will have to settle for the less powerful ARKit 2. Why? This message was nestled into the bottom-most recesses of the ARKit 3 feature page:
People Occlusion and the use of motion capture, simultaneous front and back camera, and multiple face tracking are supported on devices with A12/A12X Bionic chips, ANE, and TrueDepth Camera.
That means that many of the best ARKit 3 features are only supported on devices released after September 2018, so anything older than the XS will run ARKit 2. These restrictions make sense; older devices like the iPhone X just don’t have the power or camera to get it right. But unless your entire target audience has the latest and greatest iPhone 11, you may not be able to access certain features.
ARCore, on the other hand, doesn’t have compatibility issues. Google’s learned its lesson from Tango: an older AR platform that required too much special hardware to be viable. In fact, ARCore owes its existence to Tango’s failure: it was designed to be a less-powerful, but vastly more accessible alternative.
Which is Better for AR Development?
Should you develop your AR application on iOS or Android? There’s a clear answer, but it depends on your app.
Does your app focus on human motion? Use ARKit on iOS. It’s great at figuring out where humans are, what they’re doing, and how their actions impact 3D models. Plus, it renders beautifully and measures distances more accurately than ARCore. But do be warry: your audience will be limited–especially if your app requires the latest ARKit 3 features. We recommend ARKit on iOS for games and other interactive apps.
Does your app focus on the user’s environment? Use ARCore on Android. While it doesn’t measure distances as well, it tracks, maps, and understands the user’s space much more effectively than ARKit. It is also better at occlusion and light estimation. Plus, it’s available to a much larger audience. We recommend ARCore on Android for eCommerce projects. If that interests you, read more about AR in eCommerce.
But remember that both iOS and Android work very well for all AR apps. IKEA Place was built on ARKit, even though it relies heavily on mapping and occlusion.
In truth, the difference between ARKit and ARCore is still pretty marginal. Any SDK is only as good as the developer or designer who uses it. To learn more about iOS and Android AR development, read about our services or contact us. We’d love to hear what you think.