NativeActivity draws the whole window, also below the system bars, so the
top toolbar button lay under the status bar and taps there went to
Android (no other notebook could be opened). InkActivity now reports the
system bar and cutout insets; the app shrinks egui's screen rect to the
free area and adds the side insets to the page centering. The page itself
still scrolls below the bars.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- scripts/setup-android-sdk.sh installs fixed versions of the Android
command-line tools (checksum verified), platform 34, build-tools
34.0.0 and NDK 28.2
- packaging/android/Containerfile + scripts/build-apk-container.sh build
the APK in a container (podman or docker) with JDK 17 and Rust 1.99
- New CI job "Android APK (experimental)": builds the APK and keeps it
as a workflow artifact, signed with the key from the secrets
ANDROID_KEYSTORE_B64/ANDROID_KEYSTORE_PASS/ANDROID_KEY_ALIAS if set.
Not part of the release yet; its failure doesn't block the release.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
InkActivity extends NativeActivity:
- An invisible view with its own input connection receives the soft
keyboard's text (commitText, deleteSurroundingText), so characters
without a key event (umlauts by long press, ...) arrive as well. The
field is a visible-password field, so keyboards commit each character
instead of composing words.
- Import and "insert image" open the system file dialog
(ACTION_OPEN_DOCUMENT); the chosen file is copied to the cache folder
and handed to Rust by path.
src/android_bridge.rs calls the activity through JNI and receives its
native calls; package-android.sh compiles the class with javac and d8.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The drawing surface is created once the native window exists (Resumed)
and released when the app goes to the background (Suspended); before
that everything is saved, as Android may stop the app at any time
- Android's back button acts like Escape instead of closing the app
- Panics are written to logcat; no update check on Android yet
- scripts/package-android.sh builds target/ink-notes_<version>_arm64.apk
without Gradle (NDK, aapt2, zipalign, apksigner); signing key from
ANDROID_KEYSTORE/ANDROID_KEYSTORE_PASS/ANDROID_KEY_ALIAS, otherwise
the debug key
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>