xref: /aosp_15_r20/platform_testing/utils/shell-as/Android.bp (revision dd0948b35e70be4c0246aabd6c72554a5eb8b22a)
1*dd0948b3SAndroid Build Coastguard Worker// Copyright (C) 2023 The Android Open Source Project
2*dd0948b3SAndroid Build Coastguard Worker//
3*dd0948b3SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*dd0948b3SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*dd0948b3SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*dd0948b3SAndroid Build Coastguard Worker//
7*dd0948b3SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*dd0948b3SAndroid Build Coastguard Worker//
9*dd0948b3SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*dd0948b3SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*dd0948b3SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*dd0948b3SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*dd0948b3SAndroid Build Coastguard Worker// limitations under the License.
14*dd0948b3SAndroid Build Coastguard Worker
15*dd0948b3SAndroid Build Coastguard Workercc_binary {
16*dd0948b3SAndroid Build Coastguard Worker    name: "shell-as",
17*dd0948b3SAndroid Build Coastguard Worker    cflags: [
18*dd0948b3SAndroid Build Coastguard Worker      "-Wall",
19*dd0948b3SAndroid Build Coastguard Worker      "-Werror",
20*dd0948b3SAndroid Build Coastguard Worker      "-Wextra",
21*dd0948b3SAndroid Build Coastguard Worker    ],
22*dd0948b3SAndroid Build Coastguard Worker    srcs: [
23*dd0948b3SAndroid Build Coastguard Worker      "*.cpp",
24*dd0948b3SAndroid Build Coastguard Worker      ":shell-as-test-app-apk-cpp",
25*dd0948b3SAndroid Build Coastguard Worker    ],
26*dd0948b3SAndroid Build Coastguard Worker    header_libs: ["libcutils_headers"],
27*dd0948b3SAndroid Build Coastguard Worker    static_executable: true,
28*dd0948b3SAndroid Build Coastguard Worker    static_libs: [
29*dd0948b3SAndroid Build Coastguard Worker      "libbase",
30*dd0948b3SAndroid Build Coastguard Worker      "libcap",
31*dd0948b3SAndroid Build Coastguard Worker      "liblog",
32*dd0948b3SAndroid Build Coastguard Worker      "libseccomp_policy",
33*dd0948b3SAndroid Build Coastguard Worker      "libselinux",
34*dd0948b3SAndroid Build Coastguard Worker    ],
35*dd0948b3SAndroid Build Coastguard Worker    arch: {
36*dd0948b3SAndroid Build Coastguard Worker        arm: {
37*dd0948b3SAndroid Build Coastguard Worker            srcs: ["shell-code/*-arm.S"]
38*dd0948b3SAndroid Build Coastguard Worker        },
39*dd0948b3SAndroid Build Coastguard Worker        arm64: {
40*dd0948b3SAndroid Build Coastguard Worker            srcs: ["shell-code/*-arm64.S"]
41*dd0948b3SAndroid Build Coastguard Worker        },
42*dd0948b3SAndroid Build Coastguard Worker        x86: {
43*dd0948b3SAndroid Build Coastguard Worker            srcs: ["shell-code/*-x86.S"]
44*dd0948b3SAndroid Build Coastguard Worker        },
45*dd0948b3SAndroid Build Coastguard Worker        x86_64: {
46*dd0948b3SAndroid Build Coastguard Worker            srcs: ["shell-code/*-x86_64.S"]
47*dd0948b3SAndroid Build Coastguard Worker        }
48*dd0948b3SAndroid Build Coastguard Worker    }
49*dd0948b3SAndroid Build Coastguard Worker}
50*dd0948b3SAndroid Build Coastguard Worker
51*dd0948b3SAndroid Build Coastguard Worker// A simple app that requests all non-system permissions and contains no other
52*dd0948b3SAndroid Build Coastguard Worker// functionality. This can be used as a target for shell-as to emulate the
53*dd0948b3SAndroid Build Coastguard Worker// security context of the most privileged possible non-system app.
54*dd0948b3SAndroid Build Coastguard Workerandroid_app {
55*dd0948b3SAndroid Build Coastguard Worker  name: "shell-as-test-app",
56*dd0948b3SAndroid Build Coastguard Worker  manifest: ":shell-as-test-app-manifest",
57*dd0948b3SAndroid Build Coastguard Worker  srcs: ["app/**/*.java"],
58*dd0948b3SAndroid Build Coastguard Worker  sdk_version: "9",
59*dd0948b3SAndroid Build Coastguard Worker  certificate: ":shell-as-test-app-cert",
60*dd0948b3SAndroid Build Coastguard Worker}
61*dd0948b3SAndroid Build Coastguard Worker
62*dd0948b3SAndroid Build Coastguard Worker// https://source.android.com/docs/core/ota/sign_builds#release-keys
63*dd0948b3SAndroid Build Coastguard Worker// Generated by running:
64*dd0948b3SAndroid Build Coastguard Worker// $ANDROID_BUILD_TOP/development/tools/make_key \
65*dd0948b3SAndroid Build Coastguard Worker//     shell-as-test-app-key \
66*dd0948b3SAndroid Build Coastguard Worker//     '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress[email protected]
67*dd0948b3SAndroid Build Coastguard Workerandroid_app_certificate {
68*dd0948b3SAndroid Build Coastguard Worker    name: "shell-as-test-app-cert",
69*dd0948b3SAndroid Build Coastguard Worker    certificate: "shell-as-test-app-key",
70*dd0948b3SAndroid Build Coastguard Worker}
71*dd0948b3SAndroid Build Coastguard Worker
72*dd0948b3SAndroid Build Coastguard Workergenrule {
73*dd0948b3SAndroid Build Coastguard Worker  name: "shell-as-test-app-manifest",
74*dd0948b3SAndroid Build Coastguard Worker  srcs: [
75*dd0948b3SAndroid Build Coastguard Worker    ":permission-list-normal",
76*dd0948b3SAndroid Build Coastguard Worker    "AndroidManifest.xml.template"
77*dd0948b3SAndroid Build Coastguard Worker  ],
78*dd0948b3SAndroid Build Coastguard Worker  cmd: "$(location gen-manifest.sh) " +
79*dd0948b3SAndroid Build Coastguard Worker       "$(location AndroidManifest.xml.template) " +
80*dd0948b3SAndroid Build Coastguard Worker       "$(location :permission-list-normal) " +
81*dd0948b3SAndroid Build Coastguard Worker       "$(out)",
82*dd0948b3SAndroid Build Coastguard Worker  out: ["AndroidManifest.xml"],
83*dd0948b3SAndroid Build Coastguard Worker  tool_files: ["gen-manifest.sh"],
84*dd0948b3SAndroid Build Coastguard Worker}
85*dd0948b3SAndroid Build Coastguard Worker
86*dd0948b3SAndroid Build Coastguard Worker// A source file that contains the contents of the above shell-as-test-app APK
87*dd0948b3SAndroid Build Coastguard Worker// embedded as an array.
88*dd0948b3SAndroid Build Coastguard Workercc_genrule {
89*dd0948b3SAndroid Build Coastguard Worker  name: "shell-as-test-app-apk-cpp",
90*dd0948b3SAndroid Build Coastguard Worker  srcs: [":shell-as-test-app"],
91*dd0948b3SAndroid Build Coastguard Worker  cmd: "(" +
92*dd0948b3SAndroid Build Coastguard Worker       "  echo '#include <stddef.h>';" +
93*dd0948b3SAndroid Build Coastguard Worker       "  echo '#include <stdint.h>';" +
94*dd0948b3SAndroid Build Coastguard Worker       "  echo '';" +
95*dd0948b3SAndroid Build Coastguard Worker       "  echo 'namespace shell_as {';" +
96*dd0948b3SAndroid Build Coastguard Worker       "  echo 'const uint8_t kTestAppApk[] = {';" +
97*dd0948b3SAndroid Build Coastguard Worker       "  $(location toybox) xxd -i < $(in);" +
98*dd0948b3SAndroid Build Coastguard Worker       "  echo '};';" +
99*dd0948b3SAndroid Build Coastguard Worker       "  echo 'void GetTestApk(uint8_t **apk, size_t *length) {';" +
100*dd0948b3SAndroid Build Coastguard Worker       "  echo '  *apk = (uint8_t*) kTestAppApk;';" +
101*dd0948b3SAndroid Build Coastguard Worker       "  echo '  *length = sizeof(kTestAppApk);';" +
102*dd0948b3SAndroid Build Coastguard Worker       "  echo '}';" +
103*dd0948b3SAndroid Build Coastguard Worker       "  echo '}  // namespace shell_as';" +
104*dd0948b3SAndroid Build Coastguard Worker       ") > $(out)",
105*dd0948b3SAndroid Build Coastguard Worker  out: ["test-app-apk.cpp"],
106*dd0948b3SAndroid Build Coastguard Worker  tools: ["toybox"]
107*dd0948b3SAndroid Build Coastguard Worker}
108