0
0
mirror of https://github.com/schwabe/ics-openvpn.git synced 2024-09-20 03:52:27 +02:00
openvpn-android/main/build.gradle.kts

265 lines
8.2 KiB
Plaintext
Raw Normal View History

import com.android.build.gradle.api.ApplicationVariant
2019-02-03 17:49:20 +01:00
/*
* Copyright (c) 2012-2016 Arne Schwabe
* Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
*/
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
2019-08-02 12:50:57 +02:00
id("checkstyle")
2019-02-03 17:49:20 +01:00
}
android {
2023-04-17 14:56:49 +02:00
buildFeatures {
aidl = true
buildConfig = true
2023-04-17 14:56:49 +02:00
}
namespace = "de.blinkt.openvpn"
compileSdk = 35
//compileSdkPreview = "UpsideDownCake"
2021-09-27 14:55:37 +02:00
// Also update runcoverity.sh
2024-08-09 13:54:35 +02:00
ndkVersion = "27.0.12077973"
2019-02-03 17:49:20 +01:00
defaultConfig {
minSdk = 21
targetSdk = 35
//targetSdkPreview = "UpsideDownCake"
2024-08-09 17:13:41 +02:00
versionCode = 208
versionName = "0.7.53"
2019-02-03 17:49:20 +01:00
externalNativeBuild {
cmake {
2023-10-11 12:31:10 +02:00
//arguments+= "-DCMAKE_VERBOSE_MAKEFILE=1"
2019-02-03 17:49:20 +01:00
}
}
}
2023-08-26 18:23:02 +02:00
//testOptions.unitTests.isIncludeAndroidResources = true
2020-05-19 00:22:57 +02:00
2019-02-03 17:49:20 +01:00
externalNativeBuild {
cmake {
2021-06-15 16:41:56 +02:00
path = File("${projectDir}/src/main/cpp/CMakeLists.txt")
2019-02-03 17:49:20 +01:00
}
}
sourceSets {
getByName("main") {
assets.srcDirs("src/main/assets", "build/ovpnassets")
2019-02-03 17:49:20 +01:00
}
2019-08-02 12:50:57 +02:00
create("ui") {
}
2019-08-02 12:50:57 +02:00
create("skeleton") {
2019-02-03 17:49:20 +01:00
}
getByName("debug") {
}
getByName("release") {
}
}
signingConfigs {
create("release") {
// ~/.gradle/gradle.properties
val keystoreFile: String? by project
storeFile = keystoreFile?.let { file(it) }
val keystorePassword: String? by project
storePassword = keystorePassword
val keystoreAliasPassword: String? by project
keyPassword = keystoreAliasPassword
val keystoreAlias: String? by project
keyAlias = keystoreAlias
2021-10-03 02:29:12 +02:00
enableV1Signing = true
enableV2Signing = true
}
create("releaseOvpn2") {
// ~/.gradle/gradle.properties
val keystoreO2File: String? by project
storeFile = keystoreO2File?.let { file(it) }
val keystoreO2Password: String? by project
storePassword = keystoreO2Password
val keystoreO2AliasPassword: String? by project
keyPassword = keystoreO2AliasPassword
val keystoreO2Alias: String? by project
keyAlias = keystoreO2Alias
enableV1Signing = true
enableV2Signing = true
}
2019-02-03 17:49:20 +01:00
}
2021-10-03 02:29:12 +02:00
lint {
2022-02-04 23:34:29 +01:00
enable += setOf("BackButton", "EasterEgg", "StopShip", "IconExpectedSize", "GradleDynamicVersion", "NewerVersionAvailable")
checkOnly += setOf("ImpliedQuantity", "MissingQuantity")
disable += setOf("MissingTranslation", "UnsafeNativeCodeLocation")
2019-02-03 17:49:20 +01:00
}
flavorDimensions += listOf("implementation", "ovpnimpl")
2019-02-03 17:49:20 +01:00
productFlavors {
2019-08-02 12:50:57 +02:00
create("ui") {
2021-09-27 14:55:37 +02:00
dimension = "implementation"
2019-08-02 12:50:57 +02:00
}
2019-08-02 12:50:57 +02:00
create("skeleton") {
2021-09-27 14:55:37 +02:00
dimension = "implementation"
}
create("ovpn23")
{
dimension = "ovpnimpl"
buildConfigField("boolean", "openvpn3", "true")
}
create("ovpn2")
{
dimension = "ovpnimpl"
versionNameSuffix = "-o2"
2019-08-02 12:50:57 +02:00
buildConfigField("boolean", "openvpn3", "false")
2019-02-03 17:49:20 +01:00
}
}
buildTypes {
getByName("release") {
if (project.hasProperty("icsopenvpnDebugSign")) {
logger.warn("property icsopenvpnDebugSign set, using debug signing for release")
signingConfig = android.signingConfigs.getByName("debug")
} else {
productFlavors["ovpn23"].signingConfig = signingConfigs.getByName("release")
productFlavors["ovpn2"].signingConfig = signingConfigs.getByName("releaseOvpn2")
}
}
}
2019-02-03 17:49:20 +01:00
compileOptions {
2023-06-06 12:56:27 +02:00
targetCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_17
2019-02-03 17:49:20 +01:00
}
2019-08-02 12:50:57 +02:00
kotlinOptions {
jvmTarget = "17"
}
2019-08-02 12:50:57 +02:00
splits {
abi {
isEnable = true
2019-08-02 12:50:57 +02:00
reset()
include("x86", "x86_64", "armeabi-v7a", "arm64-v8a")
isUniversalApk = true
2019-08-02 12:50:57 +02:00
}
}
packaging {
jniLibs {
useLegacyPackaging = true
}
}
2023-08-02 12:24:08 +02:00
bundle {
codeTransparency {
signing {
val keystoreTPFile: String? by project
storeFile = keystoreTPFile?.let { file(it) }
val keystoreTPPassword: String? by project
storePassword = keystoreTPPassword
val keystoreTPAliasPassword: String? by project
keyPassword = keystoreTPAliasPassword
val keystoreTPAlias: String? by project
keyAlias = keystoreTPAlias
if (keystoreTPFile?.isEmpty() ?: true)
2023-08-02 12:24:08 +02:00
println("keystoreTPFile not set, disabling transparency signing")
if (keystoreTPPassword?.isEmpty() ?: true)
2023-08-02 12:24:08 +02:00
println("keystoreTPPassword not set, disabling transparency signing")
if (keystoreTPAliasPassword?.isEmpty() ?: true)
2023-08-02 12:24:08 +02:00
println("keystoreTPAliasPassword not set, disabling transparency signing")
if (keystoreTPAlias?.isEmpty() ?: true)
2023-08-02 12:24:08 +02:00
println("keyAlias not set, disabling transparency signing")
}
}
}
}
var swigcmd = "swig"
2022-03-16 11:31:02 +01:00
// Workaround for macOS(arm64) and macOS(intel) since it otherwise does not find swig and
// I cannot get the Exec task to respect the PATH environment :(
if (file("/opt/homebrew/bin/swig").exists())
swigcmd = "/opt/homebrew/bin/swig"
else if (file("/usr/local/bin/swig").exists())
swigcmd = "/usr/local/bin/swig"
fun registerGenTask(variantName: String, variantDirName: String): File {
val baseDir = File(buildDir, "generated/source/ovpn3swig/${variantDirName}")
val genDir = File(baseDir, "net/openvpn/ovpn3")
tasks.register<Exec>("generateOpenVPN3Swig${variantName}")
{
doFirst {
mkdir(genDir)
}
commandLine(listOf(swigcmd, "-outdir", genDir, "-outcurrentdir", "-c++", "-java", "-package", "net.openvpn.ovpn3",
"-Isrc/main/cpp/openvpn3/client", "-Isrc/main/cpp/openvpn3/",
"-DOPENVPN_PLATFORM_ANDROID",
"-o", "${genDir}/ovpncli_wrap.cxx", "-oh", "${genDir}/ovpncli_wrap.h",
"src/main/cpp/openvpn3/client/ovpncli.i"))
inputs.files( "src/main/cpp/openvpn3/client/ovpncli.i")
outputs.dir( genDir)
}
return baseDir
2019-02-03 17:49:20 +01:00
}
android.applicationVariants.all(object : Action<ApplicationVariant> {
override fun execute(variant: ApplicationVariant) {
val sourceDir = registerGenTask(variant.name, variant.baseName.replace("-", "/"))
val task = tasks.named("generateOpenVPN3Swig${variant.name}").get()
2020-07-31 13:05:44 +02:00
variant.registerJavaGeneratingTask(task, sourceDir)
}
})
dependencies {
2020-04-23 16:52:58 +02:00
// https://maven.google.com/web/index.html
implementation(libs.androidx.annotation)
implementation(libs.androidx.core.ktx)
2021-10-04 14:26:00 +02:00
uiImplementation(libs.android.view.material)
uiImplementation(libs.androidx.activity)
uiImplementation(libs.androidx.activity.ktx)
uiImplementation(libs.androidx.appcompat)
uiImplementation(libs.androidx.cardview)
2024-07-26 15:26:17 +02:00
uiImplementation(libs.androidx.viewpager2)
uiImplementation(libs.androidx.constraintlayout)
uiImplementation(libs.androidx.core.ktx)
uiImplementation(libs.androidx.fragment.ktx)
uiImplementation(libs.androidx.lifecycle.runtime.ktx)
uiImplementation(libs.androidx.lifecycle.viewmodel.ktx)
uiImplementation(libs.androidx.preference.ktx)
uiImplementation(libs.androidx.recyclerview)
uiImplementation(libs.androidx.security.crypto)
uiImplementation(libs.androidx.webkit)
uiImplementation(libs.kotlin)
uiImplementation(libs.mpandroidchart)
uiImplementation(libs.square.okhttp)
testImplementation(libs.androidx.test.core)
testImplementation(libs.junit)
testImplementation(libs.kotlin)
testImplementation(libs.mockito.core)
testImplementation(libs.robolectric)
}
fun DependencyHandler.uiImplementation(dependencyNotation: Any): Dependency? =
add("uiImplementation", dependencyNotation)