Skip to content

Releases: ysdragon/ring2apk

v1.2.3

Choose a tag to compare

@ysdragon ysdragon released this 13 Sep 17:44
557f15f

Ring2APK - v1.2.3

Incremental builds respect ignored native sources, and the WebView
example becomes an ExtLab native-extensions showcase.

Highlights

  • Incremental builds honor .gitignore — source hashing skips
    vendored native caches and pins the toolchain by RING/NDK identity.
  • ExtLab showcase — examples/webview is now a five-tab demo
    (Home/SQLite/JSON/HTTP/Threads) with Ring owning state and JS rendering.
  • Static extensions framework — cmake/RingExtensions.cmake generates
    ext.c from src/cpp/ext/; clone-once thirdparty/ (curl 8.22.0,
    wolfSSL 5.9.2, Glaze 7.5.0, webview 1.6.1) with OS-store TLS trust, so
    device HTTPS verifies with no cert config.
  • Quieter Android builds — -Wno-deprecated silences the NDK CMake
    < 3.10 compatibility noise.

Docs

  • examples/webview/EXTENSIONS.md — adding extensions, third-party
    deps, bridge contract, troubleshooting; example README rewritten with
    device screenshots

Package

  • package.ring 1.2.2→1.2.3 — ExtLab sources, Ring wrappers, cmake
    module, ext tree, docs screenshot

Full Changelog: v1.2.2...v1.2.3

v1.2.2

Choose a tag to compare

@ysdragon ysdragon released this 08 Sep 07:44
8600ac1

Ring2APK - v1.2.2

Windows Java fix plus raylib sync and new WebView example.

Highlights

  • raylib sync — 5.0 / 4.0 — examples/raylib (renamed from ringraylib) now matches upstream ring/extensions/ringraylib5 .
  • WebView example — Nota — new examples/webview.
  • Windows build fix — d8 dexing failed on MainActivity$1.class etc. on Windows (NoSuchFileException: MainActivity\$1.class). src/commands/build.ring now only escapes $ as \$ on non-Windows (bash/zsh expand $1 inside "), Windows passes literal $ for cmd.exe.
  • javac --release — javac -source 11 -target 11 → --release 11 — sets --system to JDK 11 modules, silences location of system modules is not set warning and prevents accidental JDK 26 API usage on minSdk 21.

Features

  • examples — add examples/webview (Nota)

Fixes

  • build — d8 Windows $ quoting
  • build — javac --release 11

Docs

  • README — example table corrected (raylib 5.0 / raygui 4.0, add webview row)
  • examples/raylib — README.md + screenshots/screens.png.

Package

  • package.ring 1.2.0→1.2.2 — includes examples/raylib (renamed) + examples/webview assets

Full Changelog: v1.2.0...v1.2.2

v1.2.0

Choose a tag to compare

@ysdragon ysdragon released this 06 Sep 11:46
9b9ce9e

Ring2APK - v1.2.0

Project setup command plus incremental hash fixes.

Highlights

  • setup command — new ring2apk setup runs the optional :setup entry from ring2apk.ring (one shell command or a list run in order, first failure stops with exit 1). Explicit only, the build never runs it. Empty or missing key = nothing to do. The ringraylib example uses :setup = "ring download_deps.ring", so fresh clones run setup before the first build.
  • hash fix — the incremental hash took 76s just listing files on ringraylib. Now the full hash is ~73ms. Cause: a caller variable sharing a name with a function internal corrupts results in Ring, so listAllFilesEx internals were renamed (dont rename them back). It hashes everything now: ring (.ring + .rh), java, all of src/cpp including vendored checkouts, assets, resources, manifest, and ring2apk.ring itself.

Features

  • commands — add ring2apk setup for executing project setup steps
  • config — add :setup configuration option for project setup commands

Fixes

  • build — hash .rh headers and ring2apk.ring itself; hash all of src/cpp with no exclusions

Refactor

  • utils — simplify listAllFilesEx implementation (bulk merge, hoisted invariants, distinctive internal names)
  • build — simplify sources hash file collection

Docs

  • README — setup command usage instructions, incremental build hash documentation
  • examples — add :setup configuration to ringraylib example

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@ysdragon ysdragon released this 04 Sep 08:12
79a0951

Ring2APK - v1.1.0

One-command Android toolchain setup plus dotted SDK platform support.

Highlights

  • setup-env tool — new interactive tools/setup-env.ring (≈1200 lines) installs JDK, Android SDK (cmdline-tools, platform-tools, platforms, build-tools), NDK, and CMake, then configures JAVA_HOME, ANDROID_HOME, ANDROID_SDK_ROOT, ANDROID_NDK_ROOT, PATH. Supports interactive and non-interactive modes, ships in the package, documented in the README.
  • Dotted SDK platforms — :compileSdk = "37.0" now matches platforms/android-37.0 literally (quoted strings pass through unstripped); a bare major with no exact dir falls back to its base dotted dir (36 → android-36.0). android.jar not found errors now list installed platforms, ~/Android joins the default SDK search locations, and SDK validation tolerates string inputs via NumOrZero.
  • Windows path hardening — all build/init/run/sign path assembly moved to joinPath, and the vendored-Ring exclusion is separator-normalized so hashing and filtering behave on Windows.

Features

  • package — add ring-html and archive package dependencies
  • build — log a message when Java compilation is skipped (no sources)

Fixes

  • config — type-check cApiLevel before string conversion in platform lookup

Refactor

  • paths — replace string concatenation with joinPath across build/init/run/sign

Docs

  • README — setup-env usage instructions
  • cli — remove examples section from help output

Package

  • package.ring ships tools/setup-env.ring and the new ring-html/archive dependencies

Full Changelog: v1.0.1...v1.1.0

v1.0.1

Choose a tag to compare

@ysdragon ysdragon released this 01 Sep 18:15
7f32728

Ring2APK - v1.0.1

Fixes Windows native builds and ships the first full app template.

Highlights

  • Windows Ninja fix — cmake.exe -G Ninja no longer fails when ninja is bundled at <sdk>/cmake/<ver>/bin/ninja.exe but that dir isn't on PATH. Now detects ninja[.exe] next to the selected cmake, passes -DCMAKE_MAKE_PROGRAM explicitly, keeps -G Ninja when ninja is on PATH, and omits -G to fall back to CMake's default generator when no Ninja exists at all.
  • ringraylib example — complete raylib 5.5 + raygui 5.0 showcase (menu, touch/gestures, GUI controls, info) on NativeActivity. ring/ screens + raylib/raygui wrappers, src/cpp/ring_raylib.c (15k+ lines bindings), immersive MainActivity (WindowInsetsController hide status/nav, API 21+/30+), AndroidManifest.xml + themed res/, download_deps.ring for heavy vendored deps, UI scaled with min(screenW/720, screenH/1280) capped at 2x.

Fixes

  • build — CMake Error: CMAKE_MAKE_PROGRAM is not set on Windows
  • package — remove stray AndroidManifest.xml from hello example package list

Docs

  • README — add project templates / examples section
  • README — add Windows shell command examples for file viewing

Package

  • package.ring now includes all examples/ringraylib assets (res, ring, cpp, java, manifest, screenshots)

Full Changelog: v1.0.0...v1.0.1

v1.0.0

Choose a tag to compare

@ysdragon ysdragon released this 31 Aug 05:24
695e2ab

v1.0.0 — Initial Release

Build Android APKs from Ring applications without Gradle.

Highlights

  • No Gradle — calls SDK tools directly. Fast, debuggable, no daemon.
  • Ring bytecode embedding — compiles ring/*.ring to C bytecode and links it into libmain.so. No .ring assets shipped.
  • Native-first — android.app.NativeActivity host, your src/cpp built with the NDK via CMake + Ninja.
  • Optional Java — any src/java/**/*.java compiled with javac and dexed with d8.
  • Ring-native config — single ring2apk.ring hash list with defaults for every key.
  • Multi-ABI — arm64-v8a, armeabi-v7a, x86, x86_64 (override per-build with --target).
  • Incremental builds — skips when APK exists and sources haven't changed (Murmur3 hash); --rebuild to force.
  • 16 KB page-size ready — native libs linked with -Wl,-z,max-page-size=16384 (Android 15+ / Play Console).
  • Signing built in — debug keystore auto-created; release signing from config or CLI, verified with apksigner.

Commands

Command Description
init Scaffold a new project
build Compile debug/release APK
run Build + install + launch + logcat
sign Sign an existing APK
clean Remove build artifacts
create-keystore Generate a release keystore
help / version Self-explanatory

Installation

ringpm install ring2apk from ysdragon

Pre-built binaries: Releases

Requirements

  • Ring 1.27+ (RING env or ring on PATH) — strictly required
  • Android SDK (ANDROID_SDK_ROOT / ANDROID_HOME)
  • Android NDK
  • JDK, CMake + Ninja, zip

Quick Start

ring2apk init hello
cd hello
ring2apk build    # → build/hello-debug.apk
ring2apk run      # build + install + launch + logcat

Full Changelog: https://github.com/ysdragon/ring2apk/commits/v1.0.0