buildscript { dependencies { classpath "com.google.protobuf:protobuf-gradle-plugin:$protobufGradleVersion" } } plugins { id 'com.android.library' id 'com.google.protobuf' version "$protobufGradleVersion" } version wireguardVersionName group groupName android { compileSdk 33 ndkVersion '21.4.7075529' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } namespace 'com.wireguard.android.tunnel' defaultConfig { minSdkVersion 21 targetSdkVersion 31 versionCode wireguardVersionCode versionName wireguardVersionName } externalNativeBuild { cmake { path 'tools/CMakeLists.txt' } } testOptions.unitTests.all { testLogging { events 'passed', 'skipped', 'failed', 'standardOut', 'standardError' } } buildTypes { release { externalNativeBuild { cmake { arguments "-DANDROID_PACKAGE_NAME=${groupName}", "-DGRADLE_USER_HOME=${project.gradle.gradleUserHomeDir}" } } } debug { externalNativeBuild { cmake { arguments "-DANDROID_PACKAGE_NAME=${groupName}.debug", "-DGRADLE_USER_HOME=${project.gradle.gradleUserHomeDir}" } } } } lintOptions { disable('LongLogTag') disable('NewApi') // Desugaring! } ndkVersion "21.3.6528147" splits { abi { enable true reset() include "arm64-v8a", "armeabi-v7a" universalApk false } } } dependencies { implementation project(":bgp-java") implementation "androidx.annotation:annotation:$annotationsVersion" implementation "androidx.collection:collection:$collectionVersion" implementation "io.grpc:grpc-okhttp:$grpcVersion" implementation "io.grpc:grpc-protobuf-lite:$grpcVersion" implementation "io.grpc:grpc-stub:$grpcVersion" compileOnly "com.google.code.findbugs:jsr305:$jsr305Version" compileOnly "javax.annotation:javax.annotation-api:1.2" testImplementation "junit:junit:$junitVersion" } protobuf { protoc { // You still need protoc like in the non-Android case artifact = "com.google.protobuf:protoc:$protocVersion" } plugins { grpc { artifact = "io.grpc:protoc-gen-grpc-java:$grpcVersion" } } generateProtoTasks { all().each { task -> task.builtins { java { option 'lite' } } task.plugins { grpc { option 'lite' } } } } } afterEvaluate({ project -> // All custom configurations created by the protobuf plugin, // are only available at this point. def protoc = configurations.getByName('protobufToolsLocator_protoc') task copyProtoc(type: Copy) { // Used by tunnel/tools/libwg-go/Makefile run in tools/CMakeLists.txt from protoc into "${gradle.gradleUserHomeDir}/caches/protoc-${protocVersion}" rename 'protoc-.*', 'protoc' fileMode 0775 } preBuild.dependsOn copyProtoc // Extract duration.proto used by external library in libwg.proto preDebugBuild.dependsOn extractIncludeDebugProto preReleaseBuild.dependsOn extractIncludeReleaseProto }) apply from: "publish.gradle"