Overview
simple_eif_phone lets you write a whole Android app in Eiffel. One command turns an Eiffel project into a signed APK, with no Gradle and no Android Studio.
Part of the Simple Eiffel ecosystem.
What's here
| Part | What it is | Compiled by |
|---|---|---|
eifphone (tool/) | Command-line tool: Eiffel project in, signed APK out. | EiffelStudio (Windows) |
simple_eif_phone (src/) | Library: the phone in phone terms (app life, touch, keys, screen, sizes, folders, packed files, log), all with contracts. | Gobo gec, then the Android NDK |
runtime/ | The fixed C glue and the Java helper scaffold. Apps never edit these. | Packaged by the tool |
examples/ | hello, touch_pad (drawing demo), phone_tests (on-device tests), java_scaffold, touch_bench (speed measures). |
Status
Version 0.1.0: early, working, not yet widely used.
- 88 tool tests, 33 logic tests and 18 on-device tests pass, with zero warnings. On-device tests ran on the emulator.
- On a real ARM phone, the touch pad took five fingers at once. Putting a full screen up took 1.8 ms on average and 6.5 ms at worst.
- Random-input stress: 9,000 events on each of the fast and checked builds of the touch pad, with no crash.
Known limitations
- The tool runs on Windows only. Phone apps run on Android 8.0 (API 26) or later, on ARM64 and x86_64.
- One thread. Threads and SCOOP are not supported on the phone yet.
- Not yet: text entry (the keyboard), read-aloud, the file picker, SQLite, and running cairo, shaping and widgets on the phone.
- An
adbthat never answers hangs the tool. The runner has no timeout. Stop the tool by hand if that happens. eifphone runshows the first 3 seconds of the log. Useeifphone logfor the rest.- On-device tests have run on the emulator only. Speed, multi-touch, Home and return, and rotation were checked by hand on one real ARM phone.
- Two one-off failures are unexplained.
tap_arrivesfailed once, in the first run after a stress session on a fresh emulator, then passed. One stress run stopped on a crash from a process that was not identified, and the same run passed when repeated.
Where to go next
- Quick API: commands, the project file and a first app.
- User Guide: setup, signing, contracts and speed, testing on a phone.
- Cookbook: saving state, drawing pixels, reading packed files.