This repository contains an android reader app for the German newspaper taz. The project regards the app as the primary outlet/user interface instead of displaying digital byproducts of producing a newspaper.
This repository is currently maintained by ctrl.alt.coop. We gratefully accept propositions and welcome discussions.
Consider the contribution guidelines.
Before starting the build process it is necessary to initialize the mupdf-android-viewer submodule:
git submodule update --init --recursive
Additionally mupdf needs to be published to the local maven repository. This step has to be repeated everytime the mupdf library is updated to a new version.
./scripts/publish-mupdf-to-maven-local.sh
With that the build process can be started.
The non-free variant includes firebase for push notification support. It also minifies sources and provides sentry mappings for efficient error reporting. It's distribution target is the Google Play Store and therefore requires additional files for a successful build that are not included in the repo. (Namely google credentials and sentry auth tokens to upload proguard mappings) Because of the missing sentry token all "release" and "non-free" builds will fail or won't function properly without those present.
The non-free app is published to the Google Play Store with the Gradle Play Publisher Plugin.
For internal development see [INTERNAL_DISTRIBUTION.md] for instructions to setup your development environment.
Anyone can produce builds for the free variant without minification enabled. The following flavor creates a free release for Die Tageszeitung app:
./gradlew :app:assembleFreeTazUnminifiedProductionRelease
Be sure that your android sdk path is set correctly, for example by placing a local.properties
file in the project root containing the following property:
sdk.dir=/home/me/Android/Sdk
Android Studio usually takes care of this if used.
Also be aware that this will produce an unsigned release. For signing during build please place a tazkeystore.properties
in project root providing information about the signing configuration:
keystorePath=keystore.jks
keyAlias=keyAlias
We have a release
branch where the tagged releases should happen.
To roll out the release at F-Droid we need to have a fastlane
folder in our root.
So for LMd releases rename the fastlane_lmd
to fastlane
. For taz releases fastlane_taz
to fastlane
accordingly.
Our gradle build scripts automatically create versions based on the git tag. To reduce an integer we follow a strict pattern for release tags, that are a subset of semver: MAJOR.MINOR.PATCH[-PRE-RELEASE-TYPE].[PRE-RELEASE-VERSION]. Valid prerelease types are 'alpha', 'beta', 'rc' For example:
git tag -a 1.1.0 # ✓
git tag -a 1.1.1-alpha.1 # ✓
git tag -a 1.2.0 # ✓
The build script will possibly throw an error or generate garbage versions if the last tag is wrong like those bad examples:
git tag -a 1.2 # ✗
git tag -a 1.1.1-alpha-1 # ✗
git tag -a testtag # ✗
The LMd Release release process follows the taz, but it is only triggered for tags prefixed with lmd-
, such as:
git tag -a lmd-1.1.0 # ✓
git tag -a lmd-1.1.1-alpha.1 # ✓