An Android application for ruffle.rs
Go to file
dependabot[bot] 2573a575ed build(deps): bump the rust-minor group across 1 directory with 28 updates
Bumps the rust-minor group with 22 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [tokio](https://github.com/tokio-rs/tokio) | `1.38.1` | `1.39.2` |
| [anstream](https://github.com/rust-cli/anstyle) | `0.6.14` | `0.6.15` |
| [anstyle](https://github.com/rust-cli/anstyle) | `1.0.7` | `1.0.8` |
| [anstyle-parse](https://github.com/rust-cli/anstyle) | `0.2.4` | `0.2.5` |
| [anstyle-query](https://github.com/rust-cli/anstyle) | `1.1.0` | `1.1.1` |
| [anstyle-wincon](https://github.com/rust-cli/anstyle) | `3.0.3` | `3.0.4` |
| [bstr](https://github.com/BurntSushi/bstr) | `1.9.1` | `1.10.0` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.1.6` | `1.1.7` |
| [clap](https://github.com/clap-rs/clap) | `4.5.9` | `4.5.11` |
| [clap_lex](https://github.com/clap-rs/clap) | `0.7.1` | `0.7.2` |
| [colorchoice](https://github.com/rust-cli/anstyle) | `1.0.1` | `1.0.2` |
| [enumset](https://github.com/Lymia/enumset) | `1.1.4` | `1.1.5` |
| [env_filter](https://github.com/rust-cli/env_logger) | `0.1.0` | `0.1.2` |
| [is_terminal_polyfill](https://github.com/polyfill-rs/is_terminal_polyfill) | `1.70.0` | `1.70.1` |
| [jobserver](https://github.com/rust-lang/jobserver-rs) | `0.1.31` | `0.1.32` |
| [num_enum](https://github.com/illicitonion/num_enum) | `0.7.2` | `0.7.3` |
| [object](https://github.com/gimli-rs/object) | `0.36.1` | `0.36.2` |
| [quick-xml](https://github.com/tafia/quick-xml) | `0.36.0` | `0.36.1` |
| [rustls](https://github.com/rustls/rustls) | `0.23.11` | `0.23.12` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.120` | `1.0.121` |
| [toml_datetime](https://github.com/toml-rs/toml) | `0.6.6` | `0.6.7` |
| [version_check](https://github.com/SergioBenitez/version_check) | `0.9.4` | `0.9.5` |



Updates `tokio` from 1.38.1 to 1.39.2
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.38.1...tokio-1.39.2)

Updates `anstream` from 0.6.14 to 0.6.15
- [Commits](https://github.com/rust-cli/anstyle/compare/anstream-v0.6.14...anstream-v0.6.15)

Updates `anstyle` from 1.0.7 to 1.0.8
- [Commits](https://github.com/rust-cli/anstyle/compare/v1.0.7...v1.0.8)

Updates `anstyle-parse` from 0.2.4 to 0.2.5
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-parse-v0.2.4...anstyle-parse-v0.2.5)

Updates `anstyle-query` from 1.1.0 to 1.1.1
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-query-v1.1.0...anstyle-query-v1.1.1)

Updates `anstyle-wincon` from 3.0.3 to 3.0.4
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-wincon-v3.0.3...anstyle-wincon-v3.0.4)

Updates `bstr` from 1.9.1 to 1.10.0
- [Commits](https://github.com/BurntSushi/bstr/compare/1.9.1...1.10.0)

Updates `cc` from 1.1.6 to 1.1.7
- [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.6...cc-v1.1.7)

Updates `clap` from 4.5.9 to 4.5.11
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.9...clap_complete-v4.5.11)

Updates `clap_builder` from 4.5.9 to 4.5.11
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.9...v4.5.11)

Updates `clap_derive` from 4.5.8 to 4.5.11
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.8...v4.5.11)

Updates `clap_lex` from 0.7.1 to 0.7.2
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_lex-v0.7.1...clap_lex-v0.7.2)

Updates `colorchoice` from 1.0.1 to 1.0.2
- [Commits](https://github.com/rust-cli/anstyle/compare/colorchoice-v1.0.1...colorchoice-v1.0.2)

Updates `enumset` from 1.1.4 to 1.1.5
- [Changelog](https://github.com/Lymia/enumset/blob/main/RELEASES.md)
- [Commits](https://github.com/Lymia/enumset/compare/v1.1.4...v1.1.5)

Updates `enumset_derive` from 0.9.0 to 0.10.0
- [Changelog](https://github.com/Lymia/enumset/blob/main/RELEASES.md)
- [Commits](https://github.com/Lymia/enumset/commits)

Updates `env_filter` from 0.1.0 to 0.1.2
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/env_filter-v0.1.0...env_filter-v0.1.2)

Updates `is_terminal_polyfill` from 1.70.0 to 1.70.1
- [Changelog](https://github.com/polyfill-rs/is_terminal_polyfill/blob/main-v1.70/CHANGELOG.md)
- [Commits](https://github.com/polyfill-rs/is_terminal_polyfill/compare/v1.70.0...v1.70.1)

Updates `jobserver` from 0.1.31 to 0.1.32
- [Commits](https://github.com/rust-lang/jobserver-rs/compare/0.1.31...0.1.32)

Updates `mio` from 0.8.11 to 1.0.1
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/commits)

Updates `num_enum` from 0.7.2 to 0.7.3
- [Commits](https://github.com/illicitonion/num_enum/compare/0.7.2...0.7.3)

Updates `num_enum_derive` from 0.7.2 to 0.7.3
- [Commits](https://github.com/illicitonion/num_enum/compare/0.7.2...0.7.3)

Updates `object` from 0.36.1 to 0.36.2
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.1...0.36.2)

Updates `quick-xml` from 0.36.0 to 0.36.1
- [Release notes](https://github.com/tafia/quick-xml/releases)
- [Changelog](https://github.com/tafia/quick-xml/blob/master/Changelog.md)
- [Commits](https://github.com/tafia/quick-xml/compare/v0.36.0...v0.36.1)

Updates `rustls` from 0.23.11 to 0.23.12
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.11...v/0.23.12)

Updates `serde_json` from 1.0.120 to 1.0.121
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.120...v1.0.121)

Updates `tokio-macros` from 2.3.0 to 2.4.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-macros-2.3.0...tokio-macros-2.4.0)

Updates `toml_datetime` from 0.6.6 to 0.6.7
- [Commits](https://github.com/toml-rs/toml/compare/toml_datetime-v0.6.6...toml_datetime-v0.6.7)

Updates `version_check` from 0.9.4 to 0.9.5
- [Commits](https://github.com/SergioBenitez/version_check/compare/v0.9.4...v0.9.5)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: anstream
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: anstyle
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: anstyle-parse
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: anstyle-query
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: anstyle-wincon
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: bstr
  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: clap
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: clap_builder
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: clap_derive
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: clap_lex
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: colorchoice
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: enumset
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: enumset_derive
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: env_filter
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: is_terminal_polyfill
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: jobserver
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-major
  dependency-group: rust-minor
- dependency-name: num_enum
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: num_enum_derive
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: object
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: quick-xml
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: serde_json
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: tokio-macros
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: toml_datetime
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: version_check
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rust-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 17:06:06 +02:00
.github build(deps): bump dawidd6/action-download-artifact from 5 to 6 2024-06-17 12:32:53 +02:00
app Update strings.xml 2024-07-08 16:19:05 +02:00
gradle build(deps): bump the gradle-minor group with 3 updates 2024-07-29 12:58:00 +02:00
src Flush shared objects before quit 2024-07-10 14:09:17 +00: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 28 updates 2024-07-29 17:06:06 +02:00
Cargo.toml build(deps): bump the rust-minor group across 1 directory with 28 updates 2024-07-29 17:06:06 +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