# TEMPLATE ONLY — copy to `keystore.properties` and fill in. NEVER commit the copy. # # cp keystore.properties.example keystore.properties # # BEFORE you create the real file, make sure `keystore.properties` is listed in # android/.gitignore. If it is not there yet, use `local.properties` instead — that # path is ALREADY gitignored and :app reads the same four keys from it. # # Resolution order in app/build.gradle.kts (first non-blank wins): # 1. android/keystore.properties # 2. android/local.properties # 3. WEBTERM_RELEASE_STORE_FILE / _STORE_PASSWORD / _KEY_ALIAS / _KEY_PASSWORD (CI) # # With none of them set, debug + benchmark builds work normally and # `:app:assembleRelease` FAILS at packaging with instructions — it never emits an # unsigned APK. # # Generate a keystore OUTSIDE the repository: # keytool -genkeypair -v -keystore ~/.webterm/webterm-release.jks \ # -alias webterm -keyalg RSA -keysize 4096 -validity 10000 # # Then read its SHA-256 (needed for the App Links assetlinks.json — plan §8): # keytool -list -v -keystore ~/.webterm/webterm-release.jks -alias webterm | grep SHA256 # Path to the keystore. Absolute, or relative to the `android/` directory. # Keep the keystore itself out of the repo (android/.gitignore blocks *.jks / *.keystore, # but out-of-tree is the safer habit — a lost signing key cannot be recovered). webterm.release.storeFile=/absolute/path/to/webterm-release.jks webterm.release.storePassword=CHANGE_ME webterm.release.keyAlias=webterm webterm.release.keyPassword=CHANGE_ME