Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,39 @@ Modern vision of the mobile application for the Open edX platform from Raccoon G

6. Click the **Run** button.

## Signing & CI/CD

### Local Development (Debug/Develop builds)

- The app uses the default debug keystore for local development.
- No extra configuration is needed for debug builds. You may set up a custom debug keystore via Android Studio preferences if desired.

### Release Signing (Production builds & CI/CD)

- For release builds, **set signing credentials as environment variables** in your CI/CD system or your local environment:
```
ANDROID_STORE_FILE_PATH=</absolute/path/to/your_release.jks>
ANDROID_STORE_PASSWORD=<your_keystore_password>
ANDROID_KEY_ALIAS=<your_key_alias>
ANDROID_KEY_PASSWORD=<your_key_password>
```
- Do NOT commit any keystore files or passwords to the repository.
- The app/build.gradle is already set up to use these environment variables.

#### Example (Local release build):
```sh
export ANDROID_STORE_FILE_PATH=~/keystores/release.jks
export ANDROID_STORE_PASSWORD=yourpassword
export ANDROID_KEY_ALIAS=youralias
export ANDROID_KEY_PASSWORD=yourkeypassword
./gradlew assembleRelease
```

#### In CI/CD:
- Make sure these env vars are set in your CI system's secure variables/secrets settings.
- Artifact signing will pick them up automatically in the build pipeline.


## Translations

### Getting Translations for the App
Expand Down
10 changes: 10 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

signingConfigs {
release {
// Use environment variables for sensitive data
storeFile file(System.getenv("ANDROID_STORE_FILE_PATH") ?: "placeholder.jks")
storePassword System.getenv("ANDROID_STORE_PASSWORD")
keyAlias System.getenv("ANDROID_KEY_ALIAS")
keyPassword System.getenv("ANDROID_KEY_PASSWORD")
}
}

flavorDimensions += "env"
productFlavors {
Expand Down Expand Up @@ -85,6 +94,7 @@ android {
mappingFileUploadEnabled false
}
}
signingConfig signingConfigs.release
}
}
compileOptions {
Expand Down
4 changes: 4 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -182,3 +182,7 @@
-dontwarn net.jcip.annotations.GuardedBy
-dontwarn net.jcip.annotations.Immutable
-dontwarn net.jcip.annotations.ThreadSafe

# XChaCha20Poly1305 is an optional dependency of nimbus-jose-jwt (via MSAL).
# It's only needed for XChaCha20-Poly1305 encryption which this app doesn't use.
-dontwarn com.google.crypto.tink.subtle.XChaCha20Poly1305
4 changes: 4 additions & 0 deletions auth/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ dependencies {
exclude group: 'io.opentelemetry', module: 'opentelemetry-bom'
}

// Required by microsoft identity common4j; declared as runtime-scoped in its POM
// but not resolved transitively by Gradle in Android projects.
implementation "com.github.stephenc.jcip:jcip-annotations:1.0-1"

// OpenTelemetry
implementation("io.opentelemetry:opentelemetry-api:$opentelemetry_version")
implementation("io.opentelemetry:opentelemetry-context:$opentelemetry_version")
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
Expand Down
Loading