/annix

Mobile app & native client for Project Anni.

Primary LanguageDartApache License 2.0Apache-2.0

Annix

Desktop / Mobile client for Project Anni.

Features

  • Cross-platform player designed for Project Anni
    • Tested on Linux(Manjaro KDE), macOS, Windows, Android and iOS(iPad mini5)
  • Control through MPRIS on Linux
  • Portable mode (create a file named portable.enable)

Build

# https://github.com/dart-lang/ffigen/issues/257#issuecomment-1061788936
export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation" | rev | cut -d' ' -f1 | rev)/include"

# [Optional] Build models
dart run build_runner build --delete-conflicting-outputs

# Build apk
flutter build apk --release --split-per-abi --split-debug-info debug --obfuscate

# Build for iOS
rustup target add aarch64-apple-ios x86_64-apple-ios
rustup target add aarch64-apple-ios-sim
flutter build ios --profile

Distribution

For desktop or Android users, please visit Release and choose which asset to download accourding to your platform.

For Android users, you can also get an official release to join our public beta test on Play Store.

For iOS users, only Testflight is available for now.

Release branches

There are two release branches: canary and nightly.

Canary builds are binaries built from master branch. There might be some some unknown bugs.

Nightly builds are triggered daily or manually so most severe issues would be resolved. The daily cron job might be disabled in the future to makes nightly more stable.

TODOs

  • Audio Playback
  • Annil
    • Server info
    • Album list
    • Cover
      • Cover cache
    • Audio
      • Audio cache
    • Annil selection based on priority
  • Metadata Sources
    • Anniv
    • Local sqlite file
    • Remote sqlite file
    • Metadata repository
  • Anniv
    • Server Info
    • User system
      • Login
        • 2FA
      • Register
      • Logout
      • Revoke account
    • Playlist
      • List playlist
      • Create playlist
      • Remove playlist
      • Edit playlist
        • Append
        • Remove
        • Reorder
        • Replace
    • Favorite
      • Add favorite
      • Remove favorite
      • Favorite list
      • Add favorite album
      • Remove favorite album
      • Favorite album list
    • Credentials
      • Get credentials
      • Add credential
      • Edit credential
      • Delete credential
      • Reorder credential priority
    • Play history
      • Report history
      • Query history
    • Lyric
      • Get lyric
      • Lyric sources
        • Netease Music
        • PetitLyrics
      • Edit lyric
      • Upload lyric to Anniv
    • Search
      • Search with tags

Thanks

  • WeSlide - MIT License: We're using a modified version of this package to implement the main player UI on mobile.