2019-12-20 16:45:12 +01:00
|
|
|
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 {
|
2019-08-02 12:50:57 +02:00
|
|
|
id("com.android.application")
|
|
|
|
id("checkstyle")
|
2019-12-06 22:14:56 +01:00
|
|
|
kotlin("android")
|
|
|
|
kotlin("android.extensions")
|
2019-02-03 17:49:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
android {
|
2019-09-03 18:17:51 +02:00
|
|
|
compileSdkVersion(29)
|
2019-02-03 17:49:20 +01:00
|
|
|
|
|
|
|
defaultConfig {
|
|
|
|
minSdkVersion(14)
|
2019-09-03 18:17:51 +02:00
|
|
|
targetSdkVersion(29) //'Q'.toInt()
|
2020-05-06 18:22:30 +02:00
|
|
|
versionCode = 169
|
|
|
|
versionName = "0.7.16"
|
2019-02-03 17:49:20 +01:00
|
|
|
|
|
|
|
externalNativeBuild {
|
|
|
|
cmake {
|
|
|
|
//arguments = listOf("-DANDROID_TOOLCHAIN=clang",
|
|
|
|
// "-DANDROID_STL=c++_static")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-05-19 00:22:57 +02:00
|
|
|
testOptions.unitTests.isIncludeAndroidResources = true
|
|
|
|
|
2020-02-25 13:14:04 +01:00
|
|
|
|
|
|
|
|
2019-02-03 17:49:20 +01:00
|
|
|
externalNativeBuild {
|
|
|
|
cmake {
|
|
|
|
setPath(File("${projectDir}/src/main/cpp/CMakeLists.txt"))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sourceSets {
|
|
|
|
getByName("main") {
|
|
|
|
assets.srcDirs("src/main/assets", "build/ovpnassets")
|
2019-12-20 16:45:12 +01:00
|
|
|
|
2019-02-03 17:49:20 +01:00
|
|
|
}
|
|
|
|
|
2019-08-02 12:50:57 +02:00
|
|
|
create("ui") {
|
|
|
|
}
|
2019-12-20 16:45:12 +01:00
|
|
|
|
2019-08-02 12:50:57 +02:00
|
|
|
create("skeleton") {
|
2019-02-03 17:49:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
getByName("debug") {
|
|
|
|
}
|
|
|
|
|
|
|
|
getByName("release") {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
signingConfigs {
|
2019-12-06 20:42:35 +01:00
|
|
|
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
|
|
|
|
}
|
2019-12-11 13:45:44 +01:00
|
|
|
|
2019-02-03 17:49:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
lintOptions {
|
|
|
|
enable("BackButton", "EasterEgg", "StopShip", "IconExpectedSize", "GradleDynamicVersion", "NewerVersionAvailable")
|
|
|
|
warning("ImpliedQuantity", "MissingQuantity")
|
|
|
|
disable("MissingTranslation", "UnsafeNativeCodeLocation")
|
|
|
|
}
|
|
|
|
|
|
|
|
buildTypes {
|
|
|
|
getByName("release") {
|
2019-12-11 13:45:44 +01:00
|
|
|
if (project.hasProperty("icsopenvpnDebugSign")) {
|
|
|
|
logger.warn("property icsopenvpnDebugSign set, using debug signing for release")
|
|
|
|
signingConfig = android.signingConfigs.getByName("debug")
|
|
|
|
} else {
|
|
|
|
signingConfig = signingConfigs.getByName("release")
|
|
|
|
}
|
2019-02-03 17:49:20 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
flavorDimensions("implementation")
|
|
|
|
|
|
|
|
productFlavors {
|
2019-08-02 12:50:57 +02:00
|
|
|
create("ui") {
|
2019-02-03 17:49:20 +01:00
|
|
|
setDimension("implementation")
|
2019-08-02 12:50:57 +02:00
|
|
|
buildConfigField("boolean", "openvpn3", "true")
|
|
|
|
}
|
|
|
|
create("skeleton") {
|
2019-02-03 17:49:20 +01:00
|
|
|
setDimension("implementation")
|
2019-08-02 12:50:57 +02:00
|
|
|
buildConfigField("boolean", "openvpn3", "false")
|
2019-02-03 17:49:20 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
compileOptions {
|
|
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
|
|
}
|
2019-08-02 12:50:57 +02:00
|
|
|
|
|
|
|
splits {
|
|
|
|
abi {
|
2019-12-06 22:14:56 +01:00
|
|
|
isEnable = true
|
2019-08-02 12:50:57 +02:00
|
|
|
reset()
|
|
|
|
include("x86", "x86_64", "armeabi-v7a", "arm64-v8a")
|
2019-12-06 22:14:56 +01:00
|
|
|
isUniversalApk = true
|
2019-08-02 12:50:57 +02:00
|
|
|
}
|
|
|
|
}
|
2019-12-20 16:45:12 +01:00
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var swigcmd = "swig"
|
|
|
|
// Workaround for Mac OS X since it otherwise does not find swig and I cannot get
|
|
|
|
// the Exec task to respect the PATH environment :(
|
|
|
|
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/",
|
|
|
|
"-o", "${genDir}/ovpncli_wrap.cxx", "-oh", "${genDir}/ovpncli_wrap.h",
|
|
|
|
"src/main/cpp/openvpn3/javacli/ovpncli.i"))
|
|
|
|
}
|
|
|
|
return baseDir
|
2019-02-03 17:49:20 +01:00
|
|
|
}
|
|
|
|
|
2019-12-20 16:45:12 +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()
|
|
|
|
|
|
|
|
variant.registerJavaGeneratingTask(task, sourceDir)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
|
2019-12-06 14:32:48 +01:00
|
|
|
dependencies {
|
2020-04-23 16:52:58 +02:00
|
|
|
// https://maven.google.com/web/index.html
|
2020-03-23 10:06:38 +01:00
|
|
|
// https://developer.android.com/jetpack/androidx/releases/core
|
2020-04-23 16:52:58 +02:00
|
|
|
val preferenceVersion = "1.1.1"
|
2020-03-23 10:06:38 +01:00
|
|
|
val coreVersion = "1.2.0"
|
2020-04-23 16:52:58 +02:00
|
|
|
val materialVersion = "1.1.0"
|
|
|
|
val fragment_version = "1.2.4"
|
2020-03-23 10:06:38 +01:00
|
|
|
|
2019-12-06 14:32:48 +01:00
|
|
|
|
|
|
|
implementation("androidx.annotation:annotation:1.1.0")
|
2020-03-23 10:06:38 +01:00
|
|
|
implementation("androidx.core:core:$coreVersion")
|
2019-12-06 14:32:48 +01:00
|
|
|
|
|
|
|
// Is there a nicer way to do this?
|
|
|
|
dependencies.add("uiImplementation", "androidx.constraintlayout:constraintlayout:1.1.3")
|
2020-03-23 10:06:38 +01:00
|
|
|
dependencies.add("uiImplementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70")
|
2019-12-06 14:32:48 +01:00
|
|
|
dependencies.add("uiImplementation", "androidx.cardview:cardview:1.0.0")
|
|
|
|
dependencies.add("uiImplementation", "androidx.recyclerview:recyclerview:1.0.0")
|
|
|
|
dependencies.add("uiImplementation", "androidx.appcompat:appcompat:1.1.0")
|
|
|
|
dependencies.add("uiImplementation", "com.github.PhilJay:MPAndroidChart:v3.1.0")
|
|
|
|
dependencies.add("uiImplementation", "com.squareup.okhttp3:okhttp:3.2.0")
|
|
|
|
dependencies.add("uiImplementation", "androidx.core:core:$coreVersion")
|
|
|
|
dependencies.add("uiImplementation", "androidx.core:core-ktx:$coreVersion")
|
|
|
|
dependencies.add("uiImplementation", "org.jetbrains.anko:anko-commons:0.10.4")
|
2020-03-23 10:06:38 +01:00
|
|
|
dependencies.add("uiImplementation", "androidx.fragment:fragment-ktx:$fragment_version")
|
2019-12-06 14:32:48 +01:00
|
|
|
dependencies.add("uiImplementation", "androidx.preference:preference:$preferenceVersion")
|
|
|
|
dependencies.add("uiImplementation", "androidx.preference:preference-ktx:$preferenceVersion")
|
|
|
|
dependencies.add("uiImplementation", "com.google.android.material:material:$materialVersion")
|
2020-05-18 23:47:22 +02:00
|
|
|
dependencies.add("uiImplementation", "androidx.webkit:webkit:1.2.0")
|
2019-12-06 14:32:48 +01:00
|
|
|
|
2020-04-24 09:02:53 +02:00
|
|
|
testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72")
|
2020-03-23 10:06:38 +01:00
|
|
|
testImplementation("junit:junit:4.13")
|
2020-04-24 09:02:53 +02:00
|
|
|
testImplementation("org.mockito:mockito-core:3.3.3")
|
2019-12-06 14:32:48 +01:00
|
|
|
testImplementation("org.robolectric:robolectric:4.3.1")
|
2020-05-19 00:22:57 +02:00
|
|
|
testImplementation("androidx.test:core:1.2.0")
|
2019-12-06 14:32:48 +01:00
|
|
|
}
|