| Overview |
| ======== |
| |
| The FreeRDP Android port consists of three parts: |
| * Android Java GUI (client/Android/Studio) |
| * FreeRDP library and its dependencies |
| * JNI bindings (client/Android/android_freerdp.c |
| and client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/services/LibFreeRDP.java) |
| |
| Build requirements |
| ================= |
| |
| For the Android port some additional dependencies need to be fulfilled: |
| |
| * for JNI |
| - CMake >= 3.0 |
| - Android NDK (>= r9) |
| |
| * for the Java GUI |
| - Android SDK |
| |
| FreeRDP requires openssl libraries for building but they are not part of the |
| Android NDK and therefore they need to be prebuild manually. |
| |
| For jpeg support https://github.com/akallabeth/jpeg8d has been tested and used. |
| However, any other static builds should work as well. |
| |
| Build native libraries: |
| ====================== |
| From the project root run the build script |
| ./scripts/android-build-freerdp.sh --ndk <ANDROID_NDK> --sdk <ANDROID_SDK> |
| Set ANDROID_NDK and ANDROID_SDK to the absolute paths on your machine. |
| This will fetch sources from git and build OpenSSL, OpenH264, libJPEG. |
| The native FreeRDP libraries will also be build. |
| |
| Currently the default script builds for: |
| * armeabi |
| * armeabi-v7a |
| * x86 |
| * mips |
| * arm64-v8a |
| * x86_64 |
| * mips64 |
| |
| When the script is finished the libraries are ready for android studio to |
| be picked up in client/Android/Studio/freeRDPCore/src/main/jniLibs |
| |
| The default configuration build configuration can be found in |
| ./scripts/android-build.conf and is configured to provide debug builds. |
| They are limited to API level 21 and above. |
| |
| If release binaries (and old android API support) are required, build 32 bit architectures with |
| ./scripts/android-build-freerdp.sh --ndk <ANDROID_NDK> --sdk <ANDROID_SDK> --conf ./scripts/android-build-32.conf |
| and 64 bit architectures with |
| ./scripts/android-build-freerdp.sh --ndk <ANDROID_NDK> --sdk <ANDROID_SDK> --conf ./scripts/android-build-64.conf |
| |
| Building the APK (Android Studio) |
| ================ |
| |
| * Import the folder client/Android/Studio in Android Studio |
| * You are ready to go |
| |
| Building the APK (gradle) |
| ================ |
| |
| * change to directory client/Android/Studio |
| * run ./gradlew build to build |
| * run ./gradlew tasks for other gradle options |
| |
| Development |
| =========== |
| |
| Updating JNI |
| ------------ |
| |
| Whenever the FreeRDP API changes or you need some extra functionality in your Java |
| GUI the JNI needs to be updated. |
| |
| The JNI functions are defined in client/Android/android_freerdp.c |
| Add the new functions to the methods struct. |
| |
| * edit client/Android/src/com/freerdp/afreerdp/services/LibFreeRDP.Java to |
| reflect your changes |
| * edit client/Android/android_freerdp.c and adjust the methods struct to reflect |
| the changes made. |
| |
| |