No description
Find a file
2022-08-16 23:40:17 +02:00
.github/workflows Added github action to build APK 2021-10-19 23:56:46 +02:00
.idea cleanup 2021-09-13 21:10:53 +02:00
app Improved startup time 2021-10-27 18:48:40 +02:00
gradle/wrapper Added README.md 2021-09-13 20:36:50 +02:00
.gitignore Improved navigation & startup time 2021-09-17 12:05:13 +02:00
android_elixir.png Added README.md 2021-09-13 20:36:50 +02:00
app.png README.md updates 2021-09-17 15:07:28 +02:00
build.gradle Added README.md 2021-09-13 20:36:50 +02:00
gradle.properties Added README.md 2021-09-13 20:36:50 +02:00
gradlew Added README.md 2021-09-13 20:36:50 +02:00
gradlew.bat Added README.md 2021-09-13 20:36:50 +02:00
icon.jpg Added README.md 2021-09-13 20:36:50 +02:00
LICENSE.md Added README.md 2021-09-13 20:36:50 +02:00
README.md Updated Readme 2021-11-11 17:43:02 +01:00
run_mix fix file path on run_mix (#2) 2022-08-16 23:40:17 +02:00
settings.gradle Added README.md 2021-09-13 20:36:50 +02:00

TodoApp Android: An Android Sample App

This Android Studio project wraps the Desktop Sample App to run on an Android phone.

How to build & run

  1. Install the beta OTP build *(see known issues)

  2. Install Android Studio + NDK.

  3. Go to "Files -> New -> Project from Version Control" and enter this URL: https://github.com/elixir-desktop/android-example-app/

  4. Update the run_mix to activate the correct Erlang/Elixir version during build.

  5. Connect your Phone to Android Studio

  6. Start the App

Known todos

Update built-in Runtime

To have the embedded Erlang match the one you use for compilation you can install the same version as the embedded:

mkdir -p ~/projects/
kerl build git https://github.com/diodechain/otp.git diode/beta 24.beta
kerl install 24.beta ~/projects/24.beta

The current runtime that is precompiled and sits in assets/ folder is based on dev branch of OTP currently under https://github.com/diodechain/otp/tree/diode/beta Because the included OTP apps have different versions such as crypto-5.0.3 you can only compile this project with the very same OTP version. You can probably build it with kerl. But I'll update the runtime to a newer stable OTP build soon(tm) because all neccesary changes have been merged by the Erlang team already.

Initial Startup could be faster

Running the app for the first time will extract the full Elixir & App runtime at start. On my Phone this takes around 10 seconds. After that a cold app startup takes ~3-4 seconds.

Menus and other integration not yet available

This sample only launch the elixir app and shows it in an Android WebView. There is no integration yet with the Android Clipboard, sharing or other OS capabilities. They can though easily be added to the Bridge.kt file when needed.

Other notes

  • The current sample is using Android API 23 and above

  • The Erlang runtime is for ease of use embedded in this example git repository. The native runtimes for Android ARM, ARM64 and X86_64 and the exqlite nif are are generated using the Desktop Runtime repository.

  • Android specific settings, icons and metadata are all contained in this Android Studio wrapper project.

  • Bridge.kt and the native library are doing most of the wrapping of the Elixir runtime.

Screenshots

Icons App

Architecture

App

The Android App is initializing the Erlang VM and starting it up with a new environment variable BRIDGE_PORT. This environment variable is used by the Bridge project to connect to a local TCP server inside the android app. Through this new TCP communication channel all calls that usually would go to wxWidgets are now redirected. The Android side of things implements handling in Bridge.kt.