rudi 0eaab32e2f
Build and Test a3270 / Build Android APK (push) Successful in 3m39s
Update Status/FileTransfer
2026-09-06 09:30:26 -04:00
2026-09-06 09:30:26 -04:00
2026-08-20 17:42:22 -04:00
2026-09-06 09:30:26 -04:00
2026-08-20 17:42:22 -04:00
2026-08-31 10:30:32 -04:00
2026-08-24 20:46:09 +00:00
2026-08-25 01:12:09 +00:00
2026-08-20 17:42:22 -04:00
2026-08-20 17:42:22 -04:00
2026-08-21 12:52:29 -04:00
2026-09-05 14:24:32 -04:00
2026-08-20 17:42:22 -04:00

a3270

Build & Test Android License: Unlicense

An x3270-aligned IBM 3270 mainframe terminal emulator for Android, written in Kotlin using Jetpack Compose and powered by the lib3270j protocol engine from j3270. Designed for mobile access to IBM z/OS, z/VM, CMS, and TSO systems over TN3270 and TN3270E.


🔗 Repositories

a3270 relies on the shared 3270 protocol library (lib3270j) provided by the j3270 repository.


🚀 Quick Download & Install

Latest Standalone APK

You can download ready-to-install Android APKs directly from releases or CI builds:

Installing a3270

To install the APK on a connected Android device or emulator via adb:

adb install -r a3270.apk

📱 Compatibility & System Requirements

  • Minimum Android Version: Android 7.0 (Nougat) — API Level 24 (minSdk 24)
  • Target Android Version: Android 14 — API Level 34 (targetSdk 34)
  • Compile SDK: API Level 34 (compileSdk 34)
  • Architecture: Universal — pure Kotlin/Java running on ART, fully compatible with all CPU ABIs (arm64-v8a, armeabi-v7a, x86, x86_64)
  • Form Factors: Adaptive UI scaling optimized for smartphones, foldables, tablets, and Chromebooks (Android runtime)
  • Input Devices: Full touch-screen support, native virtual keyboards, and external physical/Bluetooth keyboards

Features

🖥️ Terminal Emulation & Protocol

  • RFC 2355 TN3270 & TN3270E Engine: Robust state machine, Option Negotiation, Device-Type Query, and LU name specification powered by lib3270j.
  • Standard & Dynamic Terminal Models:
    • Model 2 (24 × 80)
    • Model 3 (32 × 80)
    • Model 4 (43 × 80)
    • Model 5 (27 × 132)
    • Dynamic Screen Dimensions: Configurable custom geometry (rows & columns up to 255 × 255).
  • EBCDIC Code Pages: Full character translation across international code pages (037, 1047, 500, etc.).

📊 Graphics & Peripherals

  • GDDM & GOCA Graphics: Native rendering of Programmed Symbols (PS) and GOCA vector graphics directly in the Compose canvas.
  • Light Pen Simulation: Interactive touch support to simulate light pen selection and graphic cursor pick correlation.
  • IBM 3287 Printer Emulation: Integrated printer session support for spool/report capture (via associated display LU or dedicated printer LU) with direct printing through Android PrintManager (PDF export / system print).

📁 IND$FILE File Transfer

  • Full mobile UI supporting both CUT and DFT (DDM) high-speed structured field transfers.
  • Compatible with TSO, VM/CMS, and CICS environments.
  • ASCII/binary translation, CRLF conversions, and configurable record format (recfm), record length (lrecl), and allocation units.

🔍 Developer & Productivity Tools

  • Field Inspector: Live interactive inspector displaying start/end addresses, length, protection, numeric status, MDT (Modified Data Tag), display intensity, and extended highlighting/color, with one-tap "Jump to Field".
  • Screen Search / Find: On-screen text search with case sensitivity, forward/backward navigation, and visual match highlighting.
  • Screen Exporter: Export the current screen buffer to Plain Text, formatted HTML, or PNG image, with one-tap clipboard copy and Android system share sheet integration.
  • Script & Macro Automation: Built-in script runner supporting automated keystroke and wait sequences (e.g. [enter], [wait], [tab]) for login macros and repetitive tasks.

✍️ Entry Assist & Typing Modes

  • Document (DOC) Mode: Configurable left/right margins, custom tab stops, and end-of-line bell warning.
  • Word Wrap: Automatic word wrapping across lines during input.
  • APL Mode: Support for APL extended character sets and symbols.
  • Field Handling: Automatic field skip (Auto-Skip), Numeric field lock, and Insert Mode auto-reset on AID transmission.

🎨 Display, Themes & Ergonomics

  • Jetpack Compose UI: Smooth, hardware-accelerated 3270 terminal screen rendering with touch-to-position cursor.
  • Color Themes: Light and Dark application themes, 3270 extended color support, and 4-color legacy override mode.
  • Cursor Customization: Block and Underline cursor styles with toggleable blinking.
  • Crosshair Ruler: Toggleable horizontal and vertical ruler lines following the cursor for easy data tracking.
  • Block Selection: Rectangular text selection and copy mode.
  • OIA Status Line: Real-time Operator Information Area displaying connection status, keyboard lock, insert mode, cursor row/col, LU name, and inhibit reason codes.

🔒 Security, Networking & Storage

  • SSL / TLS Encryption: Secure encrypted mainframe sessions with TLS certificate verification.
  • Interactive Untrusted Certificate Prompt: Inspect SSL certificates, view full certificate chain details, and accept/reject unverified connections.
  • Proxy Support: Connect via HTTP CONNECT, SOCKS4, SOCKS5, and Telnet proxies with optional user/password authentication.
  • Background Session Persistence: Android foreground service (specialUse) keeps your terminal TCP connection alive with status notifications when multitasking or screen is off.
  • Host Profile Manager & INI Export: Save multiple mainframe profiles, configure auto-connect on launch, and export/import configuration in INI format (interoperable with desktop j3270).

⌨️ Input & Keyboards

  • On-Screen Function Key Bar: Two-row responsive touch bar providing PF1PF24, PA1PA3, Enter, Clear, Reset, Attn, SysReq, Erase EOF, Erase Input, Tab, BackTab, and D-pad cursor controls with haptic feedback.
  • Termux-Style Native Input: Low-latency native input connection with permanent number row and lock protection against soft-keyboard resets.
  • Hardware Keyboard Support: Complete physical keyboard integration with F1F12 (mapped to PF1PF12 / PF13PF24 with Shift/Alt), Ctrl shortcuts, dead keys, and international character input.

🛠️ Building from Source

Prerequisites

  • Java Development Kit (JDK): JDK 17 or JDK 21
  • Android SDK: API 34 platforms and build-tools (ANDROID_HOME or ANDROID_SDK_ROOT set)
  • Minimum Target Device: Android 7.0+ (API 24+)

1. Clone Repositories Side-by-Side

For the easiest setup, clone both j3270 and a3270 into the same parent folder:

git clone https://git.hugfreevikings.wtf/rudi/j3270.git
git clone https://git.hugfreevikings.wtf/rudi/a3270.git
cd a3270

Note: If j3270 is located in another directory, specify its location via the J3270_DIR environment variable:

export J3270_DIR=/path/to/j3270

or via Gradle property:

./gradlew assembleDebug -Pj3270Dir=/path/to/j3270

2. Build the Debug APK

Using the helper script:

./build.sh

Or using Gradle Wrapper directly:

./gradlew assembleDebug

The compiled APK will be generated at:

build/outputs/apk/debug/a3270-debug.apk

📜 Acknowledgements

  • j3270 — Desktop emulator and lib3270j protocol engine
  • x3270 — Reference C implementation and protocol specifications
  • Antigravity
  • Claude Opus 4.6
  • Gemini 3.1 Pro
  • Gemini 3.7 Flash
  • Gemma4 12B and 26B
  • GPT-OSS 120B
  • Qwen3 4B and 32B
S
Description
Android client for j3270
Readme Unlicense 766 KiB
a3270 v1.1.2 Latest
2026-09-12 21:22:26 +00:00
Languages
Kotlin 99.6%
Shell 0.4%