Blame docs/README.android

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