1//
2// Copyright (C) 2019 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17package {
18    default_team: "trendy_team_android_permissions",
19    default_applicable_licenses: [
20        "packages_modules_Permission_PermissionController_license",
21    ],
22}
23
24// Added automatically by a large-scale-change
25// See: http://go/android-license-faq
26license {
27    name: "packages_modules_Permission_PermissionController_license",
28    visibility: [":__subpackages__"],
29    license_kinds: [
30        "SPDX-license-identifier-Apache-2.0",
31    ],
32    license_text: [
33        "NOTICE",
34    ],
35}
36
37genrule {
38    name: "statslog-permissioncontroller-java-gen",
39    tools: ["stats-log-api-gen"],
40    cmd: "$(location stats-log-api-gen) --java $(out) --module permissioncontroller" +
41        " --javaPackage com.android.permissioncontroller" +
42        " --javaClass PermissionControllerStatsLog --minApiLevel 30",
43    out: ["com/android/permissioncontroller/PermissionControllerStatsLog.java"],
44}
45
46java_library {
47    name: "permissioncontroller-statsd",
48    sdk_version: "system_current",
49    min_sdk_version: "30",
50    apex_available: [
51        "com.android.permission",
52    ],
53    srcs: [
54        ":statslog-permissioncontroller-java-gen",
55    ],
56}
57
58java_library {
59    name: "permissioncontroller-protos",
60    sdk_version: "system_current",
61    min_sdk_version: "30",
62    srcs: [
63        "src/**/*.proto",
64    ],
65    proto: {
66        type: "lite",
67        include_dirs: ["packages/modules/Permission/PermissionController/src/com/android/permissioncontroller"],
68    },
69    apex_available: [
70        "//apex_available:platform",
71        "com.android.permission",
72    ],
73}
74
75filegroup {
76    name: "PermissionController-jarjar-rules",
77    srcs: ["jarjar-rules.txt"],
78}
79
80android_library {
81    name: "PermissionController-lib",
82    sdk_version: "system_current",
83    min_sdk_version: "30",
84    use_resource_processor: true,
85    manifest: "AndroidManifest-lib.xml",
86    srcs: [
87        "src/**/*.java",
88        "src/**/*.kt",
89    ],
90
91    //javacflags: ["-Werror"],
92    kotlincflags: [
93        "-Werror",
94        "-opt-in=kotlinx.coroutines.DelicateCoroutinesApi",
95        "-Xjvm-default=all",
96    ],
97
98    libs: [
99        "android.car-stubs",
100        "safety-center-annotations",
101    ],
102
103    static_libs: [
104        "permissioncontroller-protos",
105        "iconloader_sc_mainline_prod",
106        "com.google.android.material_material",
107        "androidx.transition_transition",
108        "androidx-constraintlayout_constraintlayout",
109        "androidx.core_core",
110        "androidx.media_media",
111        "androidx.legacy_legacy-support-core-utils",
112        "androidx.legacy_legacy-support-core-ui",
113        "androidx.fragment_fragment",
114        "androidx.appcompat_appcompat",
115        "androidx.preference_preference",
116        "androidx.recyclerview_recyclerview",
117        "androidx.legacy_legacy-preference-v14",
118        "androidx.leanback_leanback",
119        "androidx.leanback_leanback-preference",
120        "androidx.lifecycle_lifecycle-common-java8",
121        "kotlin-stdlib",
122        "kotlinx-coroutines-android",
123        "androidx.navigation_navigation-common-ktx",
124        "androidx.navigation_navigation-fragment-ktx",
125        "androidx.navigation_navigation-runtime-ktx",
126        "androidx.navigation_navigation-ui-ktx",
127        "SettingsLibHelpUtils",
128        "SettingsLibRestrictedLockUtils",
129        "SettingsLibAppPreference",
130        "SettingsLibSearchWidget",
131        "SettingsLibLayoutPreference",
132        "SettingsLibBarChartPreference",
133        "SettingsLibActionBarShadow",
134        "SettingsLibProgressBar",
135        "SettingsLibCollapsingToolbarBaseActivity",
136        "SettingsLibActivityEmbedding",
137        "SettingsLibSettingsTheme",
138        "SettingsLibFooterPreference",
139        "SettingsLibSelectorWithWidgetPreference",
140        "SettingsLibTwoTargetPreference",
141        "SettingsLibIllustrationPreference",
142        "androidx.annotation_annotation",
143        "permissioncontroller-statsd",
144        "car-ui-lib",
145        "libprotobuf-java-lite",
146        "safety-center-internal-data",
147        "safety-center-pending-intents",
148        "SettingsLibUtils",
149        "modules-utils-build_system",
150        "safety-center-resources-lib",
151        "lottie",
152        "safety-label",
153        "role-controller",
154        "android.permission.flags-aconfig-java-export",
155        "com.android.permission.flags-aconfig-java-export",
156        "androidx.compose.foundation_foundation",
157        "androidx.compose.runtime_runtime",
158        "androidx.compose.runtime_runtime-livedata",
159        "androidx.compose.ui_ui",
160        "androidx.wear.compose_compose-material",
161        "androidx.wear.compose_compose-material3",
162        "android.content.pm.flags-aconfig-java-export",
163        "android.os.flags-aconfig-java-export",
164    ],
165
166    lint: {
167        error_checks: ["Recycle"],
168        baseline_filename: "lint-baseline.xml",
169    },
170
171    apex_available: [
172        "//apex_available:platform",
173        "com.android.permission",
174    ],
175
176    // TODO(b/313706381): Remove jarjar once flagging lib is fixed
177    jarjar_rules: ":PermissionController-jarjar-rules",
178}
179
180android_app {
181    name: "PermissionController",
182    // Compiling against "module_current" would allow using non-APIs within the permission APEX
183    // boundaries, which may be unsafe because PermissionController is also shipped as a standalone
184    // artifact. See also b/209458854.
185    sdk_version: "system_current",
186    min_sdk_version: "30",
187    updatable: true,
188    privileged: true,
189    certificate: "platform",
190    use_resource_processor: true,
191    rename_resources_package: false,
192    privapp_allowlist: ":privapp_allowlist_com.android.permissioncontroller.xml",
193
194    static_libs: ["PermissionController-lib"],
195
196    lint: {
197        error_checks: ["Recycle"],
198    },
199
200    optimize: {
201        proguard_compatibility: false, // TODO(b/215530220): remove when this is default behavior
202        proguard_flags_files: ["proguard.flags"],
203    },
204
205    apex_available: [
206        "//apex_available:platform",
207        "com.android.permission",
208    ],
209}
210