Skip to content

Developer Guide ​

CRITICAL: Build Crashes

A self-built debug build can crash immediately on launch because the Aptabase analytics client is included in debug builds and throws when its API key is missing or invalid.

Workaround: Either provide a valid Aptabase key, or remove/disable the analytics modules for local development. See the commits in this branch for a ready-made patch.

Prerequisites ​

  • Android Studio: Latest stable version.
  • JDK: JDK 21 or higher (the project toolchain targets JVM 21).
  • Android SDK: Latest SDK tools and platforms.

Building from Source ​

  1. Clone: git clone https://github.com/LinkSheet/LinkSheet.git
  2. Open: Open the project in Android Studio and wait for Gradle sync.
  3. Run: Select a build variant and click Run.

Build Variants ​

LinkSheet uses product flavors and build types:

  • Flavors:
    • foss: Recommended for development. No proprietary services or telemetry.
    • pro: Includes Pro functionality. Requires API keys where applicable.
  • Build types:
    • debug: Development build with debugging enabled.
    • release: Minified release build.
    • nightly: Release build published under the fe.linksheet.nightly application id.
    • releaseDebug: A debuggable release build, useful for reproducing release-only issues.
    • migrate: Release build used for database/settings migrations.
    • benchmark: Release build for benchmarking.

To build via CLI:

bash
./gradlew assembleFossDebug

Project Layout ​

LinkSheet is highly modular. The main application module is app; shared code lives under lib/, feature implementations under features/, and third-party integration wrappers under integration/. See Project Structure for the full breakdown.

Nightly Builds ​

The project uses a nightly release model via GitHub Actions. Builds are released to the LinkSheet/nightly repository and can be installed with Obtainium.

License ​

LinkSheet is licensed under the LPL (LinkSheet Public License, based on MPL 2.0), excluding strings.xml and plural.xml files. All string resources are licensed under GPL-3.0.