Awesome
<p align="center"> <img src="https://anchr.io/images/logo.png" width="150"> </p> <h2 align="center">Anchr for Android</h2> <h3 align="center"> Android client for Anchr.io link collections, built with Flutter </h3> <p align="center"> <img src="https://badges.fw-web.space/github/license/muety/anchr-android"> <img src="https://badges.fw-web.space/endpoint?url=https://wakapi.dev/api/compat/shields/v1/n1try/interval:any/project:anchr-android&color=blue&label=time"> <img src="https://badges.fw-web.space/github/languages/code-size/muety/wakapi"> </p> <p align="center"> <a href="https://play.google.com/store/apps/details?id=io.muetsch.anchrandroid&utm_source=github"><img src="https://anchr.io/i/sdr1N.png" width="150"></a> </p>Prerequisites
- A hosted instance of Anchr and a registered account.
- Java >= 11 (JDK path defined in
android/gradle.properties
) - Flutter >= 2.5.3
- Dart (tested with 2.14.4)
- Android SDK (tested with v31)
- Android Studio (or VSCode)
- An Android device or emulator
How to run?
- Check out repository
- Make sure
flutter doctor
has no errors flutter packages get
flutter run
Developer notes
- State handling architecture inspired by vanilla.
- Generate launcher icon:
flutter packages pub run flutter_launcher_icons:main
Release
- Have your keystore and password ready, e.g.
~/.android/keystore.jks
- Make sure you have
android/key.properties
, which looks like so
storePassword=shhh
keyPassword=shhh
keyAlias=some_alias_eg_anchr
storeFile=/home/you/.android/keystore.jks
flutter build apk --release --flavor fmain
to build an APKflutter build appbundle --release --flavor fmain
to build an AppBundle (recommended)
F-Droid
- How to add app to F-Droid
- Build Metadata Reference
- Example
build.gradle
for Flutter build - Example store YML for Flutter build
- Fastlane specification
flutter build apk --flavor fdroid
To Do
There is still plenty of space for improvements. Those include:
- Add ability to sign up
- Add ability to share collections
- Improve database helpers (e.g. hide one-to-many relation between collections and links from the outside)
- Enhance offline mode
- Show cached content while initial request is pending
- Implement refresh tokens (requires backend changes)
- Add tests
- Clean up code
Feel free to contribute!
License
GNU General Public License v3 (GPL-3) @ Ferdinand Mütsch