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.
LuciadMobile requires an Android device or emulator running version 5.0 or higher of the Android Operating System. Detailed system requirements are listed below.
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.
The final step in developing a LuciadMobile application is obfuscating the code. This step is required by Luciad to transition to the deployment phase.
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.
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).
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.
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.
|Usage||Small internal code snippets containing utility code.|
|Origin||CERN - European Organization for Nuclear Research.|
|Usage||Used for doing fast computations.|
|Name||Gesture Detectors Framework|
|Usage||Utility code to recognize multitouch gestures.|
|Origin||Guy Eric Schalnat, Andreas Dilger, John Bowler, Glenn Randers-Pehrson, and others|
|Usage||Used for decoding LRDB files.|
|Usage||Used for decoding LRDB files.|
|Origin||W. Randolph Franklin|
|Usage||Used for detecting if a point lies within a polygon.|
|Usage||Used for SQLite/SpatiaLite/GeoPackage decoding and encoding.|
|Usage||SQLite databases access|
|Name||The GNU STL|
|Origin||GNU Compiler Collection|
|Usage||Used for decoding ECW files and ECWP streams.|