This is an Android application project.
Before you begin, ensure you have the following installed:
To compile the application, use the provided Gradle wrapper. Open a terminal in the project root directory and run:
gradlew.bat assembleDebug
./gradlew assembleDebug
This command will compile the project and generate a debug APK located at:
app/build/outputs/apk/debug/app-debug.apk
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:
gradlew.bat installDebug
./gradlew installDebug
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
To generate signed APKs using GitHub Actions, you need to set up a keystore and configure GitHub Secrets.
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!
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
Go to your repository settings -> Secrets and variables -> Actions, and add the following secrets:
APP_KEYSTORE_BASE64: The content of the my-release-key.jks.base64 file.KEYSTORE_PASSWORD: The password for the keystore store.KEY_ALIAS: The alias name (e.g., my-key-alias).KEY_PASSWORD: The password for the key (usually the same as the store password).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.
com.andrewhowden.h10s.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).