1*b7c941bbSAndroid Build Coastguard Worker// Copyright (C) 2019 The Android Open Source Project 2*b7c941bbSAndroid Build Coastguard Worker// 3*b7c941bbSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*b7c941bbSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*b7c941bbSAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*b7c941bbSAndroid Build Coastguard Worker// 7*b7c941bbSAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*b7c941bbSAndroid Build Coastguard Worker// 9*b7c941bbSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*b7c941bbSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*b7c941bbSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*b7c941bbSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*b7c941bbSAndroid Build Coastguard Worker// limitations under the License. 14*b7c941bbSAndroid Build Coastguard Worker 15*b7c941bbSAndroid Build Coastguard Workerpackage { 16*b7c941bbSAndroid Build Coastguard Worker default_team: "trendy_team_updatable_sdk_apis", 17*b7c941bbSAndroid Build Coastguard Worker // See: http://go/android-license-faq 18*b7c941bbSAndroid Build Coastguard Worker default_applicable_licenses: ["Android-Apache-2.0"], 19*b7c941bbSAndroid Build Coastguard Worker} 20*b7c941bbSAndroid Build Coastguard Worker 21*b7c941bbSAndroid Build Coastguard Workerjava_library { 22*b7c941bbSAndroid Build Coastguard Worker name: "cts-api-signature-multilib-test", 23*b7c941bbSAndroid Build Coastguard Worker srcs: ["src/**/*.java"], 24*b7c941bbSAndroid Build Coastguard Worker sdk_version: "test_current", 25*b7c941bbSAndroid Build Coastguard Worker static_libs: [ 26*b7c941bbSAndroid Build Coastguard Worker "cts-api-signature-test", 27*b7c941bbSAndroid Build Coastguard Worker "compatibility-device-util-axt", 28*b7c941bbSAndroid Build Coastguard Worker "junit-params", 29*b7c941bbSAndroid Build Coastguard Worker ], 30*b7c941bbSAndroid Build Coastguard Worker} 31*b7c941bbSAndroid Build Coastguard Worker 32*b7c941bbSAndroid Build Coastguard Workerandroid_test { 33*b7c941bbSAndroid Build Coastguard Worker name: "CtsSharedLibsApiSignatureTestCases", 34*b7c941bbSAndroid Build Coastguard Worker defaults: ["cts_defaults"], 35*b7c941bbSAndroid Build Coastguard Worker 36*b7c941bbSAndroid Build Coastguard Worker // Ensure that any android.test and junit classes embedded within this test do not conflict with 37*b7c941bbSAndroid Build Coastguard Worker // the classes provided by the android.test.base or android.test.runner shared libraries. 38*b7c941bbSAndroid Build Coastguard Worker jarjar_rules: ":cts-android-test-jarjar-rules", 39*b7c941bbSAndroid Build Coastguard Worker 40*b7c941bbSAndroid Build Coastguard Worker java_resources: [ 41*b7c941bbSAndroid Build Coastguard Worker ":cts-current-api-gz", 42*b7c941bbSAndroid Build Coastguard Worker ":cts-shared-libs-names.txt", 43*b7c941bbSAndroid Build Coastguard Worker ":CtsSharedLibsApiSignatureTestCases_cts-shared-libs-all-current.api", 44*b7c941bbSAndroid Build Coastguard Worker ":CtsSharedLibsApiSignatureTestCases_cts-shared-libs-all-previous.api", 45*b7c941bbSAndroid Build Coastguard Worker ], 46*b7c941bbSAndroid Build Coastguard Worker static_libs: [ 47*b7c941bbSAndroid Build Coastguard Worker "cts-api-signature-multilib-test", 48*b7c941bbSAndroid Build Coastguard Worker "cts-api-signature-test", 49*b7c941bbSAndroid Build Coastguard Worker ], 50*b7c941bbSAndroid Build Coastguard Worker test_suites: [ 51*b7c941bbSAndroid Build Coastguard Worker "cts", 52*b7c941bbSAndroid Build Coastguard Worker "general-tests", 53*b7c941bbSAndroid Build Coastguard Worker ], 54*b7c941bbSAndroid Build Coastguard Worker sdk_version: "current", 55*b7c941bbSAndroid Build Coastguard Worker jni_libs: ["libclassdescriptors"], 56*b7c941bbSAndroid Build Coastguard Worker compile_multilib: "both", 57*b7c941bbSAndroid Build Coastguard Worker dex_preopt: { 58*b7c941bbSAndroid Build Coastguard Worker enabled: false, 59*b7c941bbSAndroid Build Coastguard Worker }, 60*b7c941bbSAndroid Build Coastguard Worker optimize: { 61*b7c941bbSAndroid Build Coastguard Worker enabled: false, 62*b7c941bbSAndroid Build Coastguard Worker }, 63*b7c941bbSAndroid Build Coastguard Worker use_embedded_native_libs: false, 64*b7c941bbSAndroid Build Coastguard Worker srcs: ["src/**/*.java"], 65*b7c941bbSAndroid Build Coastguard Worker} 66*b7c941bbSAndroid Build Coastguard Worker 67*b7c941bbSAndroid Build Coastguard Workergenrule { 68*b7c941bbSAndroid Build Coastguard Worker name: "cts-shared-libs-names.txt", 69*b7c941bbSAndroid Build Coastguard Worker srcs: [ 70*b7c941bbSAndroid Build Coastguard Worker "AndroidManifest.xml", 71*b7c941bbSAndroid Build Coastguard Worker ], 72*b7c941bbSAndroid Build Coastguard Worker out: [ 73*b7c941bbSAndroid Build Coastguard Worker "shared-libs-names.txt", 74*b7c941bbSAndroid Build Coastguard Worker ], 75*b7c941bbSAndroid Build Coastguard Worker cmd: "grep 'uses-library' $(in) | cut -f2 -d\\\" | sort > $(out)", 76*b7c941bbSAndroid Build Coastguard Worker} 77*b7c941bbSAndroid Build Coastguard Worker 78*b7c941bbSAndroid Build Coastguard Worker// Generates a zip file containing the current public and system API files for shared libraries. 79*b7c941bbSAndroid Build Coastguard Workerjava_genrule { 80*b7c941bbSAndroid Build Coastguard Worker name: "CtsSharedLibsApiSignatureTestCases_cts-shared-libs-all-current.api", 81*b7c941bbSAndroid Build Coastguard Worker srcs: [ 82*b7c941bbSAndroid Build Coastguard Worker ":android.net.ipsec.ike{.public.api.txt}", 83*b7c941bbSAndroid Build Coastguard Worker ":android.net.ipsec.ike{.system.api.txt}", 84*b7c941bbSAndroid Build Coastguard Worker ":android.test.base{.public.api.txt}", 85*b7c941bbSAndroid Build Coastguard Worker ":android.test.base{.system.api.txt}", 86*b7c941bbSAndroid Build Coastguard Worker ":android.test.runner{.public.api.txt}", 87*b7c941bbSAndroid Build Coastguard Worker ":android.test.runner{.system.api.txt}", 88*b7c941bbSAndroid Build Coastguard Worker ":android.test.mock{.public.api.txt}", 89*b7c941bbSAndroid Build Coastguard Worker ":android.test.mock{.system.api.txt}", 90*b7c941bbSAndroid Build Coastguard Worker ":com.android.future.usb.accessory{.public.api.txt}", 91*b7c941bbSAndroid Build Coastguard Worker ":com.android.future.usb.accessory{.system.api.txt}", 92*b7c941bbSAndroid Build Coastguard Worker ":com.android.libraries.tv.tvsystem{.public.api.txt}", 93*b7c941bbSAndroid Build Coastguard Worker ":com.android.libraries.tv.tvsystem{.system.api.txt}", 94*b7c941bbSAndroid Build Coastguard Worker ":com.android.location.provider{.public.api.txt}", 95*b7c941bbSAndroid Build Coastguard Worker ":com.android.location.provider{.system.api.txt}", 96*b7c941bbSAndroid Build Coastguard Worker ":com.android.mediadrm.signer{.public.api.txt}", 97*b7c941bbSAndroid Build Coastguard Worker ":com.android.mediadrm.signer{.system.api.txt}", 98*b7c941bbSAndroid Build Coastguard Worker ":com.android.media.remotedisplay{.public.api.txt}", 99*b7c941bbSAndroid Build Coastguard Worker ":com.android.media.remotedisplay{.system.api.txt}", 100*b7c941bbSAndroid Build Coastguard Worker ":com.android.media.tv.remoteprovider{.public.api.txt}", 101*b7c941bbSAndroid Build Coastguard Worker ":com.android.media.tv.remoteprovider{.system.api.txt}", 102*b7c941bbSAndroid Build Coastguard Worker ":com.android.nfc_extras{.public.api.txt}", 103*b7c941bbSAndroid Build Coastguard Worker ":com.android.nfc_extras{.system.api.txt}", 104*b7c941bbSAndroid Build Coastguard Worker ":javax.obex{.public.api.txt}", 105*b7c941bbSAndroid Build Coastguard Worker ":javax.obex{.system.api.txt}", 106*b7c941bbSAndroid Build Coastguard Worker ":org.apache.http.legacy{.public.api.txt}", 107*b7c941bbSAndroid Build Coastguard Worker ":org.apache.http.legacy{.system.api.txt}", 108*b7c941bbSAndroid Build Coastguard Worker ], 109*b7c941bbSAndroid Build Coastguard Worker tools: [ 110*b7c941bbSAndroid Build Coastguard Worker "soong_zip", 111*b7c941bbSAndroid Build Coastguard Worker "metalava", 112*b7c941bbSAndroid Build Coastguard Worker ], 113*b7c941bbSAndroid Build Coastguard Worker out: [ 114*b7c941bbSAndroid Build Coastguard Worker "shared-libs-all-current.api.zip", 115*b7c941bbSAndroid Build Coastguard Worker ], 116*b7c941bbSAndroid Build Coastguard Worker cmd: "mkdir -p $(genDir)/list && " + 117*b7c941bbSAndroid Build Coastguard Worker "for f in $(in); do " + 118*b7c941bbSAndroid Build Coastguard Worker // Extract the module name from the path. 119*b7c941bbSAndroid Build Coastguard Worker " fileName=$$(basename $${f} .txt) && " + 120*b7c941bbSAndroid Build Coastguard Worker " fileName=$${fileName%%.stubs.source*} && " + 121*b7c941bbSAndroid Build Coastguard Worker // Extract the api level, i.e. public|system from the path. 122*b7c941bbSAndroid Build Coastguard Worker " apiLevel=$${f##*.stubs.source} && " + 123*b7c941bbSAndroid Build Coastguard Worker " apiLevel=$${apiLevel#.} && " + 124*b7c941bbSAndroid Build Coastguard Worker " apiLevel=$${apiLevel%_api.txt} && " + 125*b7c941bbSAndroid Build Coastguard Worker " if [ -z $${apiLevel} ]; then apiLevel=public; fi && " + 126*b7c941bbSAndroid Build Coastguard Worker // Convert the .txt file into its XML representation. 127*b7c941bbSAndroid Build Coastguard Worker " $(location metalava) -J--add-opens=java.base/java.util=ALL-UNNAMED " + 128*b7c941bbSAndroid Build Coastguard Worker " signature-to-jdiff $${f} $(genDir)/list/$${fileName}-current-$${apiLevel}.api; " + 129*b7c941bbSAndroid Build Coastguard Worker "done && " + 130*b7c941bbSAndroid Build Coastguard Worker "$(location soong_zip) -o $(out) -C $(genDir)/list -D $(genDir)/list", 131*b7c941bbSAndroid Build Coastguard Worker} 132*b7c941bbSAndroid Build Coastguard Worker 133*b7c941bbSAndroid Build Coastguard Worker// Generates a zip file containing all the API files from previous releases >= 28 excluding the 134*b7c941bbSAndroid Build Coastguard Worker// android.txt and removed files. 135*b7c941bbSAndroid Build Coastguard Workergenrule { 136*b7c941bbSAndroid Build Coastguard Worker name: "CtsSharedLibsApiSignatureTestCases_cts-shared-libs-all-previous.api", 137*b7c941bbSAndroid Build Coastguard Worker srcs: [ 138*b7c941bbSAndroid Build Coastguard Worker ":prebuilt_sdk_system_public_api_txt", 139*b7c941bbSAndroid Build Coastguard Worker ], 140*b7c941bbSAndroid Build Coastguard Worker tools: [ 141*b7c941bbSAndroid Build Coastguard Worker "soong_zip", 142*b7c941bbSAndroid Build Coastguard Worker "metalava", 143*b7c941bbSAndroid Build Coastguard Worker ], 144*b7c941bbSAndroid Build Coastguard Worker out: [ 145*b7c941bbSAndroid Build Coastguard Worker "shared-libs-all-previous.api.zip", 146*b7c941bbSAndroid Build Coastguard Worker ], 147*b7c941bbSAndroid Build Coastguard Worker cmd: "for f in $(in); do " + 148*b7c941bbSAndroid Build Coastguard Worker " fileName=$$(basename $${f} .txt) && " + 149*b7c941bbSAndroid Build Coastguard Worker " if [ $${fileName} == android ] || [[ $${fileName} =~ removed ]] || [[ $${fileName} =~ incompatibilities ]]; " + 150*b7c941bbSAndroid Build Coastguard Worker " then continue; fi && " + 151*b7c941bbSAndroid Build Coastguard Worker " platformSdkVersion=$$(echo $${f} | awk -F/ '{print $$(3)}') && " + 152*b7c941bbSAndroid Build Coastguard Worker " if [ $${platformSdkVersion} -lt 28 ]; then continue; fi && " + 153*b7c941bbSAndroid Build Coastguard Worker " apiLevel=$$(echo $${f} | awk -F/ '{print $$(4)}') && " + 154*b7c941bbSAndroid Build Coastguard Worker " $(location metalava) -J--add-opens=java.base/java.util=ALL-UNNAMED " + 155*b7c941bbSAndroid Build Coastguard Worker " signature-to-jdiff $${f} $(genDir)/list/$${fileName}-$${platformSdkVersion}-$${apiLevel}.api; " + 156*b7c941bbSAndroid Build Coastguard Worker "done && " + 157*b7c941bbSAndroid Build Coastguard Worker "$(location soong_zip) -o $(out) -C $(genDir)/list -D $(genDir)/list", 158*b7c941bbSAndroid Build Coastguard Worker} 159