ankidroid / ankidroid/Anki-Android-Backend

Convert `rsdroid[-testing]` to a `java-library`

Open
#674 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
91
Forks
54
Avg merge
1d 36m
Merged PRs (30d)
12

Description

* Speeds up tests
* This is more useful now we're considering re-architecting the module structure of the app. If we can remove 'Robolectric' from a test suite for a module, we get huge savings. There are many tests which only use Robolectric due to the `rsdroid`/`libanki`, but we can't feasibly
* Fixes local builds: `Direct local .aar file dependencies are not supported when building an AAR.`
* https://github.com/ankidroid/Anki-Android-Backend/issues/671
* This does not impact `androidTest`
* I was asked in the past about this for a university project. It seemed feasible at the time, but I didn't have capacity.

**Initial thoughts**

1. What are the blockers? (database; Looper etc...)
* I do not believe these will cause significant problems.
2. How will packaging the `.so` files work?
* We currently have two artifacts: `rsdroid` with `.so` files for each of the 4 mainstream Android targets.
* `rsdroid-testing` with `rsdroid.dll`, `librsdroid.dylib` and `librsdroid.so` for Robolectric
* Loaded via `RustBackendLoader`
3. Document `build/generated/anki_artifacts`
* Used via `AssetManager` - mmap onto the apk

**Constraints**

* Bloating the apk size (fat JAR) is unacceptable
* Local `aar` -> `aar` references are unacceptable
* `apk` -> local `aar`
* `anki_artifacts` are heavily latency sensitive: Pages and web content used by the study screen

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.