Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

The very first releases of the NDK only supported ARMv6, but now it also supports ARMv7, x86, and MIPS. I actually compile my code for all 4 architectures, and end up with .so binaries in my APK:

lib/armeabi/libpuddle_drops.so

lib/armeabi-v7a/libpuddle_drops.so

lib/mips/libpuddle_drops.so

lib/x86/libpuddle_drops.so

This really takes no effort on my part, except to specify APP_ABI := all in one of the build files.

The system where the app is installed picks the preferred (or compatible) library automatically, which usually means ARMv7 with a fall-back to ARMv6 on low-end phones.



Yes, same with my NDK based apps though in my case I have only compiled for x86 and ARMv7-A. About MIPS, is there any MIPS based hardware with Play store access out there that we need to worry about?

Btw you may want to know that there is a bug in 4.0.3 that sometimes loads armeabi code instead of armv7-a code on some ARMv7 systems like HTC One S.


I haven't seen any MIPS-based devices yet, but I also added x86 support before I saw any evidence that it was needed at the time. I try to make the app as widely compatible as possible without creating undue work for myself.

I did not know about that bug, but thanks for telling me! I have had a few reports of the app running slowly on the One S, which didn't make sense at the time. I'm not sure if only supplying the ARMv7 code would cause the device to pick the correct library, or just exclude a lot of (half decent) ARMv6 devices I'd still like to support for now.


This requires effort on your part, specially if you happen to take advantage of CPU specific opcodes like NEON.

If you happen to compile just for ARM, then it won't with AMD CPU out of the box.

This is what I mean, when journalists talk about technology without explaining how compatible is AMDs solution with Android apps.


Well, I have to say that a lot of work goes into explicitly taking advantage of NEON, and even Google states in their docs that you must check at runtime whether NEON is supported (and not just ARMv7). So if you're using NEON, you're already spending effort, and should be aware that you will need to support different architectures (even if only ARM variants).

All things considered, the NDK offers a lot of cross-platform interoperability for very little effort. Recompiling really isn't the issue, unless you live in 1995 and you're still hoping Java will save the world.

Also, many apps don't need any native libraries at all. AMD will be able to support a large portion of Android apps without doing any binary translation, and can use the same market filtering mechanism that Google uses to avoid apps that would require an ARM architecture.


No, I live in a world where Java and .NET are kings of the hill. The consulting world of Fortune 500 corporate development.

But I do Android development on the side for friends, mostly NDK based games.

So I am well aware how the NDK works.

Again, the way these things get announced in the press trick the normal joe six-pack to think he will have access to all apps, when it will depend on how the app was developed.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: