h10s

This is an Android application project.

Download the latest release

Prerequisites

Before you begin, ensure you have the following installed:

Compilation

To compile the application, use the provided Gradle wrapper. Open a terminal in the project root directory and run:

Windows

gradlew.bat assembleDebug

Linux / macOS

./gradlew assembleDebug

This command will compile the project and generate a debug APK located at: app/build/outputs/apk/debug/app-debug.apk

Installation on Android

You can install the application on an Android device or emulator using one of the following methods:

Ensure your device is connected via USB and USB Debugging is enabled (or your emulator is running). Run:

Windows

gradlew.bat installDebug

Linux / macOS

./gradlew installDebug

Method 2: Using ADB

If you have the Android Debug Bridge (ADB) installed and the APK has already been built:

adb install app/build/outputs/apk/debug/app-debug.apk

Signing & Release

To generate signed APKs using GitHub Actions, you need to set up a keystore and configure GitHub Secrets.

1. Generate a Keystore

If you don’t have a keystore, you can generate one using keytool (included with the JDK):

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias

Remember the password and alias you set!

2. Encode the Keystore

GitHub Secrets cannot store binary files directly. You need to encode the keystore file to Base64:

Linux / macOS:

base64 -w 0 my-release-key.jks > my-release-key.jks.base64

(Note: On macOS, use base64 -i my-release-key.jks -o my-release-key.jks.base64)

Windows (PowerShell):

[Convert]::ToBase64String([IO.File]::ReadAllBytes("my-release-key.jks")) | Out-File -Encoding ascii my-release-key.jks.base64

3. Configure GitHub Secrets

Go to your repository settings -> Secrets and variables -> Actions, and add the following secrets:

Google Drive Configuration

To enable the Google Drive upload feature (fixing “Error 10” during sign-in), you must configure a Google Cloud project with the correct SHA-1 fingerprint for your application.

1. Create a Google Cloud Project

  1. Go to the Google Cloud Console.
  2. Create a new project.
  3. Navigate to APIs & Services > Library.
  4. Search for “Google Drive API” and enable it.
  1. Go to APIs & Services > OAuth consent screen.
  2. Select External (or Internal if you are a Google Workspace user) and click Create.
  3. Fill in the required fields (App name, User support email, Developer contact information).
  4. Click Save and Continue.
  5. (Optional) Add test users if the app is in “Testing” mode.

3. Create OAuth Client ID

  1. Go to APIs & Services > Credentials.
  2. Click Create Credentials and select OAuth client ID.
  3. Select Android as the Application type.
  4. Package name: Enter com.andrewhowden.h10s.
  5. SHA-1 Certificate Fingerprint: You need to add fingerprints for both your Debug and Release keystores.

Finding the SHA-1 Fingerprint

For Debug Builds: Run the following command in your terminal:

./gradlew signingReport

Look for the SHA1 entry under Variant: debug, Config: debug.

For Release Builds: When you build the release APK using Gradle, the build output will automatically print the required SHA-1 fingerprint if your keystore is correctly configured.

Alternatively, you can manually extract it using keytool:

keytool -list -v -keystore my-release-key.jks -alias my-key-alias

(Enter your keystore password when prompted).

  1. Click Create.