LuciadMobile Prerequisites

Technical requirements for running LuciadMobile

This page covers technical requirements for running LuciadMobile (or one of its Addons), such as license files, obfuscation and libraries used by the Luciad software.

System Requirements

LuciadMobile requires an Android device or emulator running version 5.0 or higher of the Android Operating System. Detailed system requirements are listed below.

  • OS
    • Android 5.0 or higher
  • CPU
    • ARM Cortex A8 or better
    • arm64-v8a compatible
    • Intel X86-compatible
    • Intel X86_64-compatible
  • System on a Chip (listed below or equivalent)
    • Qualcomm Snapdragon or better
    • NVidia Tegra 2 or better
    • Texas Instruments OMAP3 or better
    • Samsung Hummingbird or better

LuciadMobile licenses

LuciadMobile supports two types of licenses: developer licenses and end user licenses. A developer license file can be used with the original LuciadMobile jars, in the development phase of your project. It allows you to write, compile, and run LuciadMobile applications. An end user license file can only be used with finalized LuciadMobile applications. It allows you to run LuciadMobile applications that have been obfuscated.

Note on terminology The term developer license is used interchangeably with the term development license throughout the product, while the end user license may also be referred to as the deployment license.

Obfuscation

The final step in developing a LuciadMobile application is obfuscating the code. This step is required by Luciad to transition to the deployment phase.

What is obfuscation?

Obfuscating Java class files means replacing the original class names, method names, and field names by short, meaningless names. For instance, obfuscation may rename a method “double getX()” to “double a()”. Obfuscation makes it much harder to reverse engineer the code. Although it does not necessarily make decompilation impossible, understanding the decompiled code becomes more difficult.

Obfuscation also removes the debugging information that is not required for deployment. By default, Java class files still contain all class/method/field/argument/variable names, source file names, and source line numbers. Removing this information typically reduces the footprint of the application by 30% as an interesting side-effect.

In addition, many obfuscating tools further shrink the processed applications by removing classes, methods, and fields that are not actually used in the code. This operation can considerably reduce the footprint of the jars.

LuciadMobile and obfuscation

Your LuciadMobile license requires you to obfuscate the class files of the LuciadMobile API when you deploy your applications. This requirement serves as protection against uncontrolled distribution of the API. You are not required to obfuscate your own code, in the sense of changing its class names, method names, and field names, but you will have to process your code together with the LuciadMobile API, to make sure all references to the LuciadMobile API are updated correctly.

When your LuciadMobile application has been obfuscated, it is ready to be deployed. You can then replace the developer license file (luciadmobile_development.txt) with an end user license file (luciadmobile_deployment.txt).

How does obfuscation work for LuciadMobile applications?

A large number of tools can perform Java bytecode obfuscation for you, but we suggest the ProGuard obfuscation tool, as it has been integrated into the Android build system already. This means that you do not have to invoke it manually. ProGuard runs only when you build your application in release mode, so you do not have to deal with obfuscated code when you build your application in debug mode.

When you create an Android project, a proguard.cfg file is automatically generated in the root directory of the project. This file defines how ProGuard optimizes and obfuscates your code, so it is very important that you understand how to customize it for your needs. The default configuration file only covers general cases, so you most likely have to edit it for your own needs.

Certain classes in LuciadMobile have particular obfuscation requirements. These are listed in the included configuration file luciadmobile.pro. If you are using the ProGuard obfuscator, you can include it directly in your own configurations (with the option -include)

For more information, see the Android Developer documentation.

Libraries

The Luciad software works with the following libraries, some of which are 3rd party libraries. For each library we list name, version, origin, library file, and the license if applicable.

Name Android
Version 2.3 (Gingerbread)
Origin Google Inc.
Files LuciadMobile-Android-2020.0.01.jar
Usage Small internal code snippets containing utility code.
License LICENSE-android.txt
Name Colt
Version 1.2.0
Origin CERN - European Organization for Nuclear Research.
Files LuciadMobile-Android-2020.0.01.jar
Usage Used for doing fast computations.
License LICENSE-colt.txt
Name Gesture Detectors Framework
Version 52c69de
Origin Almer Thie
Files LuciadMobile-Android-2020.0.01.jar
Usage Utility code to recognize multitouch gestures.
License LICENSE-multitouch.txt
Name libpng
Version 1.6.37
Origin Guy Eric Schalnat, Andreas Dilger, John Bowler, Glenn Randers-Pehrson, and others
Files libs/armeabi/liblcdmobile.so
libs/armeabi-v7a/liblcdmobile.so
libs/x86/liblcdmobile.so
libs/x86_64/liblcdmobile.so
Usage Used for decoding LRDB files.
License LICENSE-libpng.txt
Name libwebp
Version 1.0.3
Origin Google
Files libs/armeabi/liblcdmobile.so
libs/armeabi-v7a/liblcdmobile.so
libs/x86/liblcdmobile.so
libs/x86_64/liblcdmobile.so
Usage Used for decoding LRDB files.
License LICENSE-webp.txt
Name PNPOLY
Version N/A
Origin W. Randolph Franklin
Files LuciadMobile-Android-2020.0.01.jar
Usage Used for detecting if a point lies within a polygon.
License LICENSE-pnpoly.txt
Name libgpkg
Version 0.9.18
Origin Luciad
Files libs/armeabi/liblibgpkg.so
libs/armeabi-v7a/liblibgpkg.so
libs/x86/liblibgpkg.so
libs/x86_64/liblibgpkg.so
Usage Used for SQLite/SpatiaLite/GeoPackage decoding and encoding.
License LICENSE-spatialite.txt
Name SQLite (Android)
Version 3.29.0
Origin Hwaci
Files libs/armeabi/liblcdmobile.so
libs/armeabi-v7a/liblcdmobile.so
libs/x86/liblcdmobile.so
libs/x86_64/liblcdmobile.so
Usage SQLite databases access
License LICENSE-sqlite.txt
Name The GNU STL
Version
Origin GNU Compiler Collection
Files libs/armeabi/libgnustl_shared.so
libs/armeabi-v7a/libgnustl_shared.so
libs/x86/libgnustl_shared.so
libs/x86_64/libgnustl_shared.so
Usage Runtime library
License LICENSE-gnustl.html
Name ERDAS ECW
Version 5.5.0
Origin hexagon
Files libs/armeabi/liblcdecw.so
libs/armeabi-v7a/liblcdecw.so
libs/x86/liblcdecw.so
libs/x86_64/liblcdecw.so
Usage Used for decoding ECW files and ECWP streams.
License LICENSE-erdasecw.txt