|
|
||
|---|---|---|
| .forgejo/workflows | ||
| app | ||
| assets | ||
| fastlane/metadata/android | ||
| gradle | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Zipline Android App
Important
iOS is not supported
This is an android app made to manage your Zipline V4 (self-hosted) server and also upload files or shorten URLs. You can also share files to the app to upload them.
Features
- Upload Files
- Shorten URLs
- Manage Files
- Manage URLs
- Manage Folders
- View your Stats
- Manage your own User
- Manage Users (requires an admin account)
- Manage Server Settings (requires a admin or superadmin account)
Note
If you add a widget but it appears empty or has null values, set the app battery usage to "Unrestricted" and re-add them.
This should fix it.
Download
The app is available on the following platforms:
- Google Play Store
- Forgejo Releases
- Fdroid (waiting for approval)
Creating a development build
To create a development build just run ./gradlew assembleDebug or use the Android Studio Emulator
This will create an APK in app/build/outputs/apk/debug/app-debug.apk
Building an apk
just run ./gradlew assembleRelease
This will create an APK in app/build/outputs/apk/release/app-release(-unsigned).apk
Flavortown
If you're from flavortown and don't want to host your own Zipline V4 instance, you can use the following credentials:
Server URL: https://i.stefdp.com
Username: FT Demo
Password: FT Demo 1
Note
This user has the following limits:
- 2GB max file size (across all uploaded files)
- 20 shortened URLs
Are you a Flavortown reviewer?
If you are a flavortown reviewer, you can DM me on Slack and I'll give you a instance as a SUPERADMIN (highest role).
You can choose to either use a pre-made admin account on an already existing testing instance, or i can setup a temporary new instance and you create your own SUPERADMIN account (since this account can only be created on the first login).
Or well... you can just host your own instance of Zipline V4, just make sure you put it on a https URL
Optimization
This section is for the flavortown "Optimization" sidequest
- Instead of rendering all items (such as images in the "Files" tab or "Home" tab (recent files)) or tables' contents at once, I used uses the Android's
LazyColumn/LazyRowwhich only renders the elements on screens and un-renders them when they're out of the screen.2 - I used R8 minimization, which removes all the unused code from the final APK and renames long functions such as
runDeleteTemporaryFilesJob()toa(), thus reducing the final APK bundle. 3 - I used XML drawables files instead of PNGs/JPGs, resulting in a smaller final APK size since XML drawables can be resized like SVGs instead of having different versions of the same PNG image for the different screen densities. 4
- When available from the Zipline API, i used query params such as
sortByandsortorderto sort,searchFieldandsearchQueryto search instead of filtering/sorting myself, thus saving memory, as it doesn't have to store in memory URLs or files that won't be displayed, improved performance as the filtering/searching is done on the server instead of the weaker mobile CPU. Examples:getFilesusessortByandsortOrderto sort,searchFieldandsearchQueryto search andfavoriteto filter for favorite files.getUrlsusessearchFieldandsearchQuery(at the time of writing, the API endpoint doesn't seem to support sort query parameters).
-
Please do not change the password ↩︎
-
Android's documentation for lazy list: https://developer.android.com/develop/ui/compose/lists#lazy ↩︎
-
Android's documentation for R8 optimization: https://developer.android.com/topic/performance/app-optimization/enable-app-optimization#overview ↩︎
-
Android's documentation for vector drawables: https://developer.android.com/develop/ui/views/graphics/vector-drawable-resources#key-points ↩︎

