README.Android.md

# Building and Running FLTK with Android Studio 3


WARNING: FLTK FOR ANDROID IS WORK IN PROGRESS IN A PRETTY EARLY STAGE.


## Contents

1. Building FLTK with Android Studio 3
2. Extensions and limitation of FLTK on Android
3. Document History


## Building FLTK with Android Studio 3

There is no need to ever write a single line of Java.

Download and install AndroidStudio on your developer machine. If you use
AndroidStudio for the first time, use the IDE to download and build the
"Native Plasm" sample app. In the process, all resources required to build
FLTK will be installed. Once Native Plasm runs on your emulator or physical
device, you are ready to install FLTK.

Build FLTK for your native platform first using CMake. AndroidStudio will need a native
version of the user interface design tool _Fluid_.

The following example is for the _Xcode_ IDE on _macOS_. The same should work for
other IDEs and Makefiles on other platforms that run _AndroidStudio_.

```bash
git clone https://github.com/fltk/fltk.git fltk-1.4.git
cd fltk-1.4.git
mkdir build
cd build
mkdir Xcode
cd Xcode
cmake -G "Unix Makefiles" \
  -D OPTION_USE_SYSTEM_LIBJPEG=Off \
  -D OPTION_USE_SYSTEM_ZLIB=Off \
  -D OPTION_USE_SYSTEM_LIBPNG=Off \
  -D OPTION_CREATE_ANDROID_STUDIO_IDE=On \
  ../..
```
Note the last option, `-D OPTION_CREATE_ANDROID_STUDIO_IDE=On`. This option will
create the file needed to create an FLTK demo project in
`fltk-1.4.git/build/Xcode/AndroidStudio`.

- open the `build/Xcode/AndroidStudio/` directory as a project in AndroidStudio3

- click "run"; the project should compile and run out of the box


## Extensions and limitation of FLTK on Android

Android support for FLTK is in an early stage. As of January 2019, most
rendering works, fonts work, bitmaps and pixmaps work, clipping works, window
layering works, and mouse clicks and keyboard events are handled

When loading fonts:
 - font names starting with a $ will have the system font path inserted
 - font names starting with an @ will be loaded via the Asset Manager
 - all other names will be used verbatim

Limitations:
 - the screen size is currently fixed to 600x800 and is scaled up
 - many many big and little functions are not yet implemented


## Document History

Jan 15 2019 - matt: rewrote document to explain the new CMake process
Mar 29 2018 - matt: many graphics functions have been implemented, keyboard
Mar 17 2018 - matt: added Android extensions for fonts
Mar 12 2018 - matt: started list of limitation that serevs as information to the
                    user as much as a todo list for core developers
Mar  6 2018 - matt: moved project to ide/AndroidStudio3/
Mar  2 2018 - matt: rewriting Android port and documentation from scratch
Feb  9 2016 - matt: recreated document with more warnings and active support
