| #!/bin/bash |
| # Copyright (C) 2023 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| |
| # Script to build hoststubgen and run it directly (without using the build rules) |
| # on framework-all.jar. |
| |
| |
| echo "THIS SCRIPT IS BROKEN DUE TO CHANGES TO FILE PATHS TO DEPENDENT FILES. FIX IT WHEN YOU NEED TO USE IT." 1>&2 |
| |
| exit 99 |
| |
| |
| source "${0%/*}"/../common.sh |
| |
| out=out |
| |
| mkdir -p $out |
| |
| # Build the tool and target jar. |
| run m hoststubgen framework-all |
| |
| base_args=( |
| @../hoststubgen/hoststubgen-standard-options.txt |
| |
| --in-jar $ANDROID_BUILD_TOP/out/soong/.intermediates/frameworks/base/framework-all/android_common/combined/framework-all.jar |
| --policy-override-file ../hoststubgen/framework-policy-override.txt "${@}" |
| |
| # This file will contain all classes as an annotation file, with "keep all" policy. |
| --gen-keep-all-file $out/framework-all-keep-all-policy.txt |
| |
| # This file will contains dump of all classes in the input jar. |
| --gen-input-dump-file $out/framework-all-dump.txt |
| ) |
| |
| do_it() { |
| local out_file_stem="$1" |
| shift |
| local extra_args=("${@}") |
| |
| run hoststubgen \ |
| "${base_args[@]}" \ |
| "${extra_args[@]}" \ |
| --out-stub-jar ${out_file_stem}_stub.jar \ |
| --out-impl-jar ${out_file_stem}_impl.jar \ |
| $HOSTSTUBGEN_OPTS |
| |
| # Extract the jar files, so we can look into them. |
| run extract ${out_file_stem}_*.jar |
| } |
| |
| #----------------------------------------------------------------------------- |
| # framework-all, with all hidden APIs. |
| #----------------------------------------------------------------------------- |
| |
| # No extra args. |
| do_it $out/framework-all_host |
| |
| #----------------------------------------------------------------------------- |
| # framework-test-api, only public/system/test-APIs in the stub. |
| #----------------------------------------------------------------------------- |
| |
| do_it $out/framework-test-api_host \ |
| --intersect-stub-jar $SOONG_INT/frameworks/base/api/android_test_stubs_current/android_common/combined/*.jar |