1*cd0cc2e3SAndroid Build Coastguard Workerbuildscript { 2*cd0cc2e3SAndroid Build Coastguard Worker repositories { 3*cd0cc2e3SAndroid Build Coastguard Worker google() 4*cd0cc2e3SAndroid Build Coastguard Worker mavenCentral() 5*cd0cc2e3SAndroid Build Coastguard Worker } 6*cd0cc2e3SAndroid Build Coastguard Worker dependencies { 7*cd0cc2e3SAndroid Build Coastguard Worker classpath(libs.android.tools) 8*cd0cc2e3SAndroid Build Coastguard Worker } 9*cd0cc2e3SAndroid Build Coastguard Worker} 10*cd0cc2e3SAndroid Build Coastguard Worker 11*cd0cc2e3SAndroid Build Coastguard Workerdescription = 'Conscrypt: Android Platform' 12*cd0cc2e3SAndroid Build Coastguard Worker 13*cd0cc2e3SAndroid Build Coastguard Workerext { 14*cd0cc2e3SAndroid Build Coastguard Worker androidHome = "$System.env.ANDROID_HOME" 15*cd0cc2e3SAndroid Build Coastguard Worker androidSdkInstalled = file("$androidHome").exists() 16*cd0cc2e3SAndroid Build Coastguard Worker androidVersionCode = 1 17*cd0cc2e3SAndroid Build Coastguard Worker androidVersionName = "$version" 18*cd0cc2e3SAndroid Build Coastguard Worker // Platform is always built against head, so we can use newer API versions. 19*cd0cc2e3SAndroid Build Coastguard Worker androidMinSdkVersion = 26 20*cd0cc2e3SAndroid Build Coastguard Worker androidTargetSdkVersion = 26 21*cd0cc2e3SAndroid Build Coastguard Worker} 22*cd0cc2e3SAndroid Build Coastguard Worker 23*cd0cc2e3SAndroid Build Coastguard Workerif (androidSdkInstalled) { 24*cd0cc2e3SAndroid Build Coastguard Worker apply plugin: 'com.android.library' 25*cd0cc2e3SAndroid Build Coastguard Worker 26*cd0cc2e3SAndroid Build Coastguard Worker android { 27*cd0cc2e3SAndroid Build Coastguard Worker namespace "org.conscrypt" 28*cd0cc2e3SAndroid Build Coastguard Worker compileSdkVersion androidTargetSdkVersion 29*cd0cc2e3SAndroid Build Coastguard Worker 30*cd0cc2e3SAndroid Build Coastguard Worker compileOptions { 31*cd0cc2e3SAndroid Build Coastguard Worker sourceCompatibility androidMinJavaVersion; 32*cd0cc2e3SAndroid Build Coastguard Worker targetCompatibility androidMinJavaVersion 33*cd0cc2e3SAndroid Build Coastguard Worker } 34*cd0cc2e3SAndroid Build Coastguard Worker 35*cd0cc2e3SAndroid Build Coastguard Worker defaultConfig { 36*cd0cc2e3SAndroid Build Coastguard Worker minSdkVersion androidMinSdkVersion 37*cd0cc2e3SAndroid Build Coastguard Worker targetSdkVersion androidTargetSdkVersion 38*cd0cc2e3SAndroid Build Coastguard Worker versionCode androidVersionCode 39*cd0cc2e3SAndroid Build Coastguard Worker versionName androidVersionName 40*cd0cc2e3SAndroid Build Coastguard Worker 41*cd0cc2e3SAndroid Build Coastguard Worker testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 42*cd0cc2e3SAndroid Build Coastguard Worker 43*cd0cc2e3SAndroid Build Coastguard Worker consumerProguardFiles 'proguard-rules.pro' 44*cd0cc2e3SAndroid Build Coastguard Worker 45*cd0cc2e3SAndroid Build Coastguard Worker externalNativeBuild { 46*cd0cc2e3SAndroid Build Coastguard Worker cmake { 47*cd0cc2e3SAndroid Build Coastguard Worker arguments '-DANDROID=True', 48*cd0cc2e3SAndroid Build Coastguard Worker '-DANDROID_STL=c++_static', 49*cd0cc2e3SAndroid Build Coastguard Worker "-DBORINGSSL_HOME=$boringsslHome" 50*cd0cc2e3SAndroid Build Coastguard Worker cFlags '-fvisibility=hidden', 51*cd0cc2e3SAndroid Build Coastguard Worker '-DBORINGSSL_SHARED_LIBRARY', 52*cd0cc2e3SAndroid Build Coastguard Worker '-DBORINGSSL_IMPLEMENTATION', 53*cd0cc2e3SAndroid Build Coastguard Worker '-DOPENSSL_SMALL', 54*cd0cc2e3SAndroid Build Coastguard Worker '-D_XOPEN_SOURCE=700', 55*cd0cc2e3SAndroid Build Coastguard Worker '-Wno-unused-parameter' 56*cd0cc2e3SAndroid Build Coastguard Worker } 57*cd0cc2e3SAndroid Build Coastguard Worker } 58*cd0cc2e3SAndroid Build Coastguard Worker ndk { 59*cd0cc2e3SAndroid Build Coastguard Worker abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' 60*cd0cc2e3SAndroid Build Coastguard Worker } 61*cd0cc2e3SAndroid Build Coastguard Worker } 62*cd0cc2e3SAndroid Build Coastguard Worker buildTypes { 63*cd0cc2e3SAndroid Build Coastguard Worker release { 64*cd0cc2e3SAndroid Build Coastguard Worker minifyEnabled false 65*cd0cc2e3SAndroid Build Coastguard Worker proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 66*cd0cc2e3SAndroid Build Coastguard Worker } 67*cd0cc2e3SAndroid Build Coastguard Worker } 68*cd0cc2e3SAndroid Build Coastguard Worker sourceSets { 69*cd0cc2e3SAndroid Build Coastguard Worker main { 70*cd0cc2e3SAndroid Build Coastguard Worker java { 71*cd0cc2e3SAndroid Build Coastguard Worker srcDirs = [ 72*cd0cc2e3SAndroid Build Coastguard Worker "${rootDir}/common/src/main/java", 73*cd0cc2e3SAndroid Build Coastguard Worker "src/main/java", 74*cd0cc2e3SAndroid Build Coastguard Worker ] 75*cd0cc2e3SAndroid Build Coastguard Worker excludes = [ 'org/conscrypt/Platform.java' ] 76*cd0cc2e3SAndroid Build Coastguard Worker } 77*cd0cc2e3SAndroid Build Coastguard Worker } 78*cd0cc2e3SAndroid Build Coastguard Worker } 79*cd0cc2e3SAndroid Build Coastguard Worker lintOptions { 80*cd0cc2e3SAndroid Build Coastguard Worker lintConfig file('lint.xml') 81*cd0cc2e3SAndroid Build Coastguard Worker } 82*cd0cc2e3SAndroid Build Coastguard Worker } 83*cd0cc2e3SAndroid Build Coastguard Worker 84*cd0cc2e3SAndroid Build Coastguard Worker configurations { 85*cd0cc2e3SAndroid Build Coastguard Worker publicApiDocs 86*cd0cc2e3SAndroid Build Coastguard Worker } 87*cd0cc2e3SAndroid Build Coastguard Worker 88*cd0cc2e3SAndroid Build Coastguard Worker dependencies { 89*cd0cc2e3SAndroid Build Coastguard Worker implementation project(path: ':conscrypt-openjdk', configuration: 'platform') 90*cd0cc2e3SAndroid Build Coastguard Worker publicApiDocs project(':conscrypt-api-doclet') 91*cd0cc2e3SAndroid Build Coastguard Worker androidTestImplementation('androidx.test.espresso:espresso-core:3.1.1', { 92*cd0cc2e3SAndroid Build Coastguard Worker exclude module: 'support-annotations' 93*cd0cc2e3SAndroid Build Coastguard Worker exclude module: 'support-v4' 94*cd0cc2e3SAndroid Build Coastguard Worker exclude module: 'support-v13' 95*cd0cc2e3SAndroid Build Coastguard Worker exclude module: 'recyclerview-v7' 96*cd0cc2e3SAndroid Build Coastguard Worker exclude module: 'appcompat-v7' 97*cd0cc2e3SAndroid Build Coastguard Worker exclude module: 'design' 98*cd0cc2e3SAndroid Build Coastguard Worker }) 99*cd0cc2e3SAndroid Build Coastguard Worker testCompileOnly project(':conscrypt-android-stub'), 100*cd0cc2e3SAndroid Build Coastguard Worker project(':conscrypt-libcore-stub') 101*cd0cc2e3SAndroid Build Coastguard Worker testImplementation project(path: ":conscrypt-testing", configuration: "shadow"), 102*cd0cc2e3SAndroid Build Coastguard Worker libs.junit 103*cd0cc2e3SAndroid Build Coastguard Worker compileOnly project(':conscrypt-android-stub'), 104*cd0cc2e3SAndroid Build Coastguard Worker project(':conscrypt-libcore-stub') 105*cd0cc2e3SAndroid Build Coastguard Worker 106*cd0cc2e3SAndroid Build Coastguard Worker // Adds the constants module as a dependency so that we can include its generated source 107*cd0cc2e3SAndroid Build Coastguard Worker compileOnly project(':conscrypt-constants') 108*cd0cc2e3SAndroid Build Coastguard Worker } 109*cd0cc2e3SAndroid Build Coastguard Worker 110*cd0cc2e3SAndroid Build Coastguard Worker // Disable running the tests. 111*cd0cc2e3SAndroid Build Coastguard Worker tasks.withType(Test).configureEach { 112*cd0cc2e3SAndroid Build Coastguard Worker enabled = false 113*cd0cc2e3SAndroid Build Coastguard Worker } 114*cd0cc2e3SAndroid Build Coastguard Worker 115*cd0cc2e3SAndroid Build Coastguard Worker} else { 116*cd0cc2e3SAndroid Build Coastguard Worker logger.warn('Android SDK has not been detected. The Android Platform module will not be built.') 117*cd0cc2e3SAndroid Build Coastguard Worker 118*cd0cc2e3SAndroid Build Coastguard Worker // Disable all tasks 119*cd0cc2e3SAndroid Build Coastguard Worker tasks.configureEach { 120*cd0cc2e3SAndroid Build Coastguard Worker it.enabled = false 121*cd0cc2e3SAndroid Build Coastguard Worker } 122*cd0cc2e3SAndroid Build Coastguard Worker} 123