1plugins { 2 alias(libs.plugins.android.library) 3} 4 5description = 'Conscrypt: Android' 6 7ext { 8 androidHome = "$System.env.ANDROID_HOME" 9 androidSdkInstalled = file("$androidHome").exists() 10 androidVersionCode = 1 11 androidVersionName = "$version" 12 androidMinSdkVersion = 19 13 androidTargetSdkVersion = 26 14 androidNdkVersion = '25.2.9519653' 15 androidCmakeVersion = '3.22.1' 16} 17 18// Since we're not taking a direct dependency on the constants module, we need to add an 19// explicit task dependency to make sure the code is generated. 20evaluationDependsOn(':conscrypt-constants') 21 22android { 23 namespace "org.conscrypt" 24 25 compileSdkVersion androidTargetSdkVersion 26 ndkVersion androidNdkVersion 27 28 compileOptions { 29 sourceCompatibility androidMinJavaVersion 30 targetCompatibility androidMinJavaVersion 31 } 32 33 defaultConfig { 34 minSdkVersion androidMinSdkVersion 35 targetSdkVersion androidTargetSdkVersion 36 versionCode androidVersionCode 37 versionName androidVersionName 38 39 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 40 41 consumerProguardFiles 'proguard-rules.pro' 42 43 externalNativeBuild { 44 cmake { 45 arguments '-DANDROID=True', 46 '-DANDROID_STL=c++_static', 47 "-DBORINGSSL_HOME=$boringsslHome", 48 "-DCMAKE_CXX_STANDARD=17", 49 '-DCMAKE_SHARED_LINKER_FLAGS=-z max-page-size=16384' 50 cFlags '-fvisibility=hidden', 51 '-DBORINGSSL_SHARED_LIBRARY', 52 '-DBORINGSSL_IMPLEMENTATION', 53 '-DOPENSSL_SMALL', 54 '-D_XOPEN_SOURCE=700', 55 '-Wno-unused-parameter' 56 targets 'conscrypt_jni' 57 } 58 } 59 ndk { 60 abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' 61 } 62 } 63 buildTypes { 64 release { 65 minifyEnabled false 66 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 67 } 68 } 69 sourceSets.main { 70 java { 71 srcDirs = [ 72 "${rootDir}/common/src/main/java", 73 "src/main/java" 74 ] 75 // Requires evaluationDependsOn(':conscrypt-constants') above. 76 srcDirs += project(':conscrypt-constants').sourceSets.main.java.srcDirs 77 } 78 resources { 79 srcDirs += "build/generated/resources" 80 } 81 } 82 externalNativeBuild { 83 cmake { 84 path 'CMakeLists.txt' 85 version androidCmakeVersion 86 } 87 } 88 lintOptions { 89 lintConfig file('lint.xml') 90 } 91 92 publishing { 93 singleVariant("release") { 94 withSourcesJar() 95 } 96 } 97} 98 99configurations { 100 publicApiDocs 101} 102 103preBuild { 104 dependsOn generateProperties 105} 106 107dependencies { 108 publicApiDocs project(':conscrypt-api-doclet') 109 androidTestImplementation('androidx.test.espresso:espresso-core:3.1.1', { 110 exclude module: 'support-annotations' 111 exclude module: 'support-v4' 112 exclude module: 'support-v13' 113 exclude module: 'recyclerview-v7' 114 exclude module: 'appcompat-v7' 115 exclude module: 'design' 116 }) 117 compileOnly project(':conscrypt-android-stub') 118 119 // Adds the constants module as a dependency so that we can include its generated source 120 compileOnly project(':conscrypt-constants') 121} 122 123def javadocs = tasks.register("javadocs", Javadoc) { 124 dependsOn configurations.publicApiDocs 125 source = android.sourceSets.main.java.srcDirs 126 classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + 127 project(':conscrypt-android-stub').sourceSets.main.output 128 options { 129 showFromPublic() 130 encoding = 'UTF-8' 131 doclet = "org.conscrypt.doclet.FilterDoclet" 132 links = ['https://docs.oracle.com/en/java/javase/21/docs/api/java.base/'] 133 docletpath = configurations.publicApiDocs.files as List 134 } 135 failOnError false 136 137 doLast { 138 copy { 139 from "$rootDir/api-doclet/src/main/resources/styles.css" 140 into "$buildDir/docs/javadoc" 141 } 142 } 143} 144 145def javadocsJar = tasks.register("javadocsJar", Jar) { 146 dependsOn javadocs 147 archiveClassifier = 'javadoc' 148 from { 149 javadocs.get().destinationDir 150 } 151} 152 153afterEvaluate { 154 apply from: "$rootDir/gradle/publishing.gradle" 155 publishing.publications.maven { 156 pom.packaging = 'aar' 157 from components.release 158 artifact javadocsJar.get() 159 } 160} 161