/* * Copyright (c) 2012-2016 Arne Schwabe * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt */ import com.android.builder.model.ProductFlavor apply plugin: 'com.android.application' apply plugin: 'checkstyle' checkstyle { showViolations true } repositories { jcenter() maven { url "https://jitpack.io" } maven { url 'https://maven.google.com' } } dependencies { implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:support-annotations:27.0.2' implementation 'com.android.support:cardview-v7:27.0.2' implementation 'com.android.support:recyclerview-v7:27.0.2' // compile 'ch.acra:acra:4.5.0' implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2' testImplementation 'junit:junit:4.12' } def openvpn3SwigFiles = new File(buildDir, "generated/source/ovpn3swig/ovpn3") task ("generateOpenVPN3Swig" ,type:Exec) { doFirst { mkdir openvpn3SwigFiles } commandLine "swig", "-outdir", openvpn3SwigFiles, "-outcurrentdir", "-c++", "-java", "-package", "net.openvpn.ovpn3", "-Isrc/main/cpp/openvpn3/client", "-Isrc/main/cpp/openvpn3/", "-o", "${openvpn3SwigFiles}/ovpncli_wrap.cxx", "-oh", "${openvpn3SwigFiles}/ovpncli_wrap.h", "src/main/cpp/openvpn3/javacli/ovpncli.i" } android { compileSdkVersion 27 buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 14 targetSdkVersion 27 versionCode = 156 versionName = "0.7.3" externalNativeBuild { cmake { arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static' //abiFilters "arm64-v8a" } } } externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" } } sourceSets { main { assets.srcDirs = ['src/main/assets', 'build/ovpnassets'] } normal { java.srcDirs =["src/ovpn3/java/", openvpn3SwigFiles] } noovpn3 { } debug { } release { } } signingConfigs { release } lintOptions { enable 'BackButton', 'EasterEgg', 'StopShip', 'IconExpectedSize', 'GradleDynamicVersion', 'NewerVersionAvailable' warning 'ImpliedQuantity', 'MissingQuantity' disable 'MissingTranslation', 'UnsafeNativeCodeLocation' } buildTypes { release { signingConfig signingConfigs.release } } flavorDimensions "implementation" productFlavors { noovpn3 { dimension "implementation" buildConfigField 'boolean', 'openvpn3', 'false' } normal { dimension "implementation" buildConfigField 'boolean', 'openvpn3', 'true' } } compileOptions { targetCompatibility 1.8 sourceCompatibility 1.8 } } // ~/.gradle/gradle.properties if (project.hasProperty('keystoreFile') && project.hasProperty('keystorePassword') && project.hasProperty('keystoreAliasPassword')) { android.signingConfigs.release.storeFile = file(keystoreFile) android.signingConfigs.release.storePassword = keystorePassword android.signingConfigs.release.keyPassword = keystoreAliasPassword android.signingConfigs.release.keyAlias = keystoreAlias } else { android.buildTypes.release.signingConfig = null } // Ensure native build is run before assets, so assets are ready to be merged into the apk android.applicationVariants.all { variant -> variant.mergeAssets.dependsOn(variant.externalNativeBuildTasks) } android.applicationVariants.all { variant -> variant.productFlavors.each { if (it.dimension == 'implementation' && it.name != 'noovpn3') variant.getJavaCompiler().dependsOn(generateOpenVPN3Swig) } }