How do I target both x86 and ARM architecture in my mobile app?


I’m working with PDFTron PDFNet Mobile SDKs and need to be able to target both x86 and ARM architectures. Is there any way to accomplish this?


Yes you can run an app on any device (x86, x64 and ARM). If you are using an x86 device, you need to use x86 or x64 library, whichever is appropriate. If you are using an ARM device (such as the MS Surface), then you need to use the ARM library.

The way it works (in both Windows 8 App store and Google Play) is that you would submit two identical apps (i.e. one version for x86 and another for ARM). When your app user decides to install the app ‘Windows 8 App Store’ or ‘Google Play’ will automatically select, download, and install the appropriate version. On Android (but not on WinRT) you can bundle multiple libs (.SOs) in a single APK however this is not recommended since it bloats the file size of the app.

Note: PDFNet for Android is now available in a new standard feature reduced variant (a.k.a. ‘lean’). The lean library offers the same viewing, annotation, and editing capabilities of the fully featured library however it is half the size (6MB uncompressed!). The parts that are missing are relatively rarely used components (such as Redaction, ContentReplacer, Optimizer, Flattener, and Converters). You can request a trial at the following page

If your APK is large even with the lean library, you may be packaging multiple SO files in the same APK. If the file size is issue you can use ‘Multiple APK’ feature to let the user download the right SO version instead of having to bungle all architectures in a single package.

We can provide even smaller custom build variants but keep in mind that just standard PDF resources take at least 3MB so there may not be much to gain with further reductions.