diff --git a/private/adbd.te b/private/adbd.te
index 2008364288ded5ade37e9b7e3f38157d7b154fa9..d28b836f14ad69343f208b5191577ebbe4696874 100644
--- a/private/adbd.te
+++ b/private/adbd.te
@@ -3,6 +3,8 @@
 typeattribute adbd coredomain;
 typeattribute adbd mlstrustedsubject;
 
+init_daemon_domain(adbd)
+
 domain_auto_trans(adbd, shell_exec, shell)
 
 userdebug_or_eng(`
diff --git a/private/compat/26.0/26.0.ignore.cil b/private/compat/26.0/26.0.ignore.cil
index 6b37df7fac5eaba70935832eb4e1f44178fe3d17..a04e02622cf961c928b03689245574c7ba57d149 100644
--- a/private/compat/26.0/26.0.ignore.cil
+++ b/private/compat/26.0/26.0.ignore.cil
@@ -3,7 +3,8 @@
 ;;   previous ones.  Add here to pass checkapi tests.
 (typeattribute new_objects)
 (typeattributeset new_objects
-  ( broadcastradio_service
+  ( adbd_exec
+    broadcastradio_service
     e2fs
     e2fs_exec
     hal_cas_hwservice
@@ -29,5 +30,6 @@
 ;;     Thus, these types are also not mapped, but recorded for checkapi tests
 (typeattribute priv_objects)
 (typeattributeset priv_objects
-     ( screencap
+     ( adbd_tmpfs
+       screencap
        screencap_exec ))
diff --git a/private/file_contexts b/private/file_contexts
index eb31faf1f7dcf45ffbe67b557ef241c5f66606bf..49d954b2ee0d2fab48dad5f7c00d75fecf630bb7 100644
--- a/private/file_contexts
+++ b/private/file_contexts
@@ -273,6 +273,7 @@
 /system/etc/selinux/plat_sepolicy.cil       u:object_r:sepolicy_file:s0
 /system/etc/selinux/plat_and_mapping_sepolicy\.cil\.sha256 u:object_r:sepolicy_file:s0
 /system/bin/vr_hwc               u:object_r:vr_hwc_exec:s0
+/system/bin/adbd                 u:object_r:adbd_exec:s0
 
 #############################
 # Vendor files
diff --git a/private/init.te b/private/init.te
index 558ba966b016c77706d59007a0ab3688fb51f49f..5c23f66f10f8d0f98b287a67cec1237bd220494b 100644
--- a/private/init.te
+++ b/private/init.te
@@ -3,12 +3,12 @@ typeattribute init coredomain;
 tmpfs_domain(init)
 
 # Transitions to seclabel processes in init.rc
-domain_trans(init, rootfs, adbd)
 domain_trans(init, rootfs, charger)
 domain_trans(init, rootfs, healthd)
 domain_trans(init, rootfs, slideshow)
 domain_auto_trans(init, e2fs_exec, e2fs)
 recovery_only(`
+  domain_trans(init, rootfs, adbd)
   domain_trans(init, rootfs, recovery)
 ')
 domain_trans(init, shell_exec, shell)
diff --git a/public/adbd.te b/public/adbd.te
index 7ecd045fc0a8b8942b2e49056a58c4fd6c0fa36a..95854c01e7e6bcc5635ec98fd56179f9cde63829 100644
--- a/public/adbd.te
+++ b/public/adbd.te
@@ -1,3 +1,4 @@
 # adbd seclabel is specified in init.rc since
 # it lives in the rootfs and has no unique file type.
 type adbd, domain;
+type adbd_exec, exec_type, file_type;