summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/Android.bp17
-rw-r--r--services/permission/Android.bp40
-rw-r--r--services/permission/OWNERS4
-rw-r--r--services/permission/jarjar-rules.txt1
-rw-r--r--services/permission/java/com/android/server/permission/ModernPermissionManagerServiceImpl.kt26
-rw-r--r--services/proguard_permission.flags9
6 files changed, 94 insertions, 3 deletions
diff --git a/services/Android.bp b/services/Android.bp
index 76a148419506..f6570e9d2702 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -60,9 +60,17 @@ system_optimized_java_defaults {
ignore_warnings: false,
proguard_flags_files: ["proguard.flags"],
},
- // Note: Optimizations are disabled by default if unspecified in
- // the java_library rule.
- conditions_default: {},
+ conditions_default: {
+ optimize: {
+ enabled: true,
+ optimize: false,
+ shrink: true,
+ ignore_warnings: false,
+ // Note that this proguard config is very conservative, only shrinking the
+ // permission subpackage to prune unused jarjar'ed Kotlin dependencies.
+ proguard_flags_files: ["proguard_permission.flags"],
+ },
+ },
},
},
}
@@ -97,6 +105,7 @@ filegroup {
":services.midi-sources",
":services.musicsearch-sources",
":services.net-sources",
+ ":services.permission-sources",
":services.print-sources",
":services.profcollect-sources",
":services.restrictions-sources",
@@ -131,6 +140,7 @@ java_library {
app_image: true,
profile: "art-profile",
},
+ exclude_kotlinc_generated_files: true,
srcs: [":services-main-sources"],
@@ -152,6 +162,7 @@ java_library {
"services.musicsearch",
"services.net",
"services.people",
+ "services.permission",
"services.print",
"services.profcollect",
"services.restrictions",
diff --git a/services/permission/Android.bp b/services/permission/Android.bp
new file mode 100644
index 000000000000..b03f17b1bef7
--- /dev/null
+++ b/services/permission/Android.bp
@@ -0,0 +1,40 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "frameworks_base_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: ["frameworks_base_license"],
+}
+
+filegroup {
+ name: "services.permission-sources",
+ srcs: [
+ "java/**/*.java",
+ "java/**/*.kt",
+ ],
+ path: "java",
+ visibility: ["//frameworks/base/services"],
+}
+
+java_library_static {
+ name: "services.permission",
+ defaults: ["platform_service_defaults"],
+ srcs: [":services.permission-sources"],
+ libs: [
+ "services.core",
+ // Soong fails to automatically add this dependency because all the
+ // *.kt sources are inside a filegroup.
+ "kotlin-annotations",
+ ],
+ static_libs: [
+ "kotlin-stdlib",
+ ],
+ jarjar_rules: "jarjar-rules.txt",
+ kotlincflags: [
+ "-Xjvm-default=all",
+ "-Xno-call-assertions",
+ "-Xno-param-assertions",
+ "-Xno-receiver-assertions",
+ ],
+}
diff --git a/services/permission/OWNERS b/services/permission/OWNERS
new file mode 100644
index 000000000000..6c6c9fc10d3b
--- /dev/null
+++ b/services/permission/OWNERS
@@ -0,0 +1,4 @@
+ashfall@google.com
+joecastro@google.com
+ntmyren@google.com
+zhanghai@google.com
diff --git a/services/permission/jarjar-rules.txt b/services/permission/jarjar-rules.txt
new file mode 100644
index 000000000000..34af3afabc4f
--- /dev/null
+++ b/services/permission/jarjar-rules.txt
@@ -0,0 +1 @@
+rule kotlin.** com.android.server.permission.jarjar.@0
diff --git a/services/permission/java/com/android/server/permission/ModernPermissionManagerServiceImpl.kt b/services/permission/java/com/android/server/permission/ModernPermissionManagerServiceImpl.kt
new file mode 100644
index 000000000000..21ec1593fdeb
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/ModernPermissionManagerServiceImpl.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2022 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.
+ */
+
+package com.android.server.permission
+
+import com.android.internal.annotations.Keep
+import com.android.server.pm.permission.PermissionManagerServiceInterface
+
+/**
+ * Modern implementation of [PermissionManagerServiceInterface].
+ */
+@Keep
+class ModernPermissionManagerServiceImpl
diff --git a/services/proguard_permission.flags b/services/proguard_permission.flags
new file mode 100644
index 000000000000..15edc61c33b2
--- /dev/null
+++ b/services/proguard_permission.flags
@@ -0,0 +1,9 @@
+# Only shrink services.permission classes.
+# Note that while more aggressive services shrinking is enabled by default (see proguard.flags), for
+# cases where that's not yet possible, we still need to shrink the permission package to prune out
+# unused Kotlin stdlib dependencies.
+-keep class !com.android.server.permission.** { *; }
+
+# CoverageService guards optional jacoco class references with a runtime guard, so we can safely
+# suppress build-time warnings.
+-dontwarn org.jacoco.agent.rt.*