- Swift 44.6%
- Kotlin 43.5%
- HTML 7.5%
- Python 3.3%
- JavaScript 0.7%
- Other 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| .github | ||
| app | ||
| appstore | ||
| docs | ||
| fastlane/metadata/android/en-US | ||
| gradle/wrapper | ||
| ios | ||
| play | ||
| promo | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| RETAINED_DOWNLOADS.md | ||
| SESSION_ISOLATION.md | ||
| settings.gradle.kts | ||
ABS+
A small, fast Android and iOS player for your own Audiobookshelf server. Free, no ads, no analytics.
- Website: https://absplus.app (source in
docs/, served by GitHub Pages) - Google Play: https://play.google.com/store/apps/details?id=com.borodutch.absplus
- App Store: https://apps.apple.com/app/id6818353284
- APK: latest release
Build
JDK 21 and the Android SDK:
./gradlew assembleRelease
Without a keystore.properties, release builds come out unsigned, which is how F-Droid builds them.
Releasing
Bump versionCode and versionName in app/build.gradle.kts and add fastlane/metadata/android/en-US/changelogs/<versionCode>.txt (one or two plain sentences, with no mention of Android or iPhone: Google Play, the App Store and F-Droid all show them). Merge, then publish the release:
gh release create vX.Y.Z --target main --title "ABS+ X.Y.Z" --notes-file fastlane/metadata/android/en-US/changelogs/<versionCode>.txt
The Release workflow ships everything from that one release: the bundle to Google Play, the iPhone app to the App Store (build number = versionCode), the signed absplus-X.Y.Z.apk (and the same file as absplus.apk, which absplus.app links through releases/latest) to the release, and the new version to the F-Droid merge request while it's open. A previous version still waiting for review or in review is replaced on both stores. F-Droid builds the tag itself and publishes the APK only if its own build matches it. Run the workflow by hand with mode dry-run to build everything and publish nothing, or testflight-only to upload the iPhone build without submitting it. The store texts and images in fastlane/ link to play/.
iOS
The SwiftUI app lives in ios/ (iOS 26.1+, iPhone). Open ios/ABSPlus.xcodeproj in Xcode 27, or build from the command line:
xcodebuild -project ios/ABSPlus.xcodeproj -scheme ABSPlus -destination 'generic/platform=iOS Simulator' build
ios/UITests/Tour.swift walks through every screen against a real server and saves screenshots; see the comment at its top for the environment variables it needs.
License
MIT