Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Android

Perry compiles TypeScript apps for Android using JNI (Java Native Interface).

Requirements

  • Android NDK
  • Android SDK
  • Rust Android targets:
    rustup target add aarch64-linux-android armv7-linux-androideabi
    

Building

perry app.ts -o app --target android

UI Toolkit

Perry maps UI widgets to Android views via JNI:

Perry WidgetAndroid Class
TextTextView
ButtonButton
TextFieldEditText
SecureFieldEditText (ES_PASSWORD)
ToggleSwitch
SliderSeekBar
PickerSpinner + ArrayAdapter
ImageImageView
VStackLinearLayout (vertical)
HStackLinearLayout (horizontal)
ZStackFrameLayout
ScrollViewScrollView
CanvasCanvas + Bitmap
NavigationStackFrameLayout

Android-Specific APIs

  • Dark mode: Configuration.uiMode detection
  • Preferences: SharedPreferences
  • Keychain: Android Keystore
  • Notifications: NotificationManager
  • Open URL: Intent.ACTION_VIEW
  • Alerts: PerryBridge.showAlert
  • Sheets: Dialog (modal)

Differences from Desktop

  • Touch-only: No hover events, no right-click context menus
  • Single window: Multi-window maps to Dialog views
  • Toolbar: Horizontal LinearLayout
  • Font: Typeface-based font family support

Next Steps