An Android application for ruffle.rs
Go to file
dependabot[bot] d239f8688c
Some checks failed
Build / build-native-libs (arm64-v8a, aarch64-linux-android) (push) Has been cancelled
Build / build-native-libs (armeabi-v7a, armv7-linux-androideabi) (push) Has been cancelled
Build / build-native-libs (x86, i686-linux-android) (push) Has been cancelled
Build / build-native-libs (x86_64, x86_64-linux-android) (push) Has been cancelled
Lint & Format / rust (push) Has been cancelled
Lint & Format / android (push) Has been cancelled
Build / build-apks (push) Has been cancelled
Build / Android Tests (26) (push) Has been cancelled
Build / Android Tests (34) (push) Has been cancelled
build(deps): bump the rust-minor group across 1 directory with 9 updates
Bumps the rust-minor group with 9 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [autocfg](https://github.com/cuviper/autocfg) | `1.3.0` | `1.4.0` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.1.21` | `1.1.23` |
| [fdeflate](https://github.com/image-rs/fdeflate) | `0.3.4` | `0.3.5` |
| [hyper-util](https://github.com/hyperium/hyper-util) | `0.1.8` | `0.1.9` |
| [libc](https://github.com/rust-lang/libc) | `0.2.158` | `0.2.159` |
| [once_cell](https://github.com/matklad/once_cell) | `1.20.0` | `1.20.1` |
| redox_syscall | `0.5.4` | `0.5.7` |
| [rustls-pki-types](https://github.com/rustls/pki-types) | `1.8.0` | `1.9.0` |
| [winnow](https://github.com/winnow-rs/winnow) | `0.6.18` | `0.6.20` |



Updates `autocfg` from 1.3.0 to 1.4.0
- [Commits](https://github.com/cuviper/autocfg/compare/1.3.0...1.4.0)

Updates `cc` from 1.1.21 to 1.1.23
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.21...cc-v1.1.23)

Updates `fdeflate` from 0.3.4 to 0.3.5
- [Changelog](https://github.com/image-rs/fdeflate/blob/main/CHANGES.md)
- [Commits](https://github.com/image-rs/fdeflate/commits)

Updates `hyper-util` from 0.1.8 to 0.1.9
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.8...v0.1.9)

Updates `libc` from 0.2.158 to 0.2.159
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.159/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.158...0.2.159)

Updates `once_cell` from 1.20.0 to 1.20.1
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.0...v1.20.1)

Updates `redox_syscall` from 0.5.4 to 0.5.7

Updates `rustls-pki-types` from 1.8.0 to 1.9.0
- [Release notes](https://github.com/rustls/pki-types/releases)
- [Commits](https://github.com/rustls/pki-types/compare/v/1.8.0...v/1.9.0)

Updates `winnow` from 0.6.18 to 0.6.20
- [Changelog](https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md)
- [Commits](https://github.com/winnow-rs/winnow/compare/v0.6.18...v0.6.20)

---
updated-dependencies:
- dependency-name: autocfg
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: fdeflate
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: hyper-util
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: libc
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: once_cell
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: redox_syscall
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: rustls-pki-types
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: winnow
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 19:35:57 +02:00
.github Hold back the Android testing workflow on Ubuntu 22.04 2024-09-30 18:58:23 +02:00
app Add a (super ugly) panic screen 2024-09-18 00:57:44 +02:00
gradle build(deps): bump the gradle-minor group with 6 updates 2024-09-23 11:17:03 +02:00
src build(deps): bump the ruffle group with 9 updates 2024-09-30 19:17:13 +02:00
.editorconfig Add ktlint 2024-03-18 23:40:16 +01:00
.gitignore Restructure everything, native is now top level and app is written in kotlin with new Jetpack Compose ui 2024-03-18 23:40:16 +01:00
build.gradle.kts build(deps): bump org.jetbrains.kotlin.android from 1.9.24 to 2.0.0 2024-05-27 13:49:01 +02:00
Cargo.lock build(deps): bump the rust-minor group across 1 directory with 9 updates 2024-09-30 19:35:57 +02:00
Cargo.toml build(deps): bump the rust-minor group with 16 updates 2024-09-23 12:02:55 +02:00
CONTRIBUTING.md Add back line about TARGE_CC, TARGET_CXX and TARGET_AR 2024-04-10 14:01:05 +02:00
gradle.properties Restructure everything, native is now top level and app is written in kotlin with new Jetpack Compose ui 2024-03-18 23:40:16 +01:00
gradlew chore: Update gradle and gradlew to 8.7 2024-05-06 13:04:54 +02:00
gradlew.bat chore: Update gradle and gradlew to 8.7 2024-05-06 13:04:54 +02:00
LICENSE.md chore: Copied MIT/Apache license from Ruffle 2024-03-14 21:29:00 +01:00
README.md Add contributing.md 2024-03-27 18:58:40 +01:00
settings.gradle.kts Add ktlint 2024-03-18 23:40:16 +01:00

This is a native Android application for Ruffle.

It is in a very early stage.

Prebuilt APKs

The latest release (here) should have a few .apk files uploaded as assets.

You can try this app by downloading and installing one of those.

  • For the vast majority of modern phones, tablets, single board computers, and small game consoles, you'll need the arm64-v8a version.

  • The armeabi-v7a version is for older, 32-bit ARM stuff.

  • The x86_64 version is for some rare Intel/Microsoft tablets and/or for Chromebooks, and/or for running on a PC on Android-x86 or in Waydroid or similar.

  • The x86 version is there mostly just for completeness.

  • The universal version should work on all 4 of the above architectures, but it's huge.

Building from source

Please see CONTRIBUTING.md for details about how to build this repository yourself.


TODO

In no particular order:

  • Ability to show the built-in virtual keyboard (softinput), for text input
  • Controller/Gamepad input?
    • Mapped to key presses and/or virtual mouse pointer
  • Own custom keyboard overlay, maybe even per-content configs
    • Not an overlay, and not per-content, but custom keyboard is there
  • Error/panic handling
  • Loading "animation" (spinner)
  • Alternative audio backend (OpenSL ES) for Android < 8
  • Proper storage backend?
  • Resolve design glitches/styling/theming (immersive mode, window insets for holes/notches/corners)
  • Publish to various app stores, maybe automatically?
  • Bundle demo animations/games
  • Add ability to load content from well known online collections? (well maybe not z0r... unless?)
  • History, favorites, other flair...?

DONE:

  • Clean up ~everything
  • Cross-platform build instructions?
    • I think gradle should take care of it now
  • UI backend (context menu)
    • Context menu works
  • Logging?
  • Navigator backend (fetch, open browser)
    • Opening links works at least
  • Touch/mouse input
  • Keyboard input: only with physical keyboard connected or through scrcpy
  • Split into a separate repo
  • Add ability to Open SWF by entered/pasted URL (or even directly from clipboard)
    • No direct clipboard open, but easy to paste into the text field...
  • Unglitchify rendering: scale, center and letterbox the content properly
  • Ask CPAL/Oboe to open a "media" type output stream instead of a "call" one
    • so the right volume slider controls it, and it uses the loud(er)speaker
    • -> solved by switching to a direct AAudio (ndk-audio) backend
  • Add building this to CI, at least to the release workflow
    • This repo has its own CI setup, which builds APKs
  • Simplify build process (hook cargo-apk into gradle, drop cargo-apk?)
    • ~cargo-apk is fine, but is only used to detect the SDK/NDK environment and run Cargo in it, and not to build an APK.~
    • actually solved by switching to cargo-ndk and the corresponding Gradle plugin
  • Somehow filter files to be picked to .swf
    • How well this works depends on the file picker, but it "should work most of the time"
  • Unglitchify audio volume (buttons unresponsive?)
  • Register Ruffle to open .swf files
    • How well this works depends on the application opening the file, but it "should work most of the time"
  • Figure out why videos are not playing (could be a seeking issue)
    • The video decoder features weren't enabled on ruffle_core...
  • Sign the APK
    • Using a very simple key for now, with just my name in it
  • Support for 32-bit ARM phones
    • Untested, but should work in theory
  • Support for x86(_64) tablets?
    • Sorted out
  • Consider not building the intermediate .apk just for the shared libraries
    • Figured out, no intermediate .apk any more, only native libs built
  • Unbreak the regular build on CI
    • No longer relevant after the repo split
  • Clean up commit history of the branch
    • No longer relevant after the repo split