mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
222 lines
7.3 KiB
Kotlin
222 lines
7.3 KiB
Kotlin
plugins {
|
|
id("com.android.application")
|
|
id("org.mozilla.rust-android-gradle.rust-android")
|
|
id("com.google.dagger.hilt.android")
|
|
id("com.google.gms.google-services")
|
|
id("com.google.firebase.crashlytics")
|
|
id("com.diffplug.spotless") version "6.23.3"
|
|
id("com.google.firebase.appdistribution")
|
|
id("kotlin-parcelize")
|
|
id("androidx.navigation.safeargs")
|
|
|
|
kotlin("android")
|
|
kotlin("kapt")
|
|
}
|
|
|
|
spotless {
|
|
format("misc") {
|
|
target("*.gradle", "*.md", ".gitignore")
|
|
trimTrailingWhitespace()
|
|
indentWithSpaces()
|
|
endWithNewline()
|
|
}
|
|
kotlin {
|
|
ktlint()
|
|
target("**/*.kt")
|
|
targetExclude("**/generated/*")
|
|
licenseHeader("/* Licensed under Apache 2.0 (C) \$YEAR Firezone, Inc. */", "^(package |import |@file)")
|
|
}
|
|
kotlinGradle {
|
|
ktlint()
|
|
target("**/*.gradle.kts")
|
|
targetExclude("**/generated/*")
|
|
}
|
|
}
|
|
|
|
apply(plugin = "org.mozilla.rust-android-gradle.rust-android")
|
|
|
|
android {
|
|
buildFeatures {
|
|
buildConfig = true
|
|
}
|
|
|
|
namespace = "dev.firezone.android"
|
|
compileSdk = 34
|
|
ndkVersion = "25.2.9519653"
|
|
|
|
defaultConfig {
|
|
applicationId = "dev.firezone.android"
|
|
minSdk = 30
|
|
targetSdk = 33
|
|
versionCode = (System.currentTimeMillis() / 1000 / 10).toInt()
|
|
// mark:automatic-version
|
|
versionName = "1.0.0"
|
|
multiDexEnabled = true
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
}
|
|
|
|
signingConfigs {
|
|
create("release") {
|
|
// Find this in the Engineering 1Password vault
|
|
storeFile = file(System.getenv("KEYSTORE_PATH") ?: "keystore.jks")
|
|
keyAlias = "upload"
|
|
storePassword = System.getenv("KEYSTORE_PASSWORD") ?: ""
|
|
keyPassword = System.getenv("KEYSTORE_KEY_PASSWORD") ?: ""
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
// Debug Config
|
|
getByName("debug") {
|
|
isDebuggable = true
|
|
resValue("string", "app_name", "\"Firezone (Dev)\"")
|
|
|
|
buildConfigField("String", "AUTH_BASE_URL", "\"https://app.firez.one\"")
|
|
buildConfigField("String", "API_URL", "\"wss://api.firez.one\"")
|
|
buildConfigField(
|
|
"String",
|
|
"LOG_FILTER",
|
|
"\"connlib_client_android=debug,firezone_tunnel=trace,connlib_shared=debug,connlib_client_shared=debug,warn\"",
|
|
)
|
|
}
|
|
|
|
// Release Config
|
|
getByName("release") {
|
|
signingConfig = signingConfigs.getByName("release")
|
|
|
|
// Enables code shrinking, obfuscation, and optimization for only
|
|
// your project's release build type. Make sure to use a build
|
|
// variant with `isDebuggable=false`.
|
|
isMinifyEnabled = true
|
|
|
|
// Enables resource shrinking, which is performed by the
|
|
// Android Gradle plugin.
|
|
isShrinkResources = true
|
|
|
|
// Includes the default ProGuard rules files that are packaged with
|
|
// the Android Gradle plugin. To learn more, go to the section about
|
|
// R8 configuration files.
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
|
"proguard-rules.pro",
|
|
)
|
|
isDebuggable = false
|
|
|
|
resValue("string", "app_name", "\"Firezone\"")
|
|
|
|
buildConfigField("String", "AUTH_BASE_URL", "\"https://app.firezone.dev\"")
|
|
buildConfigField("String", "API_URL", "\"wss://api.firezone.dev\"")
|
|
buildConfigField(
|
|
"String",
|
|
"LOG_FILTER",
|
|
"\"connlib_client_android=info,firezone_tunnel=trace,connlib_shared=info,connlib_client_shared=info,webrtc=error,warn\"",
|
|
)
|
|
firebaseAppDistribution {
|
|
serviceCredentialsFile = System.getenv("FIREBASE_CREDENTIALS_PATH")
|
|
artifactType = "AAB"
|
|
releaseNotes = "https://github.com/firezone/firezone/releases"
|
|
groups = "firezone-engineering"
|
|
artifactPath = "app/build/outputs/bundle/release/app-release.aab"
|
|
}
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = "17"
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding = true
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
val coreVersion = "1.12.0"
|
|
val navVersion = "2.7.4"
|
|
|
|
// AndroidX
|
|
implementation("androidx.core:core-ktx:$coreVersion")
|
|
implementation("androidx.appcompat:appcompat:1.6.1")
|
|
implementation("androidx.preference:preference-ktx:1.2.0")
|
|
|
|
// Material
|
|
implementation("com.google.android.material:material:1.8.0")
|
|
|
|
// Lifecycle
|
|
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
|
|
implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
|
|
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
|
|
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1")
|
|
|
|
// Navigation
|
|
implementation("androidx.navigation:navigation-fragment-ktx:$navVersion")
|
|
implementation("androidx.navigation:navigation-ui-ktx:$navVersion")
|
|
|
|
// Safe Args
|
|
//
|
|
|
|
// Hilt
|
|
implementation("com.google.dagger:hilt-android:2.50")
|
|
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
|
|
implementation("androidx.core:core-ktx:$coreVersion")
|
|
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
|
|
kapt("androidx.hilt:hilt-compiler:1.0.0")
|
|
kapt("com.google.dagger:hilt-android-compiler:2.50")
|
|
|
|
// Retrofit 2
|
|
implementation("com.squareup.retrofit2:retrofit:2.9.0")
|
|
implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
|
|
|
|
// OkHttp
|
|
implementation("com.squareup.okhttp3:okhttp:4.12.0")
|
|
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
|
|
|
|
// Moshi
|
|
implementation("com.squareup.moshi:moshi-kotlin:1.15.0")
|
|
implementation("com.squareup.moshi:moshi:1.15.0")
|
|
|
|
// Gson
|
|
implementation("com.google.code.gson:gson:2.10.1")
|
|
|
|
// Security
|
|
implementation("androidx.security:security-crypto:1.1.0-alpha05")
|
|
|
|
// JUnit
|
|
testImplementation("junit:junit:4.13.2")
|
|
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
|
implementation("androidx.browser:browser:1.5.0")
|
|
|
|
// Import the BoM for the Firebase platform
|
|
implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
|
|
|
|
// Add the dependencies for the Crashlytics and Analytics libraries
|
|
// When using the BoM, you don't specify versions in Firebase library dependencies
|
|
implementation("com.google.firebase:firebase-crashlytics-ktx")
|
|
implementation("com.google.firebase:firebase-analytics-ktx")
|
|
implementation("com.google.firebase:firebase-installations-ktx")
|
|
}
|
|
|
|
cargo {
|
|
if (gradle.startParameter.taskNames.any { it.lowercase().contains("release") }) {
|
|
profile = "release"
|
|
} else {
|
|
profile = "debug"
|
|
}
|
|
prebuiltToolchains = true
|
|
verbose = true
|
|
module = "../../../rust/connlib/clients/android"
|
|
libname = "connlib"
|
|
targets = listOf("arm", "arm64", "x86_64", "x86")
|
|
targetDirectory = "../../../rust/target"
|
|
}
|
|
|
|
tasks.matching { it.name.matches(Regex("merge.*JniLibFolders")) }.configureEach {
|
|
inputs.dir(File(buildDir, "rustJniLibs/android"))
|
|
dependsOn("cargoBuild")
|
|
}
|