Early remove 25Q4: adapter_service_profiles_use_optional

As per the guidelines in: go/android-flags-guidelines#launched-flags
It's been 10 weeks since the last code change under this flag,
removing this flag early for a lot! of cleanup.

Goodbye `AdapterService#PROFILE_CONSTRUCTORS` 👋🏻!
Goodbye `ServiceFactory` 👋🏻!

This will also open up a lot of dependency injection possibilities for
the various profiles in `AdapterService.java`

Bug: 422543753
Fix: 422543753
Test: atest BluetoothJavaUnitTests
Flag: EXEMPT removal of adapter_service_profiles_use_optional
Change-Id: Ief9644e01a134d42f342072ab7af6f7ca82f398a
diff --git a/android/app/src/com/android/bluetooth/a2dp/A2dpService.java b/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
index eefec07..0c9ee40 100644
--- a/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
+++ b/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
@@ -54,20 +54,16 @@
 
 import com.android.bluetooth.BluetoothStatsLog;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.avrcp.AvrcpTargetService;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ConnectableProfile;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hfp.HeadsetService;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
-import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
@@ -78,9 +74,6 @@
     // TODO(b/240635097): remove in U
     private static final int SOURCE_CODEC_TYPE_OPUS = 6;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static A2dpService sA2dpService;
-
     private final A2dpNativeInterface mNativeInterface;
     private final A2dpCodecConfig mA2dpCodecConfig;
     private final AudioManager mAudioManager;
@@ -90,9 +83,6 @@
     // Upper limit of all A2DP devices that are Connected or Connecting
     private final int mMaxConnectedAudioDevices;
 
-    // TODO(b/422543753) Delete on flag cleanup
-    @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
-
     @GuardedBy("mStateMachines")
     private BluetoothDevice mActiveDevice;
 
@@ -144,26 +134,6 @@
         Log.d(TAG, "A2DP offload flag set to " + mA2dpOffloadEnabled);
 
         mAudioManager.registerAudioDeviceCallback(mAudioManagerAudioDeviceCallback, mHandler);
-
-        setA2dpService(this);
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<AvrcpTargetService> getAvrcpTargetService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getAvrcpTargetService();
-        } else {
-            return Optional.ofNullable(mFactory.getAvrcpTargetService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HeadsetService> getHeadsetService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHeadsetService();
-        } else {
-            return Optional.ofNullable(HeadsetService.getHeadsetService());
-        }
     }
 
     public static boolean isEnabled() {
@@ -179,17 +149,9 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        if (sA2dpService == null) {
-            Log.w(TAG, "cleanup() called before initialization");
-            return;
-        }
-
         // Step 9: Clear active device and stop playing audio
         removeActiveDevice(true);
 
-        // Step 8: Mark service as stopped
-        setA2dpService(null);
-
         // Step 7: Unregister Audio Device Callback
         mAudioManager.unregisterAudioDeviceCallback(mAudioManagerAudioDeviceCallback);
 
@@ -211,25 +173,6 @@
         return mCompanionDeviceManager;
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized A2dpService getA2dpService() {
-        if (sA2dpService == null) {
-            Log.w(TAG, "getA2dpService(): service is null");
-            return null;
-        }
-        if (!sA2dpService.isAvailable()) {
-            Log.w(TAG, "getA2dpService(): service is not available");
-            return null;
-        }
-        return sA2dpService;
-    }
-
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static synchronized void setA2dpService(A2dpService instance) {
-        Log.d(TAG, "setA2dpService(): set to: " + instance);
-        sA2dpService = instance;
-    }
-
     @Override
     public boolean connect(BluetoothDevice device) {
         Log.d(TAG, "connect(): " + device);
@@ -368,7 +311,7 @@
         if (connectionPolicy != CONNECTION_POLICY_UNKNOWN
                 && connectionPolicy != CONNECTION_POLICY_ALLOWED) {
             if (!isOutgoingRequest) {
-                final var headset = getHeadsetService();
+                final var headset = mAdapterService.getHeadsetService();
                 if (headset.isPresent() && headset.get().okToAcceptConnection(device, true)) {
                     Log.d(
                             TAG,
@@ -582,7 +525,7 @@
 
             // Tasks of Bluetooth are done, and now restore the AudioManager side.
             int rememberedVolume = -1;
-            final var avrcpTarget = getAvrcpTargetService();
+            final var avrcpTarget = mAdapterService.getAvrcpTargetService();
             if (avrcpTarget.isPresent()) {
                 rememberedVolume = avrcpTarget.get().getRememberedVolumeForDevice(newActiveDevice);
             }
@@ -646,7 +589,9 @@
     }
 
     public void setAvrcpAbsoluteVolume(int volume) {
-        getAvrcpTargetService().ifPresent(avrcpTarget -> avrcpTarget.sendVolumeChanged(volume));
+        mAdapterService
+                .getAvrcpTargetService()
+                .ifPresent(avrcpTarget -> avrcpTarget.sendVolumeChanged(volume));
     }
 
     boolean isA2dpPlaying(BluetoothDevice device) {
@@ -1072,7 +1017,8 @@
         Log.d(TAG, "updateAndBroadcastActiveDevice(" + device + ")");
 
         // Make sure volume has been store before device been remove from active.
-        getAvrcpTargetService()
+        mAdapterService
+                .getAvrcpTargetService()
                 .ifPresent(avrcpTarget -> avrcpTarget.handleA2dpActiveDeviceChanged(device));
 
         mAdapterService.handleActiveDeviceChange(mProfileId, device);
@@ -1122,7 +1068,8 @@
         if (bondState != BluetoothDevice.BOND_NONE) {
             return;
         }
-        getAvrcpTargetService()
+        mAdapterService
+                .getAvrcpTargetService()
                 .ifPresent(
                         avrcpTarget -> {
                             Log.d(TAG, "bondStateChanged: going for removeStoredVolumeForDevice");
@@ -1258,12 +1205,14 @@
         // Check if the device is disconnected - if unbond, remove the state machine
         if (toState == STATE_DISCONNECTED) {
             if (mAdapterService.getBondState(device) == BluetoothDevice.BOND_NONE) {
-                getAvrcpTargetService()
+                mAdapterService
+                        .getAvrcpTargetService()
                         .ifPresent(avrcpTarget -> avrcpTarget.removeStoredVolumeForDevice(device));
                 removeStateMachine(device);
             }
         }
-        getAvrcpTargetService()
+        mAdapterService
+                .getAvrcpTargetService()
                 .ifPresent(
                         avrcpTarget ->
                                 avrcpTarget.handleA2dpConnectionStateChanged(device, toState));
diff --git a/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkService.java b/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkService.java
index 1677411..e449855 100644
--- a/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkService.java
+++ b/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkService.java
@@ -48,9 +48,6 @@
 public class A2dpSinkService extends ConnectableProfile {
     private static final String TAG = A2dpSinkService.class.getSimpleName();
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static A2dpSinkService sService;
-
     // This is also used as a lock for shared data in {@link A2dpSinkService}
     @GuardedBy("mDeviceStateMap")
     private final Map<BluetoothDevice, A2dpSinkStateMachine> mDeviceStateMap =
@@ -86,8 +83,6 @@
         synchronized (mStreamHandlerLock) {
             mA2dpSinkStreamHandler = new A2dpSinkStreamHandler(mAdapterService, mNativeInterface);
         }
-
-        setA2dpSinkService(this);
     }
 
     public static boolean isEnabled() {
@@ -98,7 +93,6 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        setA2dpSinkService(null);
         mNativeInterface.cleanup();
         synchronized (mDeviceStateMap) {
             for (A2dpSinkStateMachine stateMachine : mDeviceStateMap.values()) {
@@ -111,18 +105,6 @@
         }
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized A2dpSinkService getA2dpSinkService() {
-        return sService;
-    }
-
-    /** Testing API to inject a mockA2dpSinkService. */
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized void setA2dpSinkService(A2dpSinkService service) {
-        sService = service;
-    }
-
     /** Set the device that should be allowed to actively stream */
     public boolean setActiveDevice(BluetoothDevice device) {
         Log.i(TAG, "setActiveDevice(device=" + device + ")");
diff --git a/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandler.java b/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandler.java
index 49c637b..4500c1e 100644
--- a/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandler.java
+++ b/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandler.java
@@ -29,11 +29,7 @@
 import android.util.Log;
 
 import com.android.bluetooth.R;
-import com.android.bluetooth.avrcpcontroller.AvrcpControllerService;
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
-
-import java.util.Optional;
 
 /**
  * Bluetooth A2DP SINK Streaming Handler.
@@ -196,22 +192,16 @@
                 }
 
                 // Route new focus state to AVRCP Controller to handle media player states
-                final Optional<AvrcpControllerService> avrcpControllerService;
-                if (Flags.adapterServiceProfilesUseOptional()) {
-                    avrcpControllerService = mAdapterService.getAvrcpControllerService();
-                } else {
-                    avrcpControllerService =
-                            Optional.ofNullable(AvrcpControllerService.getAvrcpControllerService());
-                }
-
-                avrcpControllerService.ifPresentOrElse(
-                        avrcpController ->
-                                avrcpController.onAudioFocusStateChanged(focusChangeCode),
-                        () ->
-                                Log.w(
-                                        TAG,
-                                        "AVRCP Controller Service not available to send focus"
-                                                + " events to."));
+                mAdapterService
+                        .getAvrcpControllerService()
+                        .ifPresentOrElse(
+                                avrcpController ->
+                                        avrcpController.onAudioFocusStateChanged(focusChangeCode),
+                                () ->
+                                        Log.w(
+                                                TAG,
+                                                "AVRCP Controller Service not available to send"
+                                                        + " focus events to."));
             }
             default -> Log.w(TAG, "Received unexpected event: " + message.what);
         }
diff --git a/android/app/src/com/android/bluetooth/avrcp/AvrcpTargetService.java b/android/app/src/com/android/bluetooth/avrcp/AvrcpTargetService.java
index fc5690d..3631401 100644
--- a/android/app/src/com/android/bluetooth/avrcp/AvrcpTargetService.java
+++ b/android/app/src/com/android/bluetooth/avrcp/AvrcpTargetService.java
@@ -52,7 +52,6 @@
 import com.android.bluetooth.audio_util.PlayerSettingsManager;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.flags.Flags;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -68,8 +67,6 @@
     private final BluetoothEventLogger mMediaKeyEventLogger =
             new BluetoothEventLogger(MEDIA_KEY_EVENT_LOGGER_SIZE, MEDIA_KEY_EVENT_LOGGER_TITLE);
 
-    // TODO(b/422543753) Delete on flag cleanup
-    private final ServiceFactory mFactory = new ServiceFactory();
     private final BroadcastReceiver mUserUnlockedReceiver =
             new BroadcastReceiver() {
                 @Override
@@ -102,9 +99,6 @@
     // Only used to see if the metadata has changed from its previous value
     private MediaData mCurrentData;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static AvrcpTargetService sInstance = null;
-
     public AvrcpTargetService(AdapterService adapterService) {
         this(requireNonNull(adapterService), null, null, null, Looper.myLooper());
     }
@@ -170,9 +164,6 @@
         filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
         filter.addAction(AudioManager.ACTION_VOLUME_CHANGED);
         registerReceiver(mReceiver, filter);
-
-        // Only allow the service to be used once it is initialized
-        sInstance = this;
     }
 
     /** Checks for profile enabled state in Bluetooth sysprops. */
@@ -231,23 +222,6 @@
         }
     }
 
-    /** Sets the AvrcpTargetService instance. */
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static void set(AvrcpTargetService instance) {
-        sInstance = instance;
-    }
-
-    /**
-     * Returns the {@link AvrcpTargetService} instance.
-     *
-     * <p>Returns null if the service hasn't been initialized.
-     */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static AvrcpTargetService get() {
-        return sInstance;
-    }
-
     /** Returns the {@link AvrcpCoverArtService} instance. */
     public AvrcpCoverArtService getCoverArtService() {
         return mAvrcpCoverArtService;
@@ -262,16 +236,10 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        if (sInstance == null) {
-            Log.w(TAG, "cleanup() called before initialization");
-            return;
-        }
-
         if (mAvrcpCoverArtService != null) {
             mAvrcpCoverArtService.stop();
         }
 
-        sInstance = null;
         unregisterReceiver(mReceiver);
 
         // We check the interfaces first since they only get set on User Unlocked
@@ -284,14 +252,7 @@
 
     /** Returns the active A2DP {@link BluetoothDevice} */
     private BluetoothDevice getA2dpActiveDevice() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getA2dpService().map(A2dpService::getActiveDevice).orElse(null);
-        }
-        A2dpService service = mFactory.getA2dpService();
-        if (service == null) {
-            return null;
-        }
-        return service.getActiveDevice();
+        return mAdapterService.getA2dpService().map(A2dpService::getActiveDevice).orElse(null);
     }
 
     /**
@@ -305,12 +266,7 @@
             mAdapterService.setActiveDevice(device, BluetoothAdapter.ACTIVE_DEVICE_AUDIO);
             return;
         }
-        A2dpService service = A2dpService.getA2dpService();
-        if (service == null) {
-            Log.d(TAG, "setA2dpActiveDevice: A2dp service not found");
-            return;
-        }
-        service.setActiveDevice(device);
+        mAdapterService.getA2dpService().ifPresent(a2dp -> a2dp.setActiveDevice(device));
     }
 
     /** Informs {@link AvrcpVolumeManager} that a new device is connected */
@@ -673,10 +629,6 @@
     /** Dump debugging information to the string builder */
     public void dump(StringBuilder sb) {
         sb.append("\nProfile: AvrcpTargetService:\n");
-        if (sInstance == null) {
-            sb.append("AvrcpTargetService not running");
-            return;
-        }
 
         StringBuilder tempBuilder = new StringBuilder();
         tempBuilder.append("AVRCP version: ").append(mAvrcpVersion).append("\n");
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java
index 03b4ae8..3b7e456 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java
@@ -35,19 +35,16 @@
 import com.android.bluetooth.BluetoothPrefs;
 import com.android.bluetooth.R;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dpsink.A2dpSinkService;
 import com.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService.BrowseResult;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ConnectableProfile;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.flags.Flags;
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -98,9 +95,6 @@
     public static final int DEVICE_STATE_INACTIVE = 0;
     public static final int DEVICE_STATE_ACTIVE = 1;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static AvrcpControllerService sService;
-
     private final Object mActiveDeviceLock = new Object();
 
     private final AvrcpControllerNativeInterface mNativeInterface;
@@ -163,7 +157,6 @@
         }
 
         mBrowseTree = new BrowseTree(mAdapterService, null);
-        setAvrcpControllerService(this);
 
         // Start the media browser service.
         Intent startIntent = new Intent(this, BluetoothMediaBrowserService.class);
@@ -186,7 +179,6 @@
         }
         mDeviceStateMap.clear();
 
-        setAvrcpControllerService(null);
         if (mCoverArtManager != null) {
             mCoverArtManager.cleanup();
             setComponentAvailable(COVER_ART_PROVIDER, false);
@@ -199,18 +191,6 @@
         return mBrowseTree;
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized AvrcpControllerService getAvrcpControllerService() {
-        return sService;
-    }
-
-    /** Testing API to inject a mock AvrcpControllerService */
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized void setAvrcpControllerService(AvrcpControllerService service) {
-        sService = service;
-    }
-
     /** Get the current active device */
     public BluetoothDevice getActiveDevice() {
         synchronized (mActiveDeviceLock) {
@@ -222,13 +202,8 @@
     @VisibleForTesting
     boolean setActiveDevice(BluetoothDevice device) {
         Log.d(TAG, "setActiveDevice(device=" + device + ")");
-        final Optional<A2dpSinkService> a2dpSinkService;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            a2dpSinkService = mAdapterService.getA2dpSinkService();
-        } else {
-            a2dpSinkService = Optional.ofNullable(A2dpSinkService.getA2dpSinkService());
-        }
-        if (a2dpSinkService.isEmpty()) {
+        final var a2dpSink = mAdapterService.getA2dpSinkService();
+        if (a2dpSink.isEmpty()) {
             Log.w(TAG, "setActiveDevice(device=" + device + "): A2DP Sink not available");
             return false;
         }
@@ -241,7 +216,7 @@
 
         // Try and update the active device
         synchronized (mActiveDeviceLock) {
-            if (a2dpSinkService.get().setActiveDevice(device)) {
+            if (a2dpSink.get().setActiveDevice(device)) {
                 mActiveDevice = device;
 
                 // Pause the old active device
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java
index 6ea210a..a8a4df6 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java
@@ -43,14 +43,12 @@
 import com.android.bluetooth.a2dpsink.A2dpSinkService;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.flags.Flags;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.State;
 import com.android.internal.util.StateMachine;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 
 /**
@@ -194,15 +192,6 @@
         debug("State machine created");
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<A2dpSinkService> getA2dpSinkService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getA2dpSinkService();
-        } else {
-            return Optional.ofNullable(A2dpSinkService.getA2dpSinkService());
-        }
-    }
-
     BrowseTree.BrowseNode findNode(String parentMediaId) {
         debug("findNode(mediaId=" + parentMediaId + ")");
         return mBrowseTree.findBrowseNodeByID(parentMediaId);
@@ -1241,7 +1230,10 @@
     }
 
     private int getFocusState() {
-        return getA2dpSinkService().map(A2dpSinkService::getFocusState).orElse(AudioManager.ERROR);
+        return mAdapterService
+                .getA2dpSinkService()
+                .map(A2dpSinkService::getFocusState)
+                .orElse(AudioManager.ERROR);
     }
 
     MediaSessionCompat.Callback mSessionCallbacks =
@@ -1310,7 +1302,8 @@
                 @Override
                 public void onPrepare() {
                     debug("onPrepare");
-                    getA2dpSinkService()
+                    mAdapterService
+                            .getA2dpSinkService()
                             .ifPresent(a2dpSink -> a2dpSink.requestAudioFocus(mDevice, true));
                 }
 
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpCoverArtProvider.java b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpCoverArtProvider.java
index 762ed0c..462433e 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpCoverArtProvider.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpCoverArtProvider.java
@@ -28,7 +28,6 @@
 import android.util.Log;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
@@ -170,15 +169,9 @@
     }
 
     private static Bitmap getImage(BluetoothDevice device, String imageUuid) {
-        final Optional<AvrcpControllerService> avrcpController;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            avrcpController =
-                    Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
-                            .flatMap(AdapterService::getAvrcpControllerService);
-        } else {
-            avrcpController =
-                    Optional.ofNullable(AvrcpControllerService.getAvrcpControllerService());
-        }
+        final var avrcpController =
+                Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+                        .flatMap(AdapterService::getAvrcpControllerService);
         if (avrcpController.isEmpty()) {
             debug("Failed to get service, cover art not available");
             return null;
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java b/android/app/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
index 6ab93a6..0d2cccd 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
@@ -35,7 +35,6 @@
 import com.android.bluetooth.BluetoothPrefs;
 import com.android.bluetooth.R;
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -209,15 +208,9 @@
     }
 
     BrowseResult getContents(final String parentMediaId) {
-        final Optional<AvrcpControllerService> avrcpController;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            avrcpController =
-                    Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
-                            .flatMap(AdapterService::getAvrcpControllerService);
-        } else {
-            avrcpController =
-                    Optional.ofNullable(AvrcpControllerService.getAvrcpControllerService());
-        }
+        final var avrcpController =
+                Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+                        .flatMap(AdapterService::getAvrcpControllerService);
         if (avrcpController.isEmpty()) {
             Log.w(TAG, "getContents(id=" + parentMediaId + "): AVRCP Controller Service not ready");
             return new BrowseResult(null, BrowseResult.ERROR_NO_AVRCP_SERVICE);
diff --git a/android/app/src/com/android/bluetooth/bas/BatteryService.java b/android/app/src/com/android/bluetooth/bas/BatteryService.java
index 5eb736d..169c7df 100644
--- a/android/app/src/com/android/bluetooth/bas/BatteryService.java
+++ b/android/app/src/com/android/bluetooth/bas/BatteryService.java
@@ -47,9 +47,6 @@
 public class BatteryService extends ConnectableProfile {
     private static final String TAG = BatteryService.class.getSimpleName();
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static BatteryService sBatteryService;
-
     private final Looper mLooper;
     private final Handler mHandler;
 
@@ -65,7 +62,6 @@
         super(BluetoothProfile.BATTERY, requireNonNull(adapterService));
         mHandler = new Handler(requireNonNull(looper));
         mLooper = looper;
-        setBatteryService(this);
     }
 
     public static boolean isEnabled() {
@@ -81,8 +77,6 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        setBatteryService(null);
-
         // Destroy state machines and stop handler thread
         synchronized (mStateMachines) {
             for (BatteryStateMachine sm : mStateMachines.values()) {
@@ -95,29 +89,6 @@
         mHandler.removeCallbacksAndMessages(null);
     }
 
-    /** Gets the BatteryService instance */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized BatteryService getBatteryService() {
-        if (sBatteryService == null) {
-            Log.w(TAG, "getBatteryService(): service is NULL");
-            return null;
-        }
-
-        if (!sBatteryService.isAvailable()) {
-            Log.w(TAG, "getBatteryService(): service is not available");
-            return null;
-        }
-        return sBatteryService;
-    }
-
-    /** Sets the battery service instance. It should be called only for testing purpose. */
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized void setBatteryService(BatteryService instance) {
-        Log.d(TAG, "setBatteryService(): set to: " + instance);
-        sBatteryService = instance;
-    }
-
     /** Connects to the battery service of the given device. */
     @Override
     public boolean connect(BluetoothDevice device) {
diff --git a/android/app/src/com/android/bluetooth/bass_client/BassClientService.java b/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
index 8efafa0..6f86831 100644
--- a/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
+++ b/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
@@ -71,10 +71,7 @@
 import com.android.bluetooth.Utils;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ConnectableProfile;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.bluetooth.le_audio.LeAudioStackEvent;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
@@ -140,7 +137,6 @@
         REMOVE
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
     private static BassClientService sService;
 
     private final Map<BluetoothDevice, BassClientStateMachine> mStateMachines = new HashMap<>();
@@ -204,9 +200,6 @@
     private static final BluetoothEventLogger sEventLogger =
             new BluetoothEventLogger(LOG_NB_EVENTS, TAG + " event log");
 
-    // TODO(b/422543753) Delete on flag cleanup
-    @VisibleForTesting ServiceFactory mServiceFactory = new ServiceFactory();
-
     private class BassScanCallbackWrapper extends IScannerCallback.Stub {
         private static final int SCANNER_ID_NOT_INITIALIZED = -2;
         private static final int SCANNER_ID_INITIALIZING = -1;
@@ -539,24 +532,6 @@
         setBassClientService(this);
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getCsipSetCoordinatorService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getCsipSetCoordinatorService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<LeAudioService> getLeAudioService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getLeAudioService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getLeAudioService());
-        }
-    }
-
     public static boolean isEnabled() {
         return BluetoothProperties.isProfileBapBroadcastAssistEnabled().orElse(false);
     }
@@ -791,13 +766,15 @@
         }
 
         if (mIsAssistantActive) {
-            getLeAudioService()
+            mAdapterService
+                    .getLeAudioService()
                     .ifPresent(leAudio -> leAudio.activeBroadcastAssistantNotification(false));
             mIsAssistantActive = false;
         }
 
         if (mIsAllowedContextOfActiveGroupModified) {
-            getLeAudioService()
+            mAdapterService
+                    .getLeAudioService()
                     .ifPresent(
                             leAudio ->
                                     leAudio.setActiveGroupAllowedContextMask(
@@ -874,7 +851,6 @@
         Log.d(TAG, "Updated mSyncHandleToBroadcastIdMap: " + mSyncHandleToBroadcastIdMap);
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
     private static synchronized void setBassClientService(BassClientService instance) {
         Log.d(TAG, "setBassClientService(): set to: " + instance);
         sService = instance;
@@ -974,7 +950,8 @@
                 && mPausedBroadcastSinks.isEmpty()) {
             mIsAssistantActive = false;
             mUnicastSourceStreamStatus = Optional.empty();
-            getLeAudioService()
+            mAdapterService
+                    .getLeAudioService()
                     .ifPresent(leAudio -> leAudio.activeBroadcastAssistantNotification(false));
         }
     }
@@ -999,7 +976,7 @@
     }
 
     private boolean isDevicePartOfActiveUnicastGroup(BluetoothDevice device) {
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             return false;
         }
@@ -1046,7 +1023,7 @@
     }
 
     private void checkAndSetGroupAllowedContextMask(BluetoothDevice sink) {
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             return;
         }
@@ -1066,7 +1043,7 @@
     }
 
     private void checkAndResetGroupAllowedContextMask() {
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             return;
         }
@@ -1108,7 +1085,7 @@
         }
         if (isLocalBroadcast(broadcastId)) {
             Log.d(TAG, "syncRequestForMetadata: local broadcast, updateMetadata");
-            final var leAudio = getLeAudioService();
+            final var leAudio = mAdapterService.getLeAudioService();
             if (!leAudio.isEmpty()) {
                 BluetoothLeBroadcastMetadata metadata =
                         leAudio.get().getBroadcastMetadata(broadcastId);
@@ -1223,7 +1200,7 @@
             checkAndStopBroadcastMonitoring();
         }
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             return;
         }
@@ -1358,7 +1335,7 @@
 
     private List<BluetoothDevice> getTargetDeviceList(BluetoothDevice device, boolean isGroupOp) {
         if (isGroupOp) {
-            final var csipClient = getCsipSetCoordinatorService();
+            final var csipClient = mAdapterService.getCsipSetCoordinatorService();
             if (csipClient.isPresent()) {
                 // Check for coordinated set of devices in the context of CAP
                 List<BluetoothDevice> csipDevices =
@@ -1500,7 +1477,7 @@
                 return;
             }
 
-            final var leAudio = getLeAudioService();
+            final var leAudio = mAdapterService.getLeAudioService();
             if (leAudio.isEmpty()) {
                 Log.d(TAG, "DialingOutTimeoutEvent: No available LeAudioService");
                 return;
@@ -1516,13 +1493,7 @@
         }
     }
 
-    /**
-     * Get the BassClientService instance
-     *
-     * @return BassClientService instance
-     */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized BassClientService getBassClientService() {
+    private static synchronized BassClientService getBassClientService() {
         if (sService == null) {
             Log.w(TAG, "getBassClientService(): service is NULL");
             return null;
@@ -1616,7 +1587,7 @@
             return BluetoothStatusCodes.ERROR_BAD_PARAMETERS;
         }
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (!leAudio.isEmpty()) {
             boolean isOnlyHighQualityAvailable =
                     metadata.getAudioConfigQuality()
@@ -3188,7 +3159,7 @@
         }
 
         if (isLocalBroadcast(sourceMetadata)) {
-            final var leAudio = getLeAudioService();
+            final var leAudio = mAdapterService.getLeAudioService();
             if (leAudio.isEmpty()
                     || !(leAudio.get().isPaused(sourceMetadata.getBroadcastId())
                             || leAudio.get().isPlaying(sourceMetadata.getBroadcastId()))) {
@@ -3627,7 +3598,7 @@
     }
 
     private boolean isLocalBroadcast(int broadcastId) {
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             return false;
         }
@@ -3747,7 +3718,7 @@
             return false;
         }
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.d(TAG, "isAudioSharingModeOn: No available LeAudioService");
             return false;
@@ -3758,7 +3729,7 @@
 
     /** Handle disconnection of potential broadcast sinks */
     public void handleDeviceDisconnection(BluetoothDevice sink, boolean isIntentional) {
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.d(TAG, "BluetoothLeBroadcastReceiveState: No available LeAudioService");
             return;
@@ -4384,7 +4355,7 @@
     }
 
     public boolean isPrimaryDeviceSyncedToExternalBroadcast() {
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.e(TAG, "no LeAudioService");
             return false;
diff --git a/android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java b/android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
index c030bb8..79b8129 100644
--- a/android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
+++ b/android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
@@ -37,12 +37,8 @@
 
 import com.android.bluetooth.BluetoothMethodProxy;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
 import com.android.bluetooth.btservice.storage.DatabaseManager;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hearingaid.HearingAidService;
-import com.android.bluetooth.hfp.HeadsetService;
-import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -51,7 +47,6 @@
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
-import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -120,7 +115,6 @@
 
     private final AdapterService mAdapterService;
     private final DatabaseManager mDatabaseManager;
-    private final ServiceFactory mFactory; // TODO(b/422543753) Delete on flag cleanup
     private HandlerThread mHandlerThread = null;
     private Handler mHandler = null;
     private final AudioManager mAudioManager;
@@ -402,7 +396,8 @@
             if (setHearingAidActiveDevice(device)) {
                 setA2dpActiveDevice(null, true);
                 setHfpActiveDevice(null);
-                getLeAudioService()
+                mAdapterService
+                        .getLeAudioService()
                         .ifPresentOrElse(
                                 leAudio ->
                                         setLeAudioActiveDevice(
@@ -416,7 +411,7 @@
         synchronized (mLock) {
             Log.d(TAG, "handleLeAudioConnected: " + device);
 
-            final var leAudio = getLeAudioService();
+            final var leAudio = mAdapterService.getLeAudioService();
             if (leAudio.isEmpty() || device == null) {
                 return;
             }
@@ -550,7 +545,7 @@
                             + ", mLeAudioActiveDevice="
                             + mLeAudioActiveDevice);
 
-            final var leAudio = getLeAudioService();
+            final var leAudio = mAdapterService.getLeAudioService();
             if (leAudio.isEmpty() || device == null) {
                 return;
             }
@@ -641,7 +636,7 @@
                 updateLeAudioActiveDeviceIfDualMode(mA2dpActiveDevice, device);
             } else {
                 if (Utils.isDualModeAudioEnabled()
-                     && !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
+                        && !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
                     Log.d(TAG, "Set LE Audio in-active as new classic device become active ");
                     setLeAudioActiveDevice(null, true);
                 }
@@ -731,7 +726,7 @@
                 }
             } else {
                 if (Utils.isDualModeAudioEnabled()
-                     && !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
+                        && !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
                     Log.d(TAG, "Set LE Audio in-active as new classic device become active ");
                     setLeAudioActiveDevice(null, true);
                 }
@@ -784,7 +779,8 @@
                             + device
                             + ", mHearingAidActiveDevices="
                             + mHearingAidActiveDevices);
-            getHearingAidService()
+            mAdapterService
+                    .getHearingAidService()
                     .ifPresent(
                             hearingAid -> {
                                 // Just assign locally the new value
@@ -894,50 +890,13 @@
         }
     }
 
-    ActiveDeviceManager(AdapterService service, ServiceFactory factory) {
+    ActiveDeviceManager(AdapterService service) {
         mAdapterService = service;
         mDatabaseManager = mAdapterService.getDatabaseManager();
-        mFactory = factory;
         mAudioManager = service.getSystemService(AudioManager.class);
         mAudioManagerAudioDeviceCallback = new AudioManagerAudioDeviceCallback();
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<A2dpService> getA2dpService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getA2dpService();
-        } else {
-            return Optional.ofNullable(mFactory.getA2dpService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<LeAudioService> getLeAudioService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getLeAudioService();
-        } else {
-            return Optional.ofNullable(mFactory.getLeAudioService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HearingAidService> getHearingAidService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHearingAidService();
-        } else {
-            return Optional.ofNullable(mFactory.getHearingAidService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HeadsetService> getHeadsetService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHeadsetService();
-        } else {
-            return Optional.ofNullable(mFactory.getHeadsetService());
-        }
-    }
-
     void start() {
         Log.d(TAG, "start()");
 
@@ -986,7 +945,7 @@
             }
         }
 
-        final var a2dp = getA2dpService();
+        final var a2dp = mAdapterService.getA2dpService();
         if (a2dp.isEmpty()) {
             return false;
         }
@@ -1015,7 +974,7 @@
                 mHandler.removeCallbacksAndMessages(mPendingActiveDevice);
                 mPendingActiveDevice = null;
             }
-            final var headset = getHeadsetService();
+            final var headset = mAdapterService.getHeadsetService();
             if (headset.isEmpty()) {
                 return false;
             }
@@ -1046,7 +1005,7 @@
                         + ")"
                         + (device == null ? " hasFallbackDevice=" + hasFallbackDevice : ""));
 
-        final var hearingAid = getHearingAidService();
+        final var hearingAid = mAdapterService.getHearingAidService();
         if (hearingAid.isEmpty()) {
             return false;
         }
@@ -1083,7 +1042,7 @@
             @Nullable BluetoothDevice device, boolean hasFallbackDevice) {
         Log.d(TAG, "setLeAudioActiveDevice(" + device + ", " + hasFallbackDevice + ")");
         synchronized (mLock) {
-            final var leAudio = getLeAudioService();
+            final var leAudio = mAdapterService.getLeAudioService();
             if (leAudio.isEmpty()) {
                 return false;
             }
@@ -1137,7 +1096,7 @@
             return false;
         }
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.e(TAG, "LeAudioService not available");
             return false;
@@ -1165,7 +1124,7 @@
     private boolean setFallbackDeviceActiveLocked(BluetoothDevice recentlyRemovedDevice) {
         Log.d(TAG, "setFallbackDeviceActive, recently removed: " + recentlyRemovedDevice);
         List<BluetoothDevice> connectedHearingAidDevices = new ArrayList<>();
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (!mHearingAidConnectedDevices.isEmpty()) {
             connectedHearingAidDevices.addAll(mHearingAidConnectedDevices);
         }
@@ -1216,14 +1175,14 @@
             }
         }
 
-        final var a2dp = getA2dpService();
+        final var a2dp = mAdapterService.getA2dpService();
         BluetoothDevice a2dpFallbackDevice = null;
         if (a2dp.isPresent()) {
             a2dpFallbackDevice = a2dp.get().getFallbackDevice();
             Log.d(TAG, "a2dpFallbackDevice: " + a2dpFallbackDevice);
         }
 
-        final var headset = getHeadsetService();
+        final var headset = mAdapterService.getHeadsetService();
         BluetoothDevice headsetFallbackDevice = null;
         if (headset.isPresent()) {
             headsetFallbackDevice = headset.get().getFallbackDevice();
@@ -1374,7 +1333,7 @@
 
     @GuardedBy("mLock")
     private long getHearingAidActiveHiSyncIdLocked() {
-        final var hearingAid = getHearingAidService();
+        final var hearingAid = mAdapterService.getHearingAidService();
         if (hearingAid.isPresent() && !mHearingAidActiveDevices.isEmpty()) {
             return hearingAid.get().getHiSyncId(mHearingAidActiveDevices.iterator().next());
         }
@@ -1387,7 +1346,7 @@
      * @return {@code true} if is broadcasting audio, {@code false} otherwise
      */
     private boolean isBroadcastingAudio() {
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.d(TAG, "isBroadcastingAudio: false - there is no LeAudioService");
             return false;
@@ -1459,10 +1418,10 @@
             sb.append("    Active: ");
             getDevicesInfo(sb, mA2dpActiveDevice);
             sb.append("    Fallback: ");
-            final var a2dpService = getA2dpService();
+            final var a2dp = mAdapterService.getA2dpService();
             BluetoothDevice a2dpFallbackDevice = null;
-            if (!a2dpService.isEmpty()) {
-                a2dpFallbackDevice = a2dpService.get().getFallbackDevice();
+            if (!a2dp.isEmpty()) {
+                a2dpFallbackDevice = a2dp.get().getFallbackDevice();
             }
             getDevicesInfo(sb, a2dpFallbackDevice);
             sb.append("    Most recent: ");
@@ -1476,10 +1435,10 @@
             sb.append("    Active: ");
             getDevicesInfo(sb, mHfpActiveDevice);
             sb.append("    Fallback: ");
-            final var headsetService = getHeadsetService();
+            final var headset = mAdapterService.getHeadsetService();
             BluetoothDevice headsetFallbackDevice = null;
-            if (!headsetService.isEmpty()) {
-                headsetFallbackDevice = headsetService.get().getFallbackDevice();
+            if (!headset.isEmpty()) {
+                headsetFallbackDevice = headset.get().getFallbackDevice();
             }
             getDevicesInfo(sb, headsetFallbackDevice);
             sb.append("    Most recent: ");
diff --git a/android/app/src/com/android/bluetooth/btservice/AdapterService.java b/android/app/src/com/android/bluetooth/btservice/AdapterService.java
index 4af8f59..ad9bd86 100644
--- a/android/app/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/android/app/src/com/android/bluetooth/btservice/AdapterService.java
@@ -204,7 +204,6 @@
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.function.Supplier;
 import java.util.regex.Pattern;
@@ -306,7 +305,6 @@
     private final SdpManagerNativeInterface mSdpManagerNativeInterface;
     private final SilenceDeviceManager mSilenceDeviceManager;
     private final DatabaseManager mDatabaseManager;
-    private final ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
 
     private boolean mIsMediaProfileConnected;
 
@@ -482,8 +480,7 @@
         mAdvertiseManagerNativeInterface = advertiseManagerNativeInterface;
         mDistanceMeasurementNativeInterface = distanceMeasurementNativeInterface;
         mSdpManagerNativeInterface = sdpManagerNativeInterface;
-        mServiceFactory = new ServiceFactory();
-        mSilenceDeviceManager = new SilenceDeviceManager(this, mServiceFactory, mLooper);
+        mSilenceDeviceManager = new SilenceDeviceManager(this, mLooper);
         mDatabaseManager = new DatabaseManager(this);
     }
 
@@ -1027,12 +1024,12 @@
          */
         if (!isAutomotiveDevice && getResources().getBoolean(R.bool.enable_phone_policy)) {
             Log.i(TAG, "Phone policy enabled");
-            mPhonePolicy = Optional.of(new PhonePolicy(this, mLooper, mServiceFactory));
+            mPhonePolicy = Optional.of(new PhonePolicy(this, mLooper));
         } else {
             Log.i(TAG, "Phone policy disabled");
         }
 
-        mActiveDeviceManager = new ActiveDeviceManager(this, mServiceFactory);
+        mActiveDeviceManager = new ActiveDeviceManager(this);
         mActiveDeviceManager.start();
 
         mBtCompanionManager = new CompanionManager(this);
@@ -1219,43 +1216,6 @@
         }
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    private static final Map<Integer, Function<AdapterService, ProfileService>>
-            PROFILE_CONSTRUCTORS =
-                    Map.ofEntries(
-                            Map.entry(BluetoothProfile.A2DP, A2dpService::new),
-                            Map.entry(BluetoothProfile.A2DP_SINK, A2dpSinkService::new),
-                            Map.entry(BluetoothProfile.AVRCP, AvrcpTargetService::new),
-                            Map.entry(
-                                    BluetoothProfile.AVRCP_CONTROLLER, AvrcpControllerService::new),
-                            Map.entry(
-                                    BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT,
-                                    BassClientService::new),
-                            Map.entry(BluetoothProfile.BATTERY, BatteryService::new),
-                            Map.entry(
-                                    BluetoothProfile.CSIP_SET_COORDINATOR,
-                                    CsipSetCoordinatorService::new),
-                            Map.entry(BluetoothProfile.HAP_CLIENT, HapClientService::new),
-                            Map.entry(BluetoothProfile.HEADSET, HeadsetService::new),
-                            Map.entry(BluetoothProfile.HEADSET_CLIENT, HeadsetClientService::new),
-                            Map.entry(BluetoothProfile.HEARING_AID, HearingAidService::new),
-                            Map.entry(BluetoothProfile.HID_DEVICE, HidDeviceService::new),
-                            Map.entry(BluetoothProfile.HID_HOST, HidHostService::new),
-                            Map.entry(BluetoothProfile.GATT, GattService::new),
-                            Map.entry(BluetoothProfile.LE_AUDIO, LeAudioService::new),
-                            Map.entry(BluetoothProfile.LE_AUDIO_BROADCAST, LeAudioBroadcast::new),
-                            Map.entry(BluetoothProfile.LE_CALL_CONTROL, TbsService::new),
-                            Map.entry(BluetoothProfile.MAP, BluetoothMapService::new),
-                            Map.entry(BluetoothProfile.MAP_CLIENT, MapClientService::new),
-                            Map.entry(BluetoothProfile.MCP_SERVER, McpService::new),
-                            Map.entry(BluetoothProfile.OPP, BluetoothOppService::new),
-                            Map.entry(BluetoothProfile.PAN, PanService::new),
-                            Map.entry(BluetoothProfile.PBAP, BluetoothPbapService::new),
-                            Map.entry(BluetoothProfile.PBAP_CLIENT, PbapClientService::new),
-                            Map.entry(BluetoothProfile.SAP, SapService::new),
-                            Map.entry(BluetoothProfile.VOLUME_CONTROL, VolumeControlService::new),
-                            Map.entry(BluetoothProfile.VAPS_SERVER, VapsServerService::new));
-
     /**
      * Constructs a {@link ProfileService} instance for the given profile ID.
      *
@@ -1316,25 +1276,10 @@
                 return;
             }
             Log.i(TAG, logHdr + " starting profile");
-            final ProfileService profileService;
-            if (Flags.adapterServiceProfilesUseOptional()) {
-                profileService = constructProfile(profileId);
-            } else {
-                profileService = PROFILE_CONSTRUCTORS.get(profileId).apply(this);
-            }
+            final var profileService = constructProfile(profileId);
             mStartedProfiles.put(profileId, profileService);
             addProfile(profileService);
             profileService.setAvailable(true);
-            // With `Flags.adapterServiceProfilesUseOptional()` on, this assignment is not required
-            // as it already happens within `constructProfile`
-            if (!Flags.adapterServiceProfilesUseOptional()) {
-                // With `Flags.onlyStartScanDuringBleOn()` GattService initialization is pushed back
-                // to `ON` state instead of `BLE_ON`. Here we ensure mGattService is set prior to
-                // other Profiles using it.
-                if (profileId == BluetoothProfile.GATT && Flags.onlyStartScanDuringBleOn()) {
-                    mGattService = (GattService) profileService;
-                }
-            }
             onProfileServiceStateChanged(profileService, BluetoothAdapter.STATE_ON);
         } else if (state == BluetoothAdapter.STATE_OFF) {
             ProfileService profileService = mStartedProfiles.remove(profileId);
diff --git a/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java b/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
index 288c71a..3feec3f 100644
--- a/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
+++ b/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
@@ -43,17 +43,9 @@
 
 import com.android.bluetooth.BluetoothStatsLog;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
-import com.android.bluetooth.a2dpsink.A2dpSinkService;
 import com.android.bluetooth.btservice.RemoteDevices.DeviceProperties;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.hap.HapClientService;
-import com.android.bluetooth.hfp.HeadsetService;
-import com.android.bluetooth.hfpclient.HeadsetClientService;
-import com.android.bluetooth.hid.HidHostService;
-import com.android.bluetooth.le_audio.LeAudioService;
-import com.android.bluetooth.pbapclient.PbapClientService;
 import com.android.bluetooth.vc.VolumeControlService;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.State;
@@ -759,100 +751,41 @@
 
     @VisibleForTesting
     void clearProfilePriority(BluetoothDevice device) {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            // Preserving existing order
-            Stream.of(
-                            mAdapterService.getHidHostService(),
-                            mAdapterService.getA2dpService(),
-                            mAdapterService.getHeadsetService(),
-                            mAdapterService.getHeadsetClientService(),
-                            mAdapterService.getA2dpSinkService(),
-                            mAdapterService.getPbapClientService(),
-                            mAdapterService.getLeAudioService(),
-                            mAdapterService.getCsipSetCoordinatorService(),
-                            mAdapterService.getVolumeControlService(),
-                            mAdapterService.getHapClientService())
-                    .flatMap(Optional::stream)
-                    .forEach(
-                            profile -> {
-                                if (profile.getProfileId() == VOLUME_CONTROL
-                                        && Flags.vcpOnMainLooper()
-                                        && !Flags.bondStateMachineLooper()) {
-                                    ((VolumeControlService) profile)
-                                            .syncPost(
-                                                    vcs ->
-                                                            vcs.setConnectionPolicy(
-                                                                    device,
-                                                                    CONNECTION_POLICY_UNKNOWN));
-                                } else if (profile.getProfileId() == HAP_CLIENT
-                                        && Flags.hapOnMainLooper()
-                                        && !Flags.bondStateMachineLooper()) {
-                                    ((HapClientService) profile)
-                                            .syncPost(
-                                                    hap ->
-                                                            hap.setConnectionPolicy(
-                                                                    device,
-                                                                    CONNECTION_POLICY_UNKNOWN));
-                                } else {
-                                    profile.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-                                }
-                            });
-        } else {
-            HidHostService hidService = HidHostService.getHidHostService();
-            A2dpService a2dpService = A2dpService.getA2dpService();
-            HeadsetService headsetService = HeadsetService.getHeadsetService();
-            HeadsetClientService headsetClientService =
-                    HeadsetClientService.getHeadsetClientService();
-            A2dpSinkService a2dpSinkService = A2dpSinkService.getA2dpSinkService();
-            PbapClientService pbapClientService = PbapClientService.getPbapClientService();
-            LeAudioService leAudioService = LeAudioService.getLeAudioService();
-            CsipSetCoordinatorService csipSetCoordinatorService =
-                    CsipSetCoordinatorService.getCsipSetCoordinatorService();
-            VolumeControlService volumeControlService =
-                    VolumeControlService.getVolumeControlService();
-            HapClientService hapClientService = HapClientService.getHapClientService();
-
-            if (hidService != null) {
-                hidService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-            }
-            if (a2dpService != null) {
-                a2dpService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-            }
-            if (headsetService != null) {
-                headsetService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-            }
-            if (headsetClientService != null) {
-                headsetClientService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-            }
-            if (a2dpSinkService != null) {
-                a2dpSinkService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-            }
-            if (pbapClientService != null) {
-                pbapClientService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-            }
-            if (leAudioService != null) {
-                leAudioService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-            }
-            if (csipSetCoordinatorService != null) {
-                csipSetCoordinatorService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-            }
-            if (volumeControlService != null) {
-                if (Flags.vcpOnMainLooper() && !Flags.bondStateMachineLooper()) {
-                    volumeControlService.syncPost(
-                            vcs -> vcs.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN));
-                } else {
-                    volumeControlService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-                }
-            }
-            if (hapClientService != null) {
-                if (Flags.hapOnMainLooper() && !Flags.bondStateMachineLooper()) {
-                    hapClientService.syncPost(
-                            hap -> hap.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN));
-                } else {
-                    hapClientService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
-                }
-            }
-        }
+        // Preserving existing order
+        Stream.of(
+                        mAdapterService.getHidHostService(),
+                        mAdapterService.getA2dpService(),
+                        mAdapterService.getHeadsetService(),
+                        mAdapterService.getHeadsetClientService(),
+                        mAdapterService.getA2dpSinkService(),
+                        mAdapterService.getPbapClientService(),
+                        mAdapterService.getLeAudioService(),
+                        mAdapterService.getCsipSetCoordinatorService(),
+                        mAdapterService.getVolumeControlService(),
+                        mAdapterService.getHapClientService())
+                .flatMap(Optional::stream)
+                .forEach(
+                        profile -> {
+                            if (profile.getProfileId() == VOLUME_CONTROL
+                                    && Flags.vcpOnMainLooper()
+                                    && !Flags.bondStateMachineLooper()) {
+                                ((VolumeControlService) profile)
+                                        .syncPost(
+                                                vcs ->
+                                                        vcs.setConnectionPolicy(
+                                                                device, CONNECTION_POLICY_UNKNOWN));
+                            } else if (profile.getProfileId() == HAP_CLIENT
+                                    && Flags.hapOnMainLooper()
+                                    && !Flags.bondStateMachineLooper()) {
+                                ((HapClientService) profile)
+                                        .syncPost(
+                                                hap ->
+                                                        hap.setConnectionPolicy(
+                                                                device, CONNECTION_POLICY_UNKNOWN));
+                            } else {
+                                profile.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
+                            }
+                        });
     }
 
     public static String bondStateToString(int state) {
diff --git a/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java b/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
index 19307dc..7f9fe21 100644
--- a/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
+++ b/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
@@ -45,26 +45,15 @@
 
 import com.android.bluetooth.R;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
-import com.android.bluetooth.bas.BatteryService;
-import com.android.bluetooth.bass_client.BassClientService;
 import com.android.bluetooth.btservice.storage.DatabaseManager;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hap.HapClientService;
-import com.android.bluetooth.hearingaid.HearingAidService;
-import com.android.bluetooth.hfp.HeadsetService;
 import com.android.bluetooth.hid.HidHostService;
-import com.android.bluetooth.le_audio.LeAudioService;
-import com.android.bluetooth.pan.PanService;
-import com.android.bluetooth.vc.VolumeControlService;
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.time.Duration;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 
 // Describes the phone policy
@@ -95,7 +84,6 @@
 
     private final DatabaseManager mDatabaseManager;
     private final AdapterService mAdapterService;
-    private final ServiceFactory mFactory; // TODO(b/422543753) Delete on flag cleanup
     private final Handler mHandler;
     private final Set<BluetoothDevice> mHeadsetRetrySet = new HashSet<>();
     private final Set<BluetoothDevice> mA2dpRetrySet = new HashSet<>();
@@ -104,10 +92,9 @@
     @VisibleForTesting boolean mAutoConnectProfilesSupported;
     @VisibleForTesting boolean mLeAudioEnabledByDefault;
 
-    PhonePolicy(AdapterService adapterService, Looper looper, ServiceFactory factory) {
+    PhonePolicy(AdapterService adapterService, Looper looper) {
         mAdapterService = adapterService;
         mDatabaseManager = requireNonNull(mAdapterService.getDatabaseManager());
-        mFactory = factory;
         mHandler = new Handler(looper);
         mAutoConnectProfilesSupported =
                 SystemProperties.getBoolean(AUTO_CONNECT_PROFILES_PROPERTY, false);
@@ -116,105 +103,6 @@
         mAdapterService.registerBluetoothStateCallback(mHandler::post, this);
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<A2dpService> getA2dpService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getA2dpService();
-        } else {
-            return Optional.ofNullable(mFactory.getA2dpService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<BassClientService> getBassClientService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getBassClientService();
-        } else {
-            return Optional.ofNullable(mFactory.getBassClientService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<BatteryService> getBatteryService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getBatteryService();
-        } else {
-            return Optional.ofNullable(mFactory.getBatteryService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getCsipSetCoordinatorService();
-        } else {
-            return Optional.ofNullable(mFactory.getCsipSetCoordinatorService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HapClientService> getHapClientService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHapClientService();
-        } else {
-            return Optional.ofNullable(mFactory.getHapClientService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HeadsetService> getHeadsetService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHeadsetService();
-        } else {
-            return Optional.ofNullable(mFactory.getHeadsetService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HearingAidService> getHearingAidService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHearingAidService();
-        } else {
-            return Optional.ofNullable(mFactory.getHearingAidService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HidHostService> getHidHostService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHidHostService();
-        } else {
-            return Optional.ofNullable(mFactory.getHidHostService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<LeAudioService> getLeAudioService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getLeAudioService();
-        } else {
-            return Optional.ofNullable(mFactory.getLeAudioService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<PanService> getPanService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getPanService();
-        } else {
-            return Optional.ofNullable(mFactory.getPanService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<VolumeControlService> getVolumeControlService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getVolumeControlService();
-        } else {
-            return Optional.ofNullable(mFactory.getVolumeControlService());
-        }
-    }
-
     @Override
     public void onBluetoothStateChange(int prevState, int newState) {
         // Only act if the adapter has actually changed state from non-ON to ON.
@@ -259,7 +147,7 @@
     boolean isLeAudioOnlyGroup(BluetoothDevice device) {
         String log = "isLeAudioOnlyGroup(" + device + "): ";
 
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
         if (csipSetCoordinator.isEmpty()) {
             Log.d(TAG, log + "csipSetCoordinatorService is null");
             return false;
@@ -344,7 +232,7 @@
 
     // return true if device support Hearing Access Service and it has not been manually disabled
     private boolean shouldEnableHapByDefault(BluetoothDevice device, ParcelUuid[] uuids) {
-        final var hap = getHapClientService();
+        final var hap = mAdapterService.getHapClientService();
         if (hap.isEmpty()) {
             Log.e(TAG, "shouldEnableHapByDefault: No HapClientService");
             return false;
@@ -365,7 +253,7 @@
             return false;
         }
 
-        final var hap = getHapClientService();
+        final var hap = mAdapterService.getHapClientService();
         if (hap.isEmpty()) {
             Log.e(TAG, "shouldBlockBroadcastForHapDevice: No HapClientService");
             return false;
@@ -383,17 +271,17 @@
     // Policy implementation, all functions MUST be private
     private void processInitProfilePriorities(BluetoothDevice device, ParcelUuid[] uuids) {
         String log = "processInitProfilePriorities(" + device + "): ";
-        final var a2dp = getA2dpService();
-        final var battery = getBatteryService();
-        final var bassClient = getBassClientService();
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
-        final var hapClient = getHapClientService();
-        final var headset = getHeadsetService();
-        final var hearingAid = getHearingAidService();
-        final var hidHost = getHidHostService();
-        final var leAudio = getLeAudioService();
-        final var pan = getPanService();
-        final var volumeControl = getVolumeControlService();
+        final var a2dp = mAdapterService.getA2dpService();
+        final var battery = mAdapterService.getBatteryService();
+        final var bassClient = mAdapterService.getBassClientService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
+        final var hapClient = mAdapterService.getHapClientService();
+        final var headset = mAdapterService.getHeadsetService();
+        final var hearingAid = mAdapterService.getHearingAidService();
+        final var hidHost = mAdapterService.getHidHostService();
+        final var leAudio = mAdapterService.getLeAudioService();
+        final var pan = mAdapterService.getPanService();
+        final var volumeControl = mAdapterService.getVolumeControlService();
 
         final boolean isBypassLeAudioAllowlist =
                 SystemProperties.getBoolean(BYPASS_LE_AUDIO_ALLOWLIST_PROPERTY, false);
@@ -629,7 +517,7 @@
     void handleConnectionPolicyAfterCsipConnect(BluetoothDevice device) {
         String log = "handleConnectionPolicyAfterCsipConnect(" + device + "): ";
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()
                 || (leAudio.get().getConnectionPolicy(device) == CONNECTION_POLICY_ALLOWED)
                 || !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
@@ -641,7 +529,7 @@
         boolean isAnyOtherGroupMemberAllowed = false;
 
         /* isLeAudioOnlyGroup returning true implies csipSetCoordinatorService is valid */
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
         if (csipSetCoordinator.isPresent()) {
             /* Since isLeAudioOnlyGroup return true it means csipSetCoordinatorService is valid */
             groupDevices =
@@ -745,10 +633,10 @@
         Log.d(TAG, log + "isDualMode=" + isDualMode);
 
         if (profile == BluetoothProfile.LE_AUDIO) {
-            final var a2dp = getA2dpService();
-            final var headset = getHeadsetService();
-            final var leAudio = getLeAudioService();
-            final var hearingAid = getHearingAidService();
+            final var a2dp = mAdapterService.getA2dpService();
+            final var headset = mAdapterService.getHeadsetService();
+            final var leAudio = mAdapterService.getLeAudioService();
+            final var hearingAid = mAdapterService.getHearingAidService();
 
             if (leAudio.isEmpty()) {
                 Log.d(TAG, log + "LeAudioService is null");
@@ -786,11 +674,11 @@
     private boolean handleAllProfilesDisconnected(BluetoothDevice device) {
         boolean atLeastOneProfileConnectedForDevice = false;
         boolean allProfilesEmpty = true;
-        final var a2dp = getA2dpService();
-        final var headset = getHeadsetService();
-        final var leAudio = getLeAudioService();
-        final var pan = getPanService();
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
+        final var a2dp = mAdapterService.getA2dpService();
+        final var headset = mAdapterService.getHeadsetService();
+        final var leAudio = mAdapterService.getLeAudioService();
+        final var pan = mAdapterService.getPanService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
 
         if (headset.isPresent()) {
             List<BluetoothDevice> hsConnDevList = headset.get().getConnectedDevices();
@@ -873,7 +761,7 @@
 
     private void autoConnectA2dp(BluetoothDevice device) {
         String log = "autoConnectA2dp(" + device + "): ";
-        final var a2dp = getA2dpService();
+        final var a2dp = mAdapterService.getA2dpService();
         if (a2dp.isEmpty()) {
             Log.w(TAG, log + "Failed to connect, A2DP service is null");
             return;
@@ -889,7 +777,7 @@
 
     private void autoConnectHeadset(BluetoothDevice device) {
         String log = "autoConnectHeadset(" + device + "): ";
-        final var headset = getHeadsetService();
+        final var headset = mAdapterService.getHeadsetService();
         if (headset.isEmpty()) {
             Log.w(TAG, log + "Failed to connect, HFP service is null");
             return;
@@ -905,7 +793,7 @@
 
     private void autoConnectHidHost(BluetoothDevice device) {
         String log = "autoConnectHidHost(" + device + "): ";
-        final var hidHost = getHidHostService();
+        final var hidHost = mAdapterService.getHidHostService();
         if (hidHost.isEmpty()) {
             Log.w(TAG, log + "Failed to connect, HID service is null");
             return;
@@ -962,16 +850,16 @@
             return;
         }
 
-        final var a2dp = getA2dpService();
-        final var bassClient = getBassClientService();
-        final var battery = getBatteryService();
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
-        final var hapClient = getHapClientService();
-        final var headset = getHeadsetService();
-        final var hidHost = getHidHostService();
-        final var leAudio = getLeAudioService();
-        final var pan = getPanService();
-        final var volumeControl = getVolumeControlService();
+        final var a2dp = mAdapterService.getA2dpService();
+        final var bassClient = mAdapterService.getBassClientService();
+        final var battery = mAdapterService.getBatteryService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
+        final var hapClient = mAdapterService.getHapClientService();
+        final var headset = mAdapterService.getHeadsetService();
+        final var hidHost = mAdapterService.getHidHostService();
+        final var leAudio = mAdapterService.getLeAudioService();
+        final var pan = mAdapterService.getPanService();
+        final var volumeControl = mAdapterService.getVolumeControlService();
 
         if (headset.isPresent()) {
             if (!mHeadsetRetrySet.contains(device)
diff --git a/android/app/src/com/android/bluetooth/btservice/RemoteDevices.java b/android/app/src/com/android/bluetooth/btservice/RemoteDevices.java
index f459a4c..2fe3baa 100644
--- a/android/app/src/com/android/bluetooth/btservice/RemoteDevices.java
+++ b/android/app/src/com/android/bluetooth/btservice/RemoteDevices.java
@@ -59,7 +59,6 @@
 import com.android.bluetooth.BluetoothStatsLog;
 import com.android.bluetooth.R;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.bas.BatteryService;
 import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.hfp.HeadsetHalConstants;
 import com.android.internal.annotations.VisibleForTesting;
@@ -75,7 +74,6 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.function.Predicate;
 
@@ -191,15 +189,6 @@
                 };
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<BatteryService> getBatteryService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getBatteryService();
-        } else {
-            return Optional.ofNullable(BatteryService.getBatteryService());
-        }
-    }
-
     /**
      * Reset should be called when the state of this object needs to be cleared RemoteDevices is
      * still usable after reset
@@ -1659,7 +1648,8 @@
                     || state == BluetoothAdapter.STATE_BLE_TURNING_ON) {
                 intent = new Intent(BluetoothAdapter.ACTION_BLE_ACL_CONNECTED);
             }
-            getBatteryService()
+            mAdapterService
+                    .getBatteryService()
                     .filter(battery -> transport == TRANSPORT_LE)
                     .ifPresent(battery -> battery.connectIfPossible(device));
             mAdapterService.updatePhonePolicyOnAclConnect(device);
@@ -1691,7 +1681,8 @@
             }
             // Reset battery level on complete disconnection
             if (mAdapterService.getConnectionState(device) == 0) {
-                getBatteryService()
+                mAdapterService
+                        .getBatteryService()
                         .filter(battery -> transport == TRANSPORT_LE)
                         .filter(battery -> battery.getConnectionState(device) != STATE_DISCONNECTED)
                         .ifPresent(battery -> battery.disconnect(device));
@@ -2323,7 +2314,8 @@
 
     @VisibleForTesting
     boolean hasBatteryService(BluetoothDevice device) {
-        return getBatteryService()
+        return mAdapterService
+                .getBatteryService()
                 .map(battery -> battery.getConnectionState(device) == STATE_CONNECTED)
                 .orElse(false);
     }
diff --git a/android/app/src/com/android/bluetooth/btservice/ServiceFactory.java b/android/app/src/com/android/bluetooth/btservice/ServiceFactory.java
deleted file mode 100644
index b7553ad..0000000
--- a/android/app/src/com/android/bluetooth/btservice/ServiceFactory.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2017 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.bluetooth.btservice;
-
-import com.android.bluetooth.a2dp.A2dpService;
-import com.android.bluetooth.avrcp.AvrcpTargetService;
-import com.android.bluetooth.bas.BatteryService;
-import com.android.bluetooth.bass_client.BassClientService;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
-import com.android.bluetooth.hap.HapClientService;
-import com.android.bluetooth.hearingaid.HearingAidService;
-import com.android.bluetooth.hfp.HeadsetService;
-import com.android.bluetooth.hid.HidHostService;
-import com.android.bluetooth.le_audio.LeAudioService;
-import com.android.bluetooth.mcp.McpService;
-import com.android.bluetooth.pan.PanService;
-import com.android.bluetooth.vc.VolumeControlService;
-
-// Factory class to create instances of static services. Useful in mocking the service objects.
-@Deprecated // TODO(b/422543753) Delete on flag cleanup
-public class ServiceFactory {
-    public A2dpService getA2dpService() {
-        return A2dpService.getA2dpService();
-    }
-
-    public CsipSetCoordinatorService getCsipSetCoordinatorService() {
-        return CsipSetCoordinatorService.getCsipSetCoordinatorService();
-    }
-
-    public HeadsetService getHeadsetService() {
-        return HeadsetService.getHeadsetService();
-    }
-
-    public HidHostService getHidHostService() {
-        return HidHostService.getHidHostService();
-    }
-
-    public PanService getPanService() {
-        return PanService.getPanService();
-    }
-
-    public HearingAidService getHearingAidService() {
-        return HearingAidService.getHearingAidService();
-    }
-
-    public LeAudioService getLeAudioService() {
-        return LeAudioService.getLeAudioService();
-    }
-
-    public AvrcpTargetService getAvrcpTargetService() {
-        return AvrcpTargetService.get();
-    }
-
-    public McpService getMcpService() {
-        return McpService.getMcpService();
-    }
-
-    public VolumeControlService getVolumeControlService() {
-        return VolumeControlService.getVolumeControlService();
-    }
-
-    public HapClientService getHapClientService() {
-        return HapClientService.getHapClientService();
-    }
-
-    public BassClientService getBassClientService() {
-        return BassClientService.getBassClientService();
-    }
-
-    public BatteryService getBatteryService() {
-        return BatteryService.getBatteryService();
-    }
-}
diff --git a/android/app/src/com/android/bluetooth/btservice/SilenceDeviceManager.java b/android/app/src/com/android/bluetooth/btservice/SilenceDeviceManager.java
index 44fe024..0efaa79 100644
--- a/android/app/src/com/android/bluetooth/btservice/SilenceDeviceManager.java
+++ b/android/app/src/com/android/bluetooth/btservice/SilenceDeviceManager.java
@@ -29,15 +29,12 @@
 import android.util.Log;
 
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hfp.HeadsetService;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
 /**
  * The silence device manager controls silence mode for A2DP, HFP, and AVRCP.
@@ -54,7 +51,6 @@
     private static final String TAG = Utils.BT_PREFIX + SilenceDeviceManager.class.getSimpleName();
 
     private final AdapterService mAdapterService;
-    private final ServiceFactory mFactory; // TODO(b/422543753) Delete on flag cleanup
     private final Handler mHandler;
 
     private final Map<BluetoothDevice, Boolean> mSilenceDevices = new HashMap<>();
@@ -188,9 +184,8 @@
         }
     }
 
-    SilenceDeviceManager(AdapterService service, ServiceFactory factory, Looper looper) {
+    SilenceDeviceManager(AdapterService service, Looper looper) {
         mAdapterService = service;
-        mFactory = factory;
         mHandler = new SilenceDeviceManagerHandler(looper);
     }
 
@@ -227,21 +222,10 @@
         final var stateFinal = state;
         mSilenceDevices.replace(device, stateFinal);
 
-        final Optional<A2dpService> a2dpService;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            a2dpService = mAdapterService.getA2dpService();
-        } else {
-            a2dpService = Optional.ofNullable(mFactory.getA2dpService());
-        }
-        a2dpService.ifPresent(a2dp -> a2dp.setSilenceMode(device, stateFinal));
-
-        final Optional<HeadsetService> headsetService;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            headsetService = mAdapterService.getHeadsetService();
-        } else {
-            headsetService = Optional.ofNullable(mFactory.getHeadsetService());
-        }
-        headsetService.ifPresent(headset -> headset.setSilenceMode(device, stateFinal));
+        mAdapterService.getA2dpService().ifPresent(a2dp -> a2dp.setSilenceMode(device, stateFinal));
+        mAdapterService
+                .getHeadsetService()
+                .ifPresent(headset -> headset.setSilenceMode(device, stateFinal));
 
         Log.i(TAG, "Silence mode change " + device + ": " + oldState + " -> " + stateFinal);
         broadcastSilenceStateChange(device);
diff --git a/android/app/src/com/android/bluetooth/csip/CsipSetCoordinatorService.java b/android/app/src/com/android/bluetooth/csip/CsipSetCoordinatorService.java
index a2332a6..bfd504a 100644
--- a/android/app/src/com/android/bluetooth/csip/CsipSetCoordinatorService.java
+++ b/android/app/src/com/android/bluetooth/csip/CsipSetCoordinatorService.java
@@ -52,9 +52,7 @@
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ConnectableProfile;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -64,7 +62,6 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
@@ -78,14 +75,10 @@
     // Timeout for state machine thread join, to prevent potential ANR.
     private static final int SM_THREAD_JOIN_TIMEOUT_MS = 1000;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static CsipSetCoordinatorService sCsipSetCoordinatorService;
-
     private final Handler mHandler;
     private final HandlerThread mStateMachinesThread;
     private final Looper mStateMachinesLooper;
     private final CsipSetCoordinatorNativeInterface mNativeInterface;
-    private final ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
 
     @GuardedBy("mStateMachines")
     private final Map<BluetoothDevice, CsipSetCoordinatorStateMachine> mStateMachines =
@@ -105,21 +98,19 @@
             new ConcurrentHashMap<>();
 
     public CsipSetCoordinatorService(AdapterService adapterService) {
-        this(adapterService, null, null, new ServiceFactory());
+        this(adapterService, null, null);
     }
 
     @VisibleForTesting
     CsipSetCoordinatorService(
             AdapterService adapterService,
             Looper looper,
-            CsipSetCoordinatorNativeInterface nativeInterface,
-            ServiceFactory serviceFactory) {
+            CsipSetCoordinatorNativeInterface nativeInterface) {
         super(BluetoothProfile.CSIP_SET_COORDINATOR, requireNonNull(adapterService));
         mNativeInterface =
                 requireNonNullElseGet(
                         nativeInterface,
                         () -> new CsipSetCoordinatorNativeInterface(mAdapterService, this));
-        mServiceFactory = requireNonNull(serviceFactory);
         if (looper == null) {
             mHandler = new Handler(requireNonNull(Looper.getMainLooper()));
             mStateMachinesThread = new HandlerThread("CsipSetCoordinatorService.StateMachines");
@@ -131,22 +122,10 @@
             mStateMachinesLooper = looper;
         }
 
-        // Mark service as started
-        setCsipSetCoordinatorService(this);
-
         // Initialize native interface
         mNativeInterface.init();
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<LeAudioService> getLeAudioService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getLeAudioService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getLeAudioService());
-        }
-    }
-
     public static boolean isEnabled() {
         return BluetoothProperties.isProfileCsipSetCoordinatorEnabled().orElse(false);
     }
@@ -160,17 +139,9 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        if (sCsipSetCoordinatorService == null) {
-            Log.w(TAG, "cleanup() called before initialization");
-            return;
-        }
-
         // Cleanup native interface
         mNativeInterface.cleanup();
 
-        // Mark service as stopped
-        setCsipSetCoordinatorService(null);
-
         // Destroy state machines and stop handler thread
         synchronized (mStateMachines) {
             for (CsipSetCoordinatorStateMachine sm : mStateMachines.values()) {
@@ -203,32 +174,6 @@
     }
 
     /**
-     * Get the CsipSetCoordinatorService instance
-     *
-     * @return CsipSetCoordinatorService instance
-     */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized CsipSetCoordinatorService getCsipSetCoordinatorService() {
-        if (sCsipSetCoordinatorService == null) {
-            Log.w(TAG, "getCsipSetCoordinatorService(): service is NULL");
-            return null;
-        }
-
-        if (!sCsipSetCoordinatorService.isAvailable()) {
-            Log.w(TAG, "getCsipSetCoordinatorService(): service is not available");
-            return null;
-        }
-        return sCsipSetCoordinatorService;
-    }
-
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static synchronized void setCsipSetCoordinatorService(
-            CsipSetCoordinatorService instance) {
-        Log.d(TAG, "setCsipSetCoordinatorService(): set to: " + instance);
-        sCsipSetCoordinatorService = instance;
-    }
-
-    /**
      * Connect the given Bluetooth device.
      *
      * @return true if connection is successful, false otherwise.
@@ -660,7 +605,7 @@
     private void disableCsipIfNeeded(int groupId) {
         /* Make sure CSIP connection policy mirrors that of LeAudioService once all CSIP
         characteristic reads have completed (ensures we can pair other set devices) */
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.w(TAG, "checkIfGroupPaired: LE Audio Service is null");
             return;
diff --git a/android/app/src/com/android/bluetooth/hap/HapClientService.java b/android/app/src/com/android/bluetooth/hap/HapClientService.java
index f6a2224..2dbb374 100644
--- a/android/app/src/com/android/bluetooth/hap/HapClientService.java
+++ b/android/app/src/com/android/bluetooth/hap/HapClientService.java
@@ -54,8 +54,6 @@
 import com.android.bluetooth.btservice.ActiveDeviceManager;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ConnectableProfile;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
@@ -66,7 +64,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
@@ -86,9 +83,6 @@
     private static final int MAX_HEARING_ACCESS_STATE_MACHINES = 10;
     private static final int SM_THREAD_JOIN_TIMEOUT_MS = 1000;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static HapClientService sHapClient;
-
     private final Map<BluetoothDevice, HapClientStateMachine> mStateMachines =
             new ConcurrentHashMap<>();
     private final Map<BluetoothDevice, Integer> mDeviceCurrentPresetMap = new HashMap<>();
@@ -103,35 +97,6 @@
     @GuardedBy("mCallbacks")
     final RemoteCallbackList<IBluetoothHapClientCallback> mCallbacks = new RemoteCallbackList<>();
 
-    // TODO(b/422543753) Delete on flag cleanup
-    @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
-
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    static synchronized void setHapClient(HapClientService instance) {
-        Log.d(TAG, "setHapClient(): set to: " + instance);
-        sHapClient = instance;
-    }
-
-    /**
-     * Get the HapClientService instance
-     *
-     * @return HapClientService instance
-     */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized HapClientService getHapClientService() {
-        if (sHapClient == null) {
-            Log.w(TAG, "getHapClientService(): service is NULL");
-            return null;
-        }
-
-        if (!sHapClient.isAvailable()) {
-            Log.w(TAG, "getHapClientService(): service is not available");
-            return null;
-        }
-        return sHapClient;
-    }
-
     public HapClientService(AdapterService adapterService) {
         this(adapterService, Flags.hapOnMainLooper() ? Looper.getMainLooper() : null, null);
     }
@@ -168,18 +133,6 @@
 
         // Initialize native interface
         mNativeInterface.init();
-
-        // Mark service as started
-        setHapClient(this);
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getCsipSetCoordinatorService();
-        } else {
-            return Optional.ofNullable(mFactory.getCsipSetCoordinatorService());
-        }
     }
 
     public void syncPost(Consumer<HapClientService> consumer) {
@@ -251,14 +204,6 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        if (sHapClient == null) {
-            Log.w(TAG, "cleanup() called before initialization");
-            return;
-        }
-
-        // Marks service as stopped
-        setHapClient(null);
-
         // Destroy state machines and stop handler thread
         synchronized (mStateMachines) {
             for (HapClientStateMachine sm : mStateMachines.values()) {
@@ -603,7 +548,7 @@
     }
 
     int getHapGroup(BluetoothDevice device) {
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
         if (csipSetCoordinator.isPresent()) {
             final Map<Integer, ParcelUuid> groups =
                     csipSetCoordinator.get().getGroupUuidMapByDevice(device);
@@ -771,7 +716,8 @@
             return false;
         }
 
-        return getCsipSetCoordinatorService()
+        return mAdapterService
+                .getCsipSetCoordinatorService()
                 .map(csipClient -> csipClient.getAllGroupIds(BluetoothUuid.CAP).contains(groupId))
                 .orElse(false);
     }
@@ -853,7 +799,8 @@
             return emptyList();
         }
 
-        return getCsipSetCoordinatorService()
+        return mAdapterService
+                .getCsipSetCoordinatorService()
                 .map(csipClient -> csipClient.getGroupDevicesOrdered(groupId))
                 .orElse(emptyList());
     }
diff --git a/android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java b/android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java
index 45311fb..507a285 100644
--- a/android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java
+++ b/android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java
@@ -67,9 +67,6 @@
     // Upper limit of all HearingAid devices: Bonded or Connected
     private static final int MAX_HEARING_AID_STATE_MACHINES = 10;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static HearingAidService sHearingAidService;
-
     private final HearingAidNativeInterface mNativeInterface;
     private final AudioManager mAudioManager;
     private final HandlerThread mStateMachinesThread;
@@ -115,7 +112,6 @@
                         () -> new HearingAidNativeInterface(mAdapterService, this));
         mAudioManager = requireNonNull(obtainSystemService(AudioManager.class));
 
-        setHearingAidService(this);
         mNativeInterface.init();
     }
 
@@ -135,9 +131,6 @@
         // Cleanup native interface
         mNativeInterface.cleanup();
 
-        // Mark service as stopped
-        setHearingAidService(null);
-
         // Destroy state machines and stop handler thread
         synchronized (mStateMachines) {
             for (HearingAidStateMachine sm : mStateMachines.values()) {
@@ -167,32 +160,6 @@
     }
 
     /**
-     * Get the HearingAidService instance
-     *
-     * @return HearingAidService instance
-     */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized HearingAidService getHearingAidService() {
-        if (sHearingAidService == null) {
-            Log.w(TAG, "getHearingAidService(): service is NULL");
-            return null;
-        }
-
-        if (!sHearingAidService.isAvailable()) {
-            Log.w(TAG, "getHearingAidService(): service is not available");
-            return null;
-        }
-        return sHearingAidService;
-    }
-
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    static synchronized void setHearingAidService(HearingAidService instance) {
-        Log.d(TAG, "setHearingAidService(): set to: " + instance);
-        sHearingAidService = instance;
-    }
-
-    /**
      * Connects the hearing aid profile to the passed in device
      *
      * @param device is the device with which we will connect the hearing aid profile
diff --git a/android/app/src/com/android/bluetooth/hfp/HeadsetService.java b/android/app/src/com/android/bluetooth/hfp/HeadsetService.java
index 58d109f..6a25cce 100644
--- a/android/app/src/com/android/bluetooth/hfp/HeadsetService.java
+++ b/android/app/src/com/android/bluetooth/hfp/HeadsetService.java
@@ -61,16 +61,12 @@
 
 import com.android.bluetooth.BluetoothStatsLog;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ConnectableProfile;
 import com.android.bluetooth.btservice.MetricsLogger;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hfpclient.HeadsetClientService;
 import com.android.bluetooth.hfpclient.HeadsetClientStateMachine;
-import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.bluetooth.telephony.BluetoothInCallService;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -80,7 +76,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Objects;
-import java.util.Optional;
 
 /**
  * Provides Bluetooth Headset and Handsfree profile, as a service in the Bluetooth application.
@@ -165,15 +160,10 @@
             new AudioManagerAudioDeviceCallback();
 
     private final AudioManagerDeviceVolumeListener mAudioManagerDeviceVolumeListener;
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static HeadsetService sHeadsetService;
 
     @VisibleForTesting boolean mIsAptXSwbEnabled = false;
     @VisibleForTesting boolean mIsAptXSwbPmEnabled = false;
 
-    // TODO(b/422543753) Delete on flag cleanup
-    @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
-
     public HeadsetService(AdapterService adapterService) {
         this(adapterService, null, null);
     }
@@ -226,7 +216,6 @@
                 SystemProperties.getBoolean(
                         "bluetooth.hfp.swb.aptx.power_management.enabled", false);
         Log.i(TAG, "mIsAptXSwbPmEnabled: " + mIsAptXSwbPmEnabled);
-        setHeadsetService(this);
         mMaxHeadsetConnections = mAdapterService.getMaxConnectedAudioDevices();
         // Add 1 to allow a pending device to be connecting or disconnecting
         mNativeInterface.init(mMaxHeadsetConnections + 1, isInbandRingingEnabled());
@@ -260,33 +249,6 @@
         registerReceiver(mHeadsetReceiver, filter);
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<A2dpService> getA2dpService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getA2dpService();
-        } else {
-            return Optional.ofNullable(A2dpService.getA2dpService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HeadsetClientService> getHeadsetClientService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHeadsetClientService();
-        } else {
-            return Optional.ofNullable(HeadsetClientService.getHeadsetClientService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<LeAudioService> getLeAudioService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getLeAudioService();
-        } else {
-            return Optional.ofNullable(mFactory.getLeAudioService());
-        }
-    }
-
     private void initializeDeviceAbsoluteVolumeBehavior(BluetoothDevice device) {
         AudioManager audioManager = mSystemInterface.getAudioManager();
         AudioDeviceAttributes attributes =
@@ -377,7 +339,6 @@
         }
         // Step 4: Destroy native interface
         mNativeInterface.cleanup();
-        setHeadsetService(null);
         // Step 3: Destroy system interface
         mSystemInterface.stop();
         // Step 2: Stop handler thread
@@ -618,27 +579,6 @@
         }
     }
 
-    // API methods
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized HeadsetService getHeadsetService() {
-        if (sHeadsetService == null) {
-            Log.w(TAG, "getHeadsetService(): service is NULL");
-            return null;
-        }
-        if (!sHeadsetService.isAvailable()) {
-            Log.w(TAG, "getHeadsetService(): service is not available");
-            return null;
-        }
-        return sHeadsetService;
-    }
-
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized void setHeadsetService(HeadsetService instance) {
-        logD("setHeadsetService(): set to: " + instance);
-        sHeadsetService = instance;
-    }
-
     @Override
     public boolean connect(BluetoothDevice device) {
         if (getConnectionPolicy(device) == CONNECTION_POLICY_FORBIDDEN) {
@@ -1264,7 +1204,8 @@
              * when SCO is going to be created
              */
             if (mSystemInterface.isInCall() || mSystemInterface.isRinging()) {
-                getLeAudioService()
+                mAdapterService
+                        .getLeAudioService()
                         .filter(leAudio -> !leAudio.getConnectedDevices().isEmpty())
                         .ifPresent(
                                 leAudio -> {
@@ -2076,7 +2017,8 @@
     }
 
     private boolean isHeadsetClientConnected() {
-        return getHeadsetClientService()
+        return mAdapterService
+                .getHeadsetClientService()
                 .map(headsetClient -> !headsetClient.getConnectedDevices().isEmpty())
                 .orElse(false);
     }
@@ -2276,7 +2218,7 @@
                 // Do it here because some controllers cannot handle SCO and CIS
                 // co-existence see {@link LeAudioService#setInactiveForHfpHandover}
 
-                final var leAudio = getLeAudioService();
+                final var leAudio = mAdapterService.getLeAudioService();
                 boolean isLeAudioConnectedDeviceNotActive =
                         leAudio.isPresent()
                                 && !leAudio.get().getConnectedDevices().isEmpty()
@@ -2519,7 +2461,7 @@
                 && connectionPolicy != CONNECTION_POLICY_ALLOWED) {
             // Otherwise, reject the connection if connection policy is not valid.
             if (!isOutgoingRequest) {
-                final var a2dp = getA2dpService();
+                final var a2dp = mAdapterService.getA2dpService();
                 if (a2dp.isPresent() && a2dp.get().okToConnect(device, true)) {
                     Log.d(
                             TAG,
diff --git a/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientService.java b/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
index d2019e5..9e35db3 100644
--- a/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
+++ b/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
@@ -47,8 +47,6 @@
 import com.android.bluetooth.Utils;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ConnectableProfile;
-import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hfp.HeadsetService;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -56,7 +54,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
 
@@ -73,7 +70,6 @@
     // Maximum number of devices we can try connecting to in one session
     private static final int MAX_STATE_MACHINES_POSSIBLE = 100;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
     private static HeadsetClientService sHeadsetClientService;
 
     // This is also used as a lock for shared data in {@link HeadsetClientService}
@@ -136,15 +132,6 @@
         setHeadsetClientService(this);
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HeadsetService> getHeadsetService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHeadsetService();
-        } else {
-            return Optional.ofNullable(HeadsetService.getHeadsetService());
-        }
-    }
-
     public static boolean isEnabled() {
         return BluetoothProperties.isProfileHfpHfEnabled().orElse(false);
     }
@@ -295,8 +282,7 @@
     }
 
     // API methods
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized HeadsetClientService getHeadsetClientService() {
+    private static synchronized HeadsetClientService getHeadsetClientService() {
         if (sHeadsetClientService == null) {
             Log.w(TAG, "getHeadsetClientService(): service is null");
             return null;
@@ -308,9 +294,7 @@
         return sHeadsetClientService;
     }
 
-    /** Set a {@link HeadsetClientService} instance. */
-    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
+    @VisibleForTesting
     public static synchronized void setHeadsetClientService(HeadsetClientService instance) {
         Log.d(TAG, "setHeadsetClientService(): set to: " + instance);
         sHeadsetClientService = instance;
@@ -928,7 +912,7 @@
                     new HeadsetClientStateMachine(
                             mAdapterService,
                             this,
-                            getHeadsetService(),
+                            mAdapterService.getHeadsetService(),
                             mSmThread.getLooper(),
                             mNativeInterface);
             mStateMachineMap.put(device, sm);
diff --git a/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientServiceInterface.java b/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientServiceInterface.java
index 58832df..2aa6ac6 100644
--- a/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientServiceInterface.java
+++ b/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientServiceInterface.java
@@ -21,7 +21,6 @@
 import android.util.Log;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 
 import java.util.List;
 import java.util.Optional;
@@ -43,12 +42,8 @@
     HeadsetClientServiceInterface() {}
 
     private static Optional<HeadsetClientService> getHeadsetClientService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
-                    .flatMap(AdapterService::getHeadsetClientService);
-        } else {
-            return Optional.ofNullable(HeadsetClientService.getHeadsetClientService());
-        }
+        return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+                .flatMap(AdapterService::getHeadsetClientService);
     }
 
     private static boolean isServiceAvailable(Optional<HeadsetClientService> headsetClient) {
diff --git a/android/app/src/com/android/bluetooth/hfpclient/HfpClientConnectionService.java b/android/app/src/com/android/bluetooth/hfpclient/HfpClientConnectionService.java
index 1f33e54..da64fdc 100644
--- a/android/app/src/com/android/bluetooth/hfpclient/HfpClientConnectionService.java
+++ b/android/app/src/com/android/bluetooth/hfpclient/HfpClientConnectionService.java
@@ -36,8 +36,6 @@
 import android.util.Log;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.pbapclient.PbapClientService;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -45,7 +43,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.Optional;
 
 public class HfpClientConnectionService extends ConnectionService {
     private static final String TAG = HfpClientConnectionService.class.getSimpleName();
@@ -152,14 +149,12 @@
                 .handleHeadsetClientConnectionStateChanged(device, oldState, newState);
         adapterService.notifyProfileConnectionStateChangeToScan(
                 BluetoothProfile.HEADSET_CLIENT, oldState, newState);
-        final Optional<PbapClientService> pbapClientService;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            pbapClientService = adapterService.getPbapClientService();
-        } else {
-            pbapClientService = Optional.ofNullable(PbapClientService.getPbapClientService());
-        }
-        pbapClientService.ifPresent(
-                pC -> pC.handleHeadsetClientConnectionStateChanged(device, oldState, newState));
+        adapterService
+                .getPbapClientService()
+                .ifPresent(
+                        pC ->
+                                pC.handleHeadsetClientConnectionStateChanged(
+                                        device, oldState, newState));
         adapterService.updateProfileConnectionAdapterProperties(
                 device, BluetoothProfile.HEADSET_CLIENT, newState, oldState);
     }
diff --git a/android/app/src/com/android/bluetooth/hfpclient/HfpClientDeviceBlock.java b/android/app/src/com/android/bluetooth/hfpclient/HfpClientDeviceBlock.java
index 0fe27fc..dd7f190 100644
--- a/android/app/src/com/android/bluetooth/hfpclient/HfpClientDeviceBlock.java
+++ b/android/app/src/com/android/bluetooth/hfpclient/HfpClientDeviceBlock.java
@@ -27,7 +27,6 @@
 import android.util.Log;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 
 import java.util.HashMap;
 import java.util.List;
@@ -326,14 +325,9 @@
     private static Bundle getScoStateFromDevice(BluetoothDevice device) {
         Bundle bundle = new Bundle();
 
-        final Optional<HeadsetClientService> headsetClient;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            headsetClient =
-                    Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
-                            .flatMap(AdapterService::getHeadsetClientService);
-        } else {
-            headsetClient = Optional.ofNullable(HeadsetClientService.getHeadsetClientService());
-        }
+        final var headsetClient =
+                Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+                        .flatMap(AdapterService::getHeadsetClientService);
         if (headsetClient.isEmpty()) {
             return bundle;
         }
diff --git a/android/app/src/com/android/bluetooth/hid/HidHostService.java b/android/app/src/com/android/bluetooth/hid/HidHostService.java
index 51392f2..78abfc4 100644
--- a/android/app/src/com/android/bluetooth/hid/HidHostService.java
+++ b/android/app/src/com/android/bluetooth/hid/HidHostService.java
@@ -98,9 +98,6 @@
         }
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static HidHostService sHidHostService;
-
     private final Map<BluetoothDevice, InputDevice> mInputDevices =
             Collections.synchronizedMap(new HashMap<>());
 
@@ -136,7 +133,6 @@
         mNativeInterface =
                 requireNonNullElseGet(nativeInterface, () -> new HidHostNativeInterface(this));
         mNativeInterface.init();
-        setHidHostService(this);
     }
 
     public static boolean isEnabled() {
@@ -162,8 +158,6 @@
             }
             mInputDevices.clear();
         }
-        // TODO(b/72948646): this should be moved to stop()
-        setHidHostService(null);
     }
 
     private byte[] getByteAddress(BluetoothDevice device, int transport) {
@@ -256,25 +250,6 @@
         return STATE_DISCONNECTED;
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized HidHostService getHidHostService() {
-        if (sHidHostService == null) {
-            Log.w(TAG, "getHidHostService(): service is null");
-            return null;
-        }
-        if (!sHidHostService.isAvailable()) {
-            Log.w(TAG, "getHidHostService(): service is not available ");
-            return null;
-        }
-        return sHidHostService;
-    }
-
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static synchronized void setHidHostService(HidHostService instance) {
-        Log.d(TAG, "setHidHostService(): set to: " + instance);
-        sHidHostService = instance;
-    }
-
     /**
      * Requests the native stack to start HID connection
      *
diff --git a/android/app/src/com/android/bluetooth/le_audio/ContentControlIdKeeper.java b/android/app/src/com/android/bluetooth/le_audio/ContentControlIdKeeper.java
index e723786..8602922 100644
--- a/android/app/src/com/android/bluetooth/le_audio/ContentControlIdKeeper.java
+++ b/android/app/src/com/android/bluetooth/le_audio/ContentControlIdKeeper.java
@@ -23,8 +23,6 @@
 import android.util.Pair;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.flags.Flags;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -45,13 +43,10 @@
     private static SortedSet<Integer> sAssignedCcidList = new TreeSet();
     private static HashMap<ParcelUuid, Pair<Integer, Integer>> sUuidToCcidContextPair =
             new HashMap<>();
-    // TODO(b/422543753) Delete on flag cleanup
-    private static ServiceFactory sServiceFactory = null;
 
-    static synchronized void initForTesting(ServiceFactory instance) {
+    static synchronized void initForTesting() {
         sAssignedCcidList = new TreeSet();
         sUuidToCcidContextPair = new HashMap<>();
-        sServiceFactory = instance;
     }
 
     /**
@@ -99,23 +94,12 @@
             sUuidToCcidContextPair.put(userUuid, new Pair(ccid, contextType));
 
             // Notify LeAudioService about new ccid
-            if (Flags.adapterServiceProfilesUseOptional()) {
-                final var ccidFinal = ccid;
-                adapterService
-                        .getLeAudioService()
-                        .ifPresent(
-                                leAudio ->
-                                        leAudio.setCcidInformation(
-                                                userUuid, ccidFinal, contextType));
-            } else {
-                if (sServiceFactory == null) {
-                    sServiceFactory = new ServiceFactory();
-                }
-                LeAudioService service = sServiceFactory.getLeAudioService();
-                if (service != null) {
-                    service.setCcidInformation(userUuid, ccid, contextType);
-                }
-            }
+            final var ccidFinal = ccid;
+            adapterService
+                    .getLeAudioService()
+                    .ifPresent(
+                            leAudio ->
+                                    leAudio.setCcidInformation(userUuid, ccidFinal, contextType));
         }
         return ccid;
     }
@@ -141,20 +125,10 @@
 
         if (sAssignedCcidList.contains(value)) {
             // Notify LeAudioService about new value
-            if (Flags.adapterServiceProfilesUseOptional()) {
-                final var uuidFinal = uuid;
-                adapterService
-                        .getLeAudioService()
-                        .ifPresent(leAudio -> leAudio.setCcidInformation(uuidFinal, value, 0));
-            } else {
-                if (sServiceFactory == null) {
-                    sServiceFactory = new ServiceFactory();
-                }
-                LeAudioService service = sServiceFactory.getLeAudioService();
-                if (service != null) {
-                    service.setCcidInformation(uuid, value, 0);
-                }
-            }
+            final var uuidFinal = uuid;
+            adapterService
+                    .getLeAudioService()
+                    .ifPresent(leAudio -> leAudio.setCcidInformation(uuidFinal, value, 0));
 
             sAssignedCcidList.remove(value);
             sUuidToCcidContextPair.remove(uuid);
diff --git a/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java b/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
index 9d10537..b89b2a4 100644
--- a/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
+++ b/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
@@ -84,22 +84,13 @@
 import com.android.bluetooth.BluetoothEventLogger;
 import com.android.bluetooth.BluetoothStatsLog;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
-import com.android.bluetooth.bass_client.BassClientService;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.Config;
 import com.android.bluetooth.btservice.ConnectableProfile;
 import com.android.bluetooth.btservice.MetricsLogger;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hap.HapClientService;
-import com.android.bluetooth.hearingaid.HearingAidService;
-import com.android.bluetooth.hfp.HeadsetService;
-import com.android.bluetooth.mcp.McpService;
 import com.android.bluetooth.tbs.TbsGatt;
-import com.android.bluetooth.vc.VolumeControlService;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -129,7 +120,6 @@
     /* 5 seconds timeout for Broadcast streaming state transition */
     @VisibleForTesting static final int CREATE_BROADCAST_TIMEOUT_MS = 5000;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
     private static LeAudioService sLeAudioService;
 
     /** Indicates group audio support for none direction */
@@ -183,9 +173,6 @@
     private BluetoothDevice mExposedActiveDevice;
     private CreateBroadcastTimeoutEvent mCreateBroadcastTimeoutEvent;
 
-    // TODO(b/422543753) Delete on flag cleanup
-    @VisibleForTesting ServiceFactory mServiceFactory = new ServiceFactory();
-
     boolean mLeAudioNativeIsInitialized = false;
     boolean mLeAudioInbandRingtoneSupportedByPlatform = true;
     boolean mBluetoothEnabled = false;
@@ -321,78 +308,6 @@
         mAudioManager.registerAudioRecordingCallback(mAudioRecordingCallback, null);
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<A2dpService> getA2dpService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getA2dpService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getA2dpService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<BassClientService> getBassClientService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getBassClientService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getBassClientService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getCsipSetCoordinatorService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getCsipSetCoordinatorService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HapClientService> getHapClientService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHapClientService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getHapClientService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HeadsetService> getHeadsetService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHeadsetService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getHeadsetService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<HearingAidService> getHearingAidService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getHearingAidService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getHearingAidService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<McpService> getMcpService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getMcpService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getMcpService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<VolumeControlService> getVolumeControlService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getVolumeControlService();
-        } else {
-            return Optional.ofNullable(mServiceFactory.getVolumeControlService());
-        }
-    }
-
     @VisibleForTesting
     int getTmapRoleMask() {
         return mTmapRoleMask;
@@ -864,8 +779,8 @@
         mAudioManager.unregisterAudioDeviceCallback(mAudioManagerAudioDeviceCallback);
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized LeAudioService getLeAudioService() {
+    @VisibleForTesting
+    static synchronized LeAudioService getLeAudioService() {
         if (sLeAudioService == null) {
             Log.w(TAG, "getLeAudioService(): service is NULL");
             return null;
@@ -877,10 +792,8 @@
         return sLeAudioService;
     }
 
-    // TODO(b/422543753) Hide on flag cleanup
     @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized void setLeAudioService(LeAudioService instance) {
+    static synchronized void setLeAudioService(LeAudioService instance) {
         Log.d(TAG, "setLeAudioService(): set to: " + instance);
         sLeAudioService = instance;
     }
@@ -889,7 +802,8 @@
     int getAudioDeviceGroupVolume(int groupId) {
         if (Flags.vcpOnMainLooper()) {
             int defaultValue = IBluetoothVolumeControl.VOLUME_CONTROL_UNKNOWN_VOLUME;
-            return getVolumeControlService()
+            return mAdapterService
+                    .getVolumeControlService()
                     .map(
                             vcs ->
                                     vcs.syncPost(
@@ -897,7 +811,7 @@
                                             defaultValue))
                     .orElse(defaultValue);
         }
-        final var volumeControl = getVolumeControlService();
+        final var volumeControl = mAdapterService.getVolumeControlService();
         if (volumeControl.isEmpty()) {
             return IBluetoothVolumeControl.VOLUME_CONTROL_UNKNOWN_VOLUME;
         }
@@ -1338,7 +1252,7 @@
         int[] preferredQualityArray =
                 settingsList.stream().mapToInt(s -> s.getPreferredQuality()).toArray();
 
-        final var bassClient = getBassClientService();
+        final var bassClient = mAdapterService.getBassClientService();
         if (bassClient.isEmpty()) {
             return preferredQualityArray;
         }
@@ -1494,7 +1408,7 @@
 
         // log group size before stop
         LeAudioBroadcastSessionStats sessionStats = mBroadcastSessionStats.get(broadcastId);
-        final var bassClient = getBassClientService();
+        final var bassClient = mAdapterService.getBassClientService();
         if (bassClient.isPresent() && sessionStats != null) {
             sessionStats.updateGroupSize(bassClient.get().getSyncedBroadcastSinks().size());
         }
@@ -1637,7 +1551,7 @@
 
     /** Active Broadcast Assistant notification handler */
     public void activeBroadcastAssistantNotification(boolean active) {
-        if (getBassClientService().isEmpty()) {
+        if (mAdapterService.getBassClientService().isEmpty()) {
             Log.w(TAG, "Ignore active Broadcast Assistant notification");
             return;
         }
@@ -1679,7 +1593,7 @@
             return Collections.emptySet();
         }
 
-        final var bassClient = getBassClientService();
+        final var bassClient = mAdapterService.getBassClientService();
         if (bassClient.isEmpty()) {
             Log.e(TAG, "getLocalBroadcastReceivers: Bass service not available");
             return Collections.emptySet();
@@ -2002,7 +1916,7 @@
     }
 
     private void notifyVolumeControlServiceAboutActiveGroup(BluetoothDevice device) {
-        final var vcs = getVolumeControlService();
+        final var vcs = mAdapterService.getVolumeControlService();
         if (vcs.isEmpty()) {
             return;
         }
@@ -2861,9 +2775,9 @@
                 "Disabling LE Audio for group: "
                         + groupId
                         + " and falling back to legacy profiles");
-        final var a2dp = getA2dpService();
-        final var headset = getHeadsetService();
-        final var hearingAid = getHearingAidService();
+        final var a2dp = mAdapterService.getA2dpService();
+        final var headset = mAdapterService.getHeadsetService();
+        final var hearingAid = mAdapterService.getHearingAidService();
         boolean isDualMode = Utils.isDualModeAudioEnabled();
 
         List<BluetoothDevice> leAudioActiveGroupDevices = getGroupDevices(groupId);
@@ -3086,7 +3000,7 @@
     }
 
     private void handleSourceStreamStatusChange(int status) {
-        final var bassClient = getBassClientService();
+        final var bassClient = mAdapterService.getBassClientService();
         if (bassClient.isEmpty()) {
             Log.e(TAG, "handleSourceStreamStatusChange: BASS Client service is not available");
 
@@ -3108,7 +3022,7 @@
     }
 
     private boolean isGroupReceivingBroadcast(int groupId) {
-        final var bassClient = getBassClientService();
+        final var bassClient = mAdapterService.getBassClientService();
         if (bassClient.isEmpty()) {
             return false;
         }
@@ -3177,7 +3091,7 @@
             Log.d(TAG, "There is no HFP handover");
             return;
         }
-        final var headset = getHeadsetService();
+        final var headset = mAdapterService.getHeadsetService();
         if (headset.isEmpty()) {
             Log.d(TAG, "There is no HFP service available");
             return;
@@ -4013,7 +3927,8 @@
                     () ->
                             notifyOnBroadcastStopped(
                                     broadcastId, BluetoothStatusCodes.REASON_LOCAL_APP_REQUEST));
-            getBassClientService()
+            mAdapterService
+                    .getBassClientService()
                     .ifPresent(
                             bassClient ->
                                     bassClient.stopReceiversSourceSynchronization(broadcastId));
@@ -4043,7 +3958,7 @@
             previousState = descriptor.mState;
             descriptor.mState = state;
 
-            final var bassClient = getBassClientService();
+            final var bassClient = mAdapterService.getBassClientService();
             switch (descriptor.mState) {
                 case LeAudioStackEvent.BROADCAST_STATE_STOPPED -> {
                     Log.d(TAG, "Broadcast broadcastId: " + broadcastId + " stopped.");
@@ -4639,7 +4554,7 @@
                         + connectionPolicy);
         final ParcelUuid[] featureUuids = mAdapterService.getRemoteUuids(device);
 
-        final var vcs = getVolumeControlService();
+        final var vcs = mAdapterService.getVolumeControlService();
         if (vcs.isPresent() && Utils.arrayContains(featureUuids, BluetoothUuid.VOLUME_CONTROL)) {
             if (Flags.vcpOnMainLooper()) {
                 vcs.get().syncPost(v -> v.setConnectionPolicy(device, connectionPolicy));
@@ -4648,7 +4563,7 @@
             }
         }
 
-        final var hapClient = getHapClientService();
+        final var hapClient = mAdapterService.getHapClientService();
         if (hapClient.isPresent() && Utils.arrayContains(featureUuids, BluetoothUuid.HAS)) {
             if (Flags.hapOnMainLooper()) {
                 hapClient.get().post(h -> h.setConnectionPolicy(device, connectionPolicy));
@@ -4657,14 +4572,14 @@
             }
         }
 
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
         // Disallow setting CSIP to forbidden until characteristic reads are complete
         if (csipSetCoordinator.isPresent()
                 && Utils.arrayContains(featureUuids, BluetoothUuid.COORDINATED_SET)) {
             csipSetCoordinator.get().setConnectionPolicy(device, connectionPolicy);
         }
 
-        final var bassClient = getBassClientService();
+        final var bassClient = mAdapterService.getBassClientService();
         if (bassClient.isPresent()
                 && bassClient.get().isEnabled()
                 && Utils.arrayContains(featureUuids, BluetoothUuid.BASS)) {
@@ -4849,7 +4764,7 @@
         List<BluetoothDevice> activeBroadcastSinks = new ArrayList<>();
 
         if (currentlyActiveGroupId == LE_AUDIO_GROUP_ID_INVALID) {
-            final var bassClient = getBassClientService();
+            final var bassClient = mAdapterService.getBassClientService();
             if (bassClient.isPresent()) {
                 activeBroadcastSinks = bassClient.get().getSyncedBroadcastSinks();
             }
@@ -4860,7 +4775,7 @@
             }
         }
 
-        final var vcs = getVolumeControlService();
+        final var vcs = mAdapterService.getVolumeControlService();
         if (vcs.isEmpty()) {
             return;
         }
@@ -4911,7 +4826,9 @@
     }
 
     private void setAuthorizationForRelatedProfiles(BluetoothDevice device, boolean authorize) {
-        getMcpService().ifPresent(mcp -> mcp.setDeviceAuthorized(device, authorize));
+        mAdapterService
+                .getMcpService()
+                .ifPresent(mcp -> mcp.setDeviceAuthorized(device, authorize));
 
         mAdapterService
                 .getTbsService()
@@ -4919,7 +4836,7 @@
     }
 
     private void removeAuthorizationInfoForRelatedProfiles(BluetoothDevice device) {
-        getMcpService().ifPresent(mcp -> mcp.removeDeviceAuthorizationInfo(device));
+        mAdapterService.getMcpService().ifPresent(mcp -> mcp.removeDeviceAuthorizationInfo(device));
 
         mAdapterService
                 .getTbsService()
@@ -5075,7 +4992,9 @@
     }
 
     private void notifyGroupNodeAdded(BluetoothDevice device, int groupId) {
-        getVolumeControlService().ifPresent(vcs -> vcs.handleGroupNodeAdded(groupId, device));
+        mAdapterService
+                .getVolumeControlService()
+                .ifPresent(vcs -> vcs.handleGroupNodeAdded(groupId, device));
 
         synchronized (mLeAudioCallbacks) {
             int n = mLeAudioCallbacks.beginBroadcast();
diff --git a/android/app/src/com/android/bluetooth/map/BluetoothMapService.java b/android/app/src/com/android/bluetooth/map/BluetoothMapService.java
index c57ffc6..dfde211 100644
--- a/android/app/src/com/android/bluetooth/map/BluetoothMapService.java
+++ b/android/app/src/com/android/bluetooth/map/BluetoothMapService.java
@@ -138,9 +138,6 @@
     private boolean mSdpSearchInitiated = false;
     private SdpMnsRecord mMnsRecord = null;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static BluetoothMapService sBluetoothMapService;
-
     private static final ParcelUuid[] MAP_UUIDS = {
         BluetoothUuid.MAP, BluetoothUuid.MNS,
     };
@@ -190,7 +187,6 @@
         createMasInstances(); // Uses mEnabledAccounts
 
         sendStartListenerMessage(-1);
-        setBluetoothMapService(this);
     }
 
     private synchronized void closeService() {
@@ -662,38 +658,6 @@
     }
 
     /**
-     * @return current instance of {@link BluetoothMapService}
-     */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized BluetoothMapService getBluetoothMapService() {
-        if (sBluetoothMapService == null) {
-            Log.w(TAG, "getBluetoothMapService(): service is null");
-            ContentProfileErrorReportUtils.report(
-                    BluetoothProfile.MAP,
-                    BluetoothProtoEnums.BLUETOOTH_MAP_SERVICE,
-                    BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
-                    8);
-            return null;
-        }
-        if (!sBluetoothMapService.isAvailable()) {
-            Log.w(TAG, "getBluetoothMapService(): service is not available");
-            ContentProfileErrorReportUtils.report(
-                    BluetoothProfile.MAP,
-                    BluetoothProtoEnums.BLUETOOTH_MAP_SERVICE,
-                    BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
-                    9);
-            return null;
-        }
-        return sBluetoothMapService;
-    }
-
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static synchronized void setBluetoothMapService(BluetoothMapService instance) {
-        Log.d(TAG, "setBluetoothMapService(): set to: " + instance);
-        sBluetoothMapService = instance;
-    }
-
-    /**
      * Call this to trigger an update of the MAS instance list. No changes will be applied unless in
      * disconnected state
      */
@@ -827,7 +791,6 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        setBluetoothMapService(null);
         unregisterReceiver(mMapReceiver);
         mAppObserver.shutdown();
         sendShutdownMessage();
diff --git a/android/app/src/com/android/bluetooth/mcp/McpService.java b/android/app/src/com/android/bluetooth/mcp/McpService.java
index a8c6dfc..62c46bf 100644
--- a/android/app/src/com/android/bluetooth/mcp/McpService.java
+++ b/android/app/src/com/android/bluetooth/mcp/McpService.java
@@ -30,22 +30,16 @@
 import com.android.bluetooth.Utils;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
 /** Provides Media Control Profile, as a service in the Bluetooth application. */
 public class McpService extends ProfileService {
     private static final String TAG = Utils.BT_PREFIX + McpService.class.getSimpleName();
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static McpService sMcpService;
-
     private final MediaControlProfile mGmcs;
     private final Map<BluetoothDevice, Integer> mDeviceAuthorizations = new HashMap<>();
 
@@ -58,8 +52,6 @@
         super(BluetoothProfile.MCP_SERVER, requireNonNull(adapterService));
         mGmcs = requireNonNull(mediaControlProfile);
 
-        setMcpService(this); // Mark service as started
-
         mGmcs.init(this);
     }
 
@@ -67,26 +59,6 @@
         return BluetoothProperties.isProfileMcpServerEnabled().orElse(false);
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static synchronized void setMcpService(McpService instance) {
-        Log.d(TAG, "setMcpService(): set to: " + instance);
-        sMcpService = instance;
-    }
-
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized McpService getMcpService() {
-        if (sMcpService == null) {
-            Log.w(TAG, "getMcpService(): service is NULL");
-            return null;
-        }
-
-        if (!sMcpService.isAvailable()) {
-            Log.w(TAG, "getMcpService(): service is not available");
-            return null;
-        }
-        return sMcpService;
-    }
-
     @Override
     protected IProfileServiceBinder initBinder() {
         return null;
@@ -96,15 +68,7 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        if (sMcpService == null) {
-            Log.w(TAG, "cleanup() called before initialization");
-            return;
-        }
-
         mGmcs.cleanup();
-
-        // Mark service as stopped
-        setMcpService(null);
     }
 
     @Override
@@ -175,12 +139,7 @@
             return authorization;
         }
 
-        final Optional<LeAudioService> leAudio;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            leAudio = mAdapterService.getLeAudioService();
-        } else {
-            leAudio = Optional.ofNullable(LeAudioService.getLeAudioService());
-        }
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.e(TAG, "MCS access not permitted. LeAudioService not available");
             return BluetoothDevice.ACCESS_UNKNOWN;
diff --git a/android/app/src/com/android/bluetooth/mcp/MediaControlGattService.java b/android/app/src/com/android/bluetooth/mcp/MediaControlGattService.java
index dd4d1f1..03bad02 100644
--- a/android/app/src/com/android/bluetooth/mcp/MediaControlGattService.java
+++ b/android/app/src/com/android/bluetooth/mcp/MediaControlGattService.java
@@ -49,10 +49,7 @@
 
 import com.android.bluetooth.BluetoothEventLogger;
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hearingaid.HearingAidService;
 import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -65,7 +62,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.UUID;
 
 /**
@@ -1197,15 +1193,6 @@
         mEventLogger = new BluetoothEventLogger(200, TAG + " instance (CCID=" + ccid + "): ");
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<LeAudioService> getLeAudioService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getLeAudioService();
-        } else {
-            return Optional.ofNullable(LeAudioService.getLeAudioService());
-        }
-    }
-
     protected boolean init(UUID scvUuid) {
         mFeatures = mCallbacks.onGetFeatureFlags();
 
@@ -1314,24 +1301,16 @@
         // TODO: Activate/deactivate devices with ActiveDeviceManager
         if (!isBroadcastActive() && req.opcode() == Request.Opcodes.PLAY) {
             if (mAdapterService.getActiveDevices(BluetoothProfile.A2DP).size() > 0) {
-                if (Flags.adapterServiceProfilesUseOptional()) {
-                    mAdapterService
-                            .getA2dpService()
-                            .ifPresent(a2dp -> a2dp.removeActiveDevice(false));
-                } else {
-                    A2dpService.getA2dpService().removeActiveDevice(false);
-                }
+                mAdapterService.getA2dpService().ifPresent(a2dp -> a2dp.removeActiveDevice(false));
             }
             if (mAdapterService.getActiveDevices(BluetoothProfile.HEARING_AID).size() > 0) {
-                if (Flags.adapterServiceProfilesUseOptional()) {
-                    mAdapterService
-                            .getHearingAidService()
-                            .ifPresent(hearingAid -> hearingAid.removeActiveDevice(false));
-                } else {
-                    HearingAidService.getHearingAidService().removeActiveDevice(false);
-                }
+                mAdapterService
+                        .getHearingAidService()
+                        .ifPresent(hearingAid -> hearingAid.removeActiveDevice(false));
             }
-            getLeAudioService().ifPresent(leAudio -> leAudio.setActiveDevice(device));
+            mAdapterService
+                    .getLeAudioService()
+                    .ifPresent(leAudio -> leAudio.setActiveDevice(device));
         }
         mCallbacks.onMediaControlRequest(req);
 
@@ -2097,7 +2076,10 @@
      * @return {@code true} if is broadcasting audio, {@code false} otherwise
      */
     private boolean isBroadcastActive() {
-        return getLeAudioService().map(LeAudioService::isBroadcastActive).orElse(false);
+        return mAdapterService
+                .getLeAudioService()
+                .map(LeAudioService::isBroadcastActive)
+                .orElse(false);
     }
 
     @VisibleForTesting
diff --git a/android/app/src/com/android/bluetooth/opp/BluetoothOppService.java b/android/app/src/com/android/bluetooth/opp/BluetoothOppService.java
index 8ad5106..12fc920 100644
--- a/android/app/src/com/android/bluetooth/opp/BluetoothOppService.java
+++ b/android/app/src/com/android/bluetooth/opp/BluetoothOppService.java
@@ -201,9 +201,6 @@
                     + WHERE_CONFIRM_PENDING_INBOUND
                     + ")";
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static BluetoothOppService sBluetoothOppService;
-
     /*
      * TODO No support for queue incoming from multiple devices.
      * Make an array list of server session to support receiving queue from
@@ -244,7 +241,6 @@
         mNotifier = new BluetoothOppNotification(mAdapterService);
         mNotifier.cancelOppNotifications();
         updateFromProvider();
-        setBluetoothOppService(this);
     }
 
     public static boolean isEnabled() {
@@ -259,16 +255,6 @@
     @Override
     public void cleanup() {
         Log.i(TAG, "cleanup()");
-
-        if (sBluetoothOppService == null) {
-            Log.w(TAG, "cleanup() called before initialization");
-            ContentProfileErrorReportUtils.report(
-                    mProfileId,
-                    BluetoothProtoEnums.BLUETOOTH_OPP_SERVICE,
-                    BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
-                    1);
-        }
-        setBluetoothOppService(null);
         stopInternal();
 
         setComponentAvailable(OPP_PROVIDER, false);
@@ -314,41 +300,6 @@
         }
     }
 
-    /**
-     * Get the current instance of {@link BluetoothOppService}
-     *
-     * @return current instance of {@link BluetoothOppService}
-     */
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized BluetoothOppService getBluetoothOppService() {
-        if (sBluetoothOppService == null) {
-            Log.w(TAG, "getBluetoothOppService(): service is null");
-            ContentProfileErrorReportUtils.report(
-                    BluetoothProfile.OPP,
-                    BluetoothProtoEnums.BLUETOOTH_OPP_SERVICE,
-                    BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
-                    2);
-            return null;
-        }
-        if (!sBluetoothOppService.isAvailable()) {
-            Log.w(TAG, "getBluetoothOppService(): service is not available");
-            ContentProfileErrorReportUtils.report(
-                    BluetoothProfile.OPP,
-                    BluetoothProtoEnums.BLUETOOTH_OPP_SERVICE,
-                    BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
-                    3);
-            return null;
-        }
-        return sBluetoothOppService;
-    }
-
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static synchronized void setBluetoothOppService(BluetoothOppService instance) {
-        Log.d(TAG, "setBluetoothOppService(): set to: " + instance);
-        sBluetoothOppService = instance;
-    }
-
     private static final int START_LISTENER = 1;
 
     private static final int MEDIA_SCANNED = 2;
diff --git a/android/app/src/com/android/bluetooth/pan/PanService.java b/android/app/src/com/android/bluetooth/pan/PanService.java
index 2cc7f49..99982d6 100644
--- a/android/app/src/com/android/bluetooth/pan/PanService.java
+++ b/android/app/src/com/android/bluetooth/pan/PanService.java
@@ -62,9 +62,6 @@
 public class PanService extends ConnectableProfile {
     private static final String TAG = PanService.class.getSimpleName();
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static PanService sPanService;
-
     private static final int BLUETOOTH_MAX_PAN_CONNECTIONS = 5;
 
     private static final int MESSAGE_CONNECT = 1;
@@ -131,7 +128,6 @@
 
         mTetheringManager.registerTetheringEventCallback(
                 new HandlerExecutor(new Handler(Looper.getMainLooper())), mTetheringCallback);
-        setPanService(this);
     }
 
     public static boolean isEnabled() {
@@ -144,25 +140,6 @@
         return new PanServiceBinder(this);
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized PanService getPanService() {
-        if (sPanService == null) {
-            Log.w(TAG, "getPanService(): service is null");
-            return null;
-        }
-        if (!sPanService.isAvailable()) {
-            Log.w(TAG, "getPanService(): service is not available ");
-            return null;
-        }
-        return sPanService;
-    }
-
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static synchronized void setPanService(PanService instance) {
-        Log.d(TAG, "setPanService(): set to: " + instance);
-        sPanService = instance;
-    }
-
     @Override
     public void cleanup() {
         Log.i(TAG, "cleanup()");
@@ -176,8 +153,6 @@
         mNativeInterface.cleanup();
         mHandler.removeCallbacksAndMessages(null);
 
-        setPanService(null);
-
         int[] desiredStates = {STATE_CONNECTING, STATE_CONNECTED, STATE_DISCONNECTING};
         List<BluetoothDevice> devList = getDevicesMatchingConnectionStates(desiredStates);
         for (BluetoothDevice device : devList) {
diff --git a/android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java b/android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java
index f643d63..4e4d5fd 100644
--- a/android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java
+++ b/android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java
@@ -26,7 +26,6 @@
 import static com.android.bluetooth.Utils.joinUninterruptibly;
 
 import static java.util.Objects.requireNonNull;
-import static java.util.Objects.requireNonNullElseGet;
 
 import android.app.Activity;
 import android.app.Notification;
@@ -167,11 +166,6 @@
 
     private Thread mThreadUpdateSecVersionCounter;
 
-    // TODO(b/422543753) Delete on flag cleanup
-    public BluetoothPbapService(AdapterService adapterService) {
-        this(requireNonNull(adapterService), null, null);
-    }
-
     public BluetoothPbapService(
             AdapterService adapterService, NotificationManager notificationManager) {
         this(requireNonNull(adapterService), notificationManager, null);
@@ -181,14 +175,7 @@
     BluetoothPbapService(
             AdapterService adapterService, NotificationManager notificationManager, Looper looper) {
         super(BluetoothProfile.PBAP, requireNonNull(adapterService));
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            mNotificationManager = requireNonNull(notificationManager);
-        } else {
-            mNotificationManager =
-                    requireNonNullElseGet(
-                            notificationManager,
-                            () -> obtainSystemService(NotificationManager.class));
-        }
+        mNotificationManager = requireNonNull(notificationManager);
 
         IntentFilter userFilter = new IntentFilter();
         userFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
diff --git a/android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java b/android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java
index e02bd35..77318e4 100644
--- a/android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java
+++ b/android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java
@@ -61,8 +61,6 @@
     // MAXIMUM_DEVICES set to 10 to prevent an excessive number of simultaneous devices.
     private static final int MAXIMUM_DEVICES = 10;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static PbapClientService sPbapClientService;
     private final PbapClientContactsStorage mPbapClientContactsStorage;
     private final Map<BluetoothDevice, PbapClientStateMachine> mPbapClientStateMachineMap;
     private final Handler mHandler;
@@ -106,7 +104,6 @@
         setComponentAvailable(AUTHENTICATOR_SERVICE, true);
 
         registerSdpRecord();
-        setPbapClientService(this);
     }
 
     @VisibleForTesting
@@ -129,7 +126,6 @@
         mPbapClientContactsStorage.start();
 
         registerSdpRecord();
-        setPbapClientService(this);
     }
 
     public static boolean isEnabled() {
@@ -145,7 +141,6 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        setPbapClientService(null);
         cleanUpSdpRecord();
 
         // Unregister SDP event handler and stop all queued messages.
@@ -382,32 +377,6 @@
     // * API methods
     // *********************************************************************************************
 
-    /** Get the singleton instance of PbapClientService, if one exists */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized PbapClientService getPbapClientService() {
-        if (sPbapClientService == null) {
-            Log.w(TAG, "getPbapClientService(): service is null");
-            return null;
-        }
-        if (!sPbapClientService.isAvailable()) {
-            Log.w(TAG, "getPbapClientService(): service is not available");
-            return null;
-        }
-        return sPbapClientService;
-    }
-
-    /**
-     * Set the singleton instance of PbapClientService
-     *
-     * <p>This function is meant to be used by tests only.
-     */
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    static synchronized void setPbapClientService(PbapClientService instance) {
-        Log.v(TAG, "setPbapClientService(): set to: " + instance);
-        sPbapClientService = instance;
-    }
-
     /**
      * Requests a connection to the given device's PBAP Server
      *
diff --git a/android/app/src/com/android/bluetooth/tbs/TbsGeneric.java b/android/app/src/com/android/bluetooth/tbs/TbsGeneric.java
index eac3192..d1b2732 100644
--- a/android/app/src/com/android/bluetooth/tbs/TbsGeneric.java
+++ b/android/app/src/com/android/bluetooth/tbs/TbsGeneric.java
@@ -37,11 +37,8 @@
 import android.util.Log;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.le_audio.ContentControlIdKeeper;
-import com.android.bluetooth.le_audio.LeAudioService;
-import com.android.internal.annotations.VisibleForTesting;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -50,7 +47,6 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.UUID;
@@ -129,8 +125,6 @@
     private final List<Bearer> mBearerList = new ArrayList<>();
     private final Map<Integer, TbsCall> mCurrentCallsList = new TreeMap<>();
     private final Receiver mReceiver = new Receiver();
-    // TODO(b/422543753) Delete on flag cleanup
-    @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
 
     private final AdapterService mAdapterService;
     private final TbsGatt mTbsGatt;
@@ -217,15 +211,6 @@
         mIsInitialized = true;
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<LeAudioService> getLeAudioService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getLeAudioService();
-        } else {
-            return Optional.ofNullable(mFactory.getLeAudioService());
-        }
-    }
-
     public synchronized void cleanup() {
         Log.d(TAG, "cleanup");
 
@@ -764,7 +749,7 @@
 
                 @Override
                 public boolean isInbandRingtoneEnabled(BluetoothDevice device) {
-                    final var leAudio = getLeAudioService();
+                    final var leAudio = mAdapterService.getLeAudioService();
                     if (leAudio.isEmpty()) {
                         Log.i(TAG, "LeAudio service not available");
                         return false;
@@ -1070,7 +1055,8 @@
     private synchronized void notifyCclc() {
         Log.d(TAG, "notifyCclc");
 
-        getLeAudioService()
+        mAdapterService
+                .getLeAudioService()
                 .ifPresent(
                         leAudio -> {
                             if (mCurrentCallsList.size() > 0) {
@@ -1111,7 +1097,8 @@
             return;
         }
 
-        getLeAudioService()
+        mAdapterService
+                .getLeAudioService()
                 .ifPresentOrElse(
                         leAudio -> {
                             leAudio.setActiveDevice(device);
@@ -1150,7 +1137,7 @@
             return false;
         }
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.w(TAG, "shouldBlockTbsForBroadcastReceiver: LeAudioService is not available");
             return false;
diff --git a/android/app/src/com/android/bluetooth/tbs/TbsService.java b/android/app/src/com/android/bluetooth/tbs/TbsService.java
index 2f5e3a1..1a7dcb5 100644
--- a/android/app/src/com/android/bluetooth/tbs/TbsService.java
+++ b/android/app/src/com/android/bluetooth/tbs/TbsService.java
@@ -30,14 +30,11 @@
 import com.android.bluetooth.Utils;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.gatt.GattService;
-import com.android.bluetooth.le_audio.LeAudioService;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.UUID;
 
 public class TbsService extends ProfileService {
@@ -60,10 +57,6 @@
         void onJoinCalls(int requestId, List<UUID> uuids);
     }
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static TbsService sTbsService;
-
-    // TODO(b/422543753) Available only on `Flags.adapterServiceProfilesUseOptional()`
     private final GattService unusedGattService;
     private final Map<BluetoothDevice, Integer> mDeviceAuthorizations = new HashMap<>();
     private final TbsGeneric mTbsGeneric;
@@ -74,14 +67,7 @@
 
     public TbsService(AdapterService adapterService, GattService gattService) {
         super(BluetoothProfile.LE_CALL_CONTROL, requireNonNull(adapterService));
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            unusedGattService = requireNonNull(gattService);
-        } else {
-            unusedGattService = null;
-        }
-
-        // Mark service as started
-        setTbsService(this);
+        unusedGattService = requireNonNull(gattService);
 
         mTbsGeneric = new TbsGeneric(adapterService, new TbsGatt(adapterService, this));
     }
@@ -99,46 +85,10 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        if (sTbsService == null) {
-            Log.w(TAG, "cleanup() called before initialization");
-            return;
-        }
-
-        // Mark service as stopped
-        setTbsService(null);
-
         mTbsGeneric.cleanup();
-
         mDeviceAuthorizations.clear();
     }
 
-    /**
-     * Get the TbsService instance
-     *
-     * @return TbsService instance
-     */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized TbsService getTbsService() {
-        if (sTbsService == null) {
-            Log.w(TAG, "getTbsService: service is NULL");
-            return null;
-        }
-
-        if (!sTbsService.isAvailable()) {
-            Log.w(TAG, "getTbsService: service is not available");
-            return null;
-        }
-
-        return sTbsService;
-    }
-
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized void setTbsService(TbsService instance) {
-        Log.d(TAG, "setTbsService: set to=" + instance);
-
-        sTbsService = instance;
-    }
-
     public void onDeviceUnauthorized(BluetoothDevice device) {
         if (Utils.isPtsTestMode()) {
             Log.d(TAG, "PTS test: setDeviceAuthorized");
@@ -198,12 +148,7 @@
             return authorization;
         }
 
-        final Optional<LeAudioService> leAudio;
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            leAudio = mAdapterService.getLeAudioService();
-        } else {
-            leAudio = Optional.ofNullable(LeAudioService.getLeAudioService());
-        }
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isEmpty()) {
             Log.e(TAG, "TBS access not permitted. LeAudioService not available");
             return BluetoothDevice.ACCESS_UNKNOWN;
diff --git a/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java b/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java
index 0a0e6c8..9d9581a 100644
--- a/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java
+++ b/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java
@@ -375,14 +375,9 @@
         mCallInfo = requireNonNullElseGet(callInfo, CallInfo::new);
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
     Optional<HeadsetService> getHeadsetService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
-                    .flatMap(AdapterService::getHeadsetService);
-        } else {
-            return Optional.ofNullable(HeadsetService.getHeadsetService());
-        }
+        return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+                .flatMap(AdapterService::getHeadsetService);
     }
 
     public static BluetoothInCallService getInstance() {
@@ -1711,14 +1706,9 @@
         private int mCcid = ContentControlIdKeeper.CCID_INVALID;
 
         // BluetoothInCallService
-        // TODO(b/422543753) Delete on flag cleanup
         private static Optional<TbsService> getTbsService() {
-            if (Flags.adapterServiceProfilesUseOptional()) {
-                return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
-                        .flatMap(AdapterService::getTbsService);
-            } else {
-                return Optional.ofNullable(TbsService.getTbsService());
-            }
+            return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+                    .flatMap(AdapterService::getTbsService);
         }
 
         @Override
diff --git a/android/app/src/com/android/bluetooth/vaps/VapsServerService.java b/android/app/src/com/android/bluetooth/vaps/VapsServerService.java
index 3274483..7653d6c 100644
--- a/android/app/src/com/android/bluetooth/vaps/VapsServerService.java
+++ b/android/app/src/com/android/bluetooth/vaps/VapsServerService.java
@@ -53,7 +53,6 @@
 import com.android.bluetooth.btservice.ActiveDeviceManager;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.btservice.storage.DatabaseManager;
 import com.android.bluetooth.flags.Flags;
 import com.android.internal.annotations.GuardedBy;
diff --git a/android/app/src/com/android/bluetooth/vc/VolumeControlService.java b/android/app/src/com/android/bluetooth/vc/VolumeControlService.java
index e477c1d..2ba7779 100644
--- a/android/app/src/com/android/bluetooth/vc/VolumeControlService.java
+++ b/android/app/src/com/android/bluetooth/vc/VolumeControlService.java
@@ -53,14 +53,10 @@
 import android.util.Log;
 
 import com.android.bluetooth.Utils;
-import com.android.bluetooth.bass_client.BassClientService;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.ConnectableProfile;
 import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -91,9 +87,6 @@
 
     private static final int GROUP_ID_INVALID = -1;
 
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    private static VolumeControlService sVolumeControlService;
-
     @VisibleForTesting
     @GuardedBy("mCallbacks")
     final RemoteCallbackList<IBluetoothVolumeControlCallback> mCallbacks =
@@ -119,9 +112,6 @@
 
     private Boolean mIgnoreSetVolumeFromAF = false;
 
-    // TODO(b/422543753) Delete on flag cleanup
-    @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
-
     public VolumeControlService(AdapterService adapterService) {
         this(adapterService, Flags.vcpOnMainLooper() ? Looper.getMainLooper() : null, null);
     }
@@ -155,37 +145,9 @@
                 mStateMachinesLooper = looper;
             }
         }
-        setVolumeControlService(this);
         mNativeInterface.init();
     }
 
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<BassClientService> getBassClientService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getBassClientService();
-        } else {
-            return Optional.ofNullable(mFactory.getBassClientService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getCsipSetCoordinatorService();
-        } else {
-            return Optional.ofNullable(mFactory.getCsipSetCoordinatorService());
-        }
-    }
-
-    // TODO(b/422543753) Delete on flag cleanup
-    Optional<LeAudioService> getLeAudioService() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            return mAdapterService.getLeAudioService();
-        } else {
-            return Optional.ofNullable(mFactory.getLeAudioService());
-        }
-    }
-
     public void syncPost(Consumer<VolumeControlService> consumer) {
         syncPost(
                 (s) -> {
@@ -255,9 +217,6 @@
     public void cleanup() {
         Log.i(TAG, "cleanup()");
 
-        // Mark service as stopped
-        setVolumeControlService(null);
-
         // Destroy state machines and stop handler thread
         synchronized (mStateMachines) {
             for (VolumeControlStateMachine sm : mStateMachines.values()) {
@@ -297,30 +256,6 @@
         return mAudioInputs;
     }
 
-    /**
-     * @return VolumeControlService instance
-     */
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    public static synchronized VolumeControlService getVolumeControlService() {
-        if (sVolumeControlService == null) {
-            Log.w(TAG, "getVolumeControlService(): service is NULL");
-            return null;
-        }
-
-        if (!sVolumeControlService.isAvailable()) {
-            Log.w(TAG, "getVolumeControlService(): service is not available");
-            return null;
-        }
-        return sVolumeControlService;
-    }
-
-    @VisibleForTesting
-    @Deprecated // TODO(b/422543753) Delete on flag cleanup
-    static synchronized void setVolumeControlService(VolumeControlService instance) {
-        Log.d(TAG, "setVolumeControlService(): set to: " + instance);
-        sVolumeControlService = instance;
-    }
-
     @Override
     public boolean connect(BluetoothDevice device) {
         enforceMainLooperIsUsed();
@@ -386,7 +321,7 @@
             return mGroupIds.getOrDefault(device, GROUP_ID_INVALID);
         }
 
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
         if (csipSetCoordinator.isPresent()) {
             int groupId = csipSetCoordinator.get().getGroupId(device, BluetoothUuid.CAP);
             if (groupId != CSIS_GROUP_ID_INVALID) {
@@ -396,7 +331,7 @@
             Log.w(TAG, "CSIP not available");
         }
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isPresent()) {
             int groupId = leAudio.get().getGroupId(device);
             if (groupId != LE_AUDIO_GROUP_ID_INVALID) {
@@ -425,7 +360,7 @@
             return result;
         }
 
-        final var csipSetCoordinator = getCsipSetCoordinatorService();
+        final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
         if (csipSetCoordinator.isPresent()) {
             result = csipSetCoordinator.get().getGroupDevicesOrdered(groupId);
             if (!result.isEmpty()) {
@@ -435,7 +370,7 @@
             Log.w(TAG, "CSIP not available");
         }
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isPresent()) {
             result = leAudio.get().getGroupDevices(groupId);
             if (!result.isEmpty()) {
@@ -1012,11 +947,11 @@
             }
         }
 
-        final var leAudio = getLeAudioService();
+        final var leAudio = mAdapterService.getLeAudioService();
         if (leAudio.isPresent()) {
             int currentlyActiveGroupId = leAudio.get().getActiveGroupId();
             if (currentlyActiveGroupId == GROUP_ID_INVALID || groupId != currentlyActiveGroupId) {
-                final var bassClient = getBassClientService();
+                final var bassClient = mAdapterService.getBassClientService();
                 if (bassClient.isEmpty()
                         || bassClient.get().getSyncedBroadcastSinks().stream()
                                 .map(dev -> getGroupId(dev))
diff --git a/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
index 06930a9..5f31d13 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
@@ -180,11 +180,6 @@
     }
 
     @Test
-    public void testGetA2dpService() {
-        assertThat(A2dpService.getA2dpService()).isEqualTo(mA2dpService);
-    }
-
-    @Test
     public void testStopA2dpService() {
         // Prepare: connect and set active device
         doReturn(true).when(mMockNativeInterface).setActiveDevice(any(BluetoothDevice.class));
diff --git a/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkServiceTest.java
index 05a0085..1b255f0 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkServiceTest.java
@@ -95,7 +95,6 @@
     @After
     public void tearDown() throws Exception {
         mService.cleanup();
-        assertThat(A2dpSinkService.getA2dpSinkService()).isNull();
     }
 
     private void syncHandler(int... what) {
@@ -130,7 +129,6 @@
     /** Test that initialization of the service completes and that we can get a instance */
     @Test
     public void testInitialize() {
-        assertThat(A2dpSinkService.getA2dpSinkService()).isEqualTo(mService);
         assertThat(mLooper.nextMessage()).isNull();
     }
 
diff --git a/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandlerTest.java b/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandlerTest.java
index 45e2f06..9af43af 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandlerTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandlerTest.java
@@ -47,10 +47,8 @@
 import com.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.storage.DatabaseManager;
-import com.android.bluetooth.flags.Flags;
 import com.android.tests.bluetooth.MockitoRule;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -102,13 +100,9 @@
         final var mAvrcpControllerNativeInterface = mock(AvrcpControllerNativeInterface.class);
         final var avrcpControllerService =
                 new AvrcpControllerService(mAdapterService, mAvrcpControllerNativeInterface);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(avrcpControllerService))
-                    .when(mAdapterService)
-                    .getAvrcpControllerService();
-        } else {
-            AvrcpControllerService.setAvrcpControllerService(avrcpControllerService);
-        }
+        doReturn(Optional.of(avrcpControllerService))
+                .when(mAdapterService)
+                .getAvrcpControllerService();
 
         // Mock the looper
         if (Looper.myLooper() == null) {
@@ -126,13 +120,6 @@
         mStreamHandler = spy(new A2dpSinkStreamHandler(mAdapterService, mNativeInterface));
     }
 
-    @After
-    public void tearDown() throws Exception {
-        if (!Flags.adapterServiceProfilesUseOptional()) {
-            AvrcpControllerService.setAvrcpControllerService(null);
-        }
-    }
-
     @Test
     public void testSrcStart() {
         // Stream started without local play, expect no change in streaming.
diff --git a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerServiceTest.java
index cc56655..39cd9b5 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerServiceTest.java
@@ -50,7 +50,6 @@
 import com.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService.BrowseResult;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.storage.DatabaseManager;
-import com.android.bluetooth.flags.Flags;
 import com.android.tests.bluetooth.MockitoRule;
 
 import org.junit.After;
@@ -100,11 +99,7 @@
         mockGetSystemService(mAdapterService, AudioManager.class);
 
         mService = new AvrcpControllerService(mAdapterService, mNativeInterface);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mA2dpSinkService)).when(mAdapterService).getA2dpSinkService();
-        } else {
-            A2dpSinkService.setA2dpSinkService(mA2dpSinkService);
-        }
+        doReturn(Optional.of(mA2dpSinkService)).when(mAdapterService).getA2dpSinkService();
 
         mService.mDeviceStateMap.put(mDevice1, mStateMachine);
         final Intent bluetoothBrowserMediaServiceStartIntent =
@@ -120,16 +115,6 @@
     @After
     public void tearDown() throws Exception {
         mService.cleanup();
-        if (!Flags.adapterServiceProfilesUseOptional()) {
-            A2dpSinkService.setA2dpSinkService(null);
-        }
-        mService = AvrcpControllerService.getAvrcpControllerService();
-        assertThat(mService).isNull();
-    }
-
-    @Test
-    public void initialize() {
-        assertThat(AvrcpControllerService.getAvrcpControllerService()).isNotNull();
     }
 
     @Test
@@ -166,11 +151,7 @@
 
     @Test
     public void setActiveDevice_whenA2dpSinkServiceIsNotInitialized_returnsFalse() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.empty()).when(mAdapterService).getA2dpSinkService();
-        } else {
-            A2dpSinkService.setA2dpSinkService(null);
-        }
+        doReturn(Optional.empty()).when(mAdapterService).getA2dpSinkService();
         assertThat(mService.setActiveDevice(mDevice1)).isFalse();
         assertThat(mService.getActiveDevice()).isNull();
     }
diff --git a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java
index 7d4e3c6..a0eebe2 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java
@@ -64,7 +64,6 @@
 import com.android.bluetooth.TestUtils;
 import com.android.bluetooth.a2dpsink.A2dpSinkService;
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 import com.android.tests.bluetooth.MockitoRule;
 
 import org.junit.After;
@@ -134,12 +133,7 @@
             Looper.prepare();
         }
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mA2dpSinkService)).when(mAdapterService).getA2dpSinkService();
-        } else {
-            // Set a mock A2dpSinkService for audio focus calls
-            A2dpSinkService.setA2dpSinkService(mA2dpSinkService);
-        }
+        doReturn(Optional.of(mA2dpSinkService)).when(mAdapterService).getA2dpSinkService();
 
         // Start the Bluetooth Media Browser Service
         final Intent bluetoothBrowserMediaServiceStartIntent =
@@ -157,9 +151,6 @@
     @After
     public void tearDown() throws Exception {
         destroyStateMachine(mAvrcpStateMachine);
-        if (!Flags.adapterServiceProfilesUseOptional()) {
-            A2dpSinkService.setA2dpSinkService(null);
-        }
     }
 
     /** Create a state machine to test */
diff --git a/android/app/tests/unit/src/com/android/bluetooth/bas/BatteryServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/bas/BatteryServiceTest.java
index 6fc9d73..3362541 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/bas/BatteryServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/bas/BatteryServiceTest.java
@@ -78,12 +78,6 @@
     @After
     public void tearDown() {
         mService.cleanup();
-        assertThat(BatteryService.getBatteryService()).isNull();
-    }
-
-    @Test
-    public void getBatteryService() {
-        assertThat(BatteryService.getBatteryService()).isEqualTo(mService);
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
index 2792e15..aefd391 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
@@ -91,7 +91,6 @@
 
 import com.android.bluetooth.TestUtils;
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.le_audio.LeAudioService;
@@ -137,7 +136,6 @@
     @Mock private PeriodicAdvertisingManager mPeriodicAdvertisingManager;
     @Mock private AdapterService mAdapterService;
     @Mock private BluetoothLeScannerWrapper mBluetoothLeScannerWrapper;
-    @Mock private ServiceFactory mServiceFactory;
     @Mock private ScanController mScanController;
     @Mock private CsipSetCoordinatorService mCsipService;
     @Mock private LeAudioService mLeAudioService;
@@ -327,16 +325,8 @@
         mBassClientService = new BassClientService(mAdapterService);
         mBassClientService.setAvailable(true);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mCsipService))
-                    .when(mAdapterService)
-                    .getCsipSetCoordinatorService();
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            mBassClientService.mServiceFactory = mServiceFactory;
-            doReturn(mCsipService).when(mServiceFactory).getCsipSetCoordinatorService();
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-        }
+        doReturn(Optional.of(mCsipService)).when(mAdapterService).getCsipSetCoordinatorService();
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
         mBassScanCallbackCaptor = ArgumentCaptor.forClass(IScannerCallback.class);
         doAnswer(
@@ -363,7 +353,6 @@
         mBassClientService.unregisterCallback(mCallback);
 
         mBassClientService.cleanup();
-        assertThat(BassClientService.getBassClientService()).isNull();
         mStateMachines.clear();
         BassObjectsFactory.setInstanceForTesting(null);
     }
@@ -371,7 +360,6 @@
     /** Test to verify that BassClientService can be successfully started */
     @Test
     public void testGetBassClientService() {
-        assertThat(mBassClientService).isEqualTo(BassClientService.getBassClientService());
         // Verify default connection and audio states
         assertThat(mBassClientService.getConnectionState(mCurrentDevice))
                 .isEqualTo(STATE_DISCONNECTED);
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java
index 57b6a1f..b8798ed 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java
@@ -91,7 +91,6 @@
     @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
 
     @Mock private AdapterService mAdapterService;
-    @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
     @Mock private A2dpService mA2dpService;
     @Mock private HeadsetService mHeadsetService;
     @Mock private HearingAidService mHearingAidService;
@@ -135,19 +134,12 @@
 
         mockGetSystemService(mAdapterService, AudioManager.class, mAudioManager);
         when(mAdapterService.getDatabaseManager()).thenReturn(mDatabaseManager);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
-            doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
-            doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            when(mServiceFactory.getA2dpService()).thenReturn(mA2dpService);
-            when(mServiceFactory.getHeadsetService()).thenReturn(mHeadsetService);
-            when(mServiceFactory.getHearingAidService()).thenReturn(mHearingAidService);
-            when(mServiceFactory.getLeAudioService()).thenReturn(mLeAudioService);
-        }
+        doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
+        doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
+        doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
-        mActiveDeviceManager = new ActiveDeviceManager(mAdapterService, mServiceFactory);
+        mActiveDeviceManager = new ActiveDeviceManager(mAdapterService);
         mActiveDeviceManager.start();
 
         // Get devices for testing
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/BondStateMachineTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/BondStateMachineTest.java
index 897db78..ac282b6 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/BondStateMachineTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/BondStateMachineTest.java
@@ -45,8 +45,6 @@
 import android.os.Bundle;
 import android.os.ParcelUuid;
 import android.os.UserHandle;
-import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
 import android.platform.test.flag.junit.SetFlagsRule;
 
 import androidx.test.filters.MediumTest;
@@ -586,8 +584,7 @@
     }
 
     @Test
-    @EnableFlags(Flags.FLAG_ADAPTER_SERVICE_PROFILES_USE_OPTIONAL)
-    public void clearProfilePriority_whenAdapterServiceProfilesUseOptionalFlagOn_callsOptional() {
+    public void clearProfilePriority() {
         doReturn(Optional.of(mHidHostService)).when(mAdapterService).getHidHostService();
         doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
         // Random profile intentionally left out to test empty case
@@ -640,44 +637,6 @@
         verify(mHapClientService, never()).setConnectionPolicy(any(), anyInt());
     }
 
-    @Test
-    @DisableFlags(Flags.FLAG_ADAPTER_SERVICE_PROFILES_USE_OPTIONAL)
-    public void clearProfilePriority_whenAdapterServiceProfilesUseOptionalFlagOff_callsStatic() {
-        // The following random profiles intentionally left out to test empty case: HidHostService
-        // A2dpService PbapClientService LeAudioService CsipSetCoordinatorService
-        // VolumeControlService HapClientService
-        // Additionally, their public static setters don't exist / are private.
-        doReturn(true).when(mHeadsetService).isAvailable();
-        doReturn(true).when(mHeadsetClientService).isAvailable();
-        doReturn(true).when(mA2dpSinkService).isAvailable();
-        HeadsetService.setHeadsetService(mHeadsetService);
-        HeadsetClientService.setHeadsetClientService(mHeadsetClientService);
-        A2dpSinkService.setA2dpSinkService(mA2dpSinkService);
-
-        mStateMachine.clearProfilePriority(mDevice);
-
-        InOrder inOrder = inOrder(mHeadsetService, mHeadsetClientService, mA2dpSinkService);
-
-        inOrder.verify(mHeadsetService)
-                .setConnectionPolicy(eq(mDevice), eq(CONNECTION_POLICY_UNKNOWN));
-        inOrder.verify(mHeadsetClientService)
-                .setConnectionPolicy(eq(mDevice), eq(CONNECTION_POLICY_UNKNOWN));
-        inOrder.verify(mA2dpSinkService)
-                .setConnectionPolicy(eq(mDevice), eq(CONNECTION_POLICY_UNKNOWN));
-
-        verify(mHidHostService, never()).setConnectionPolicy(any(), anyInt());
-        verify(mA2dpService, never()).setConnectionPolicy(any(), anyInt());
-        verify(mPbapClientService, never()).setConnectionPolicy(any(), anyInt());
-        verify(mLeAudioService, never()).setConnectionPolicy(any(), anyInt());
-        verify(mCsipSetCoordinatorService, never()).setConnectionPolicy(any(), anyInt());
-        verify(mVolumeControlService, never()).setConnectionPolicy(any(), anyInt());
-        verify(mHapClientService, never()).setConnectionPolicy(any(), anyInt());
-
-        HeadsetService.setHeadsetService(null);
-        HeadsetClientService.setHeadsetClientService(null);
-        A2dpSinkService.setA2dpSinkService(null);
-    }
-
     private void testSendIntentCase(
             int oldState,
             int newState,
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/PhonePolicyTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/PhonePolicyTest.java
index b61b45c..a1155a8 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/PhonePolicyTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/PhonePolicyTest.java
@@ -61,7 +61,6 @@
 import com.android.bluetooth.btservice.storage.DatabaseManager;
 import com.android.bluetooth.btservice.storage.MetadataDatabase;
 import com.android.bluetooth.csip.CsipSetCoordinatorService;
-import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.hap.HapClientService;
 import com.android.bluetooth.hearingaid.HearingAidService;
 import com.android.bluetooth.hfp.HeadsetService;
@@ -92,7 +91,6 @@
     @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
 
     @Mock private AdapterService mAdapterService;
-    @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
     @Mock private HeadsetService mHeadsetService;
     @Mock private A2dpService mA2dpService;
     @Mock private LeAudioService mLeAudioService;
@@ -126,26 +124,14 @@
         doReturn(BluetoothAdapter.STATE_ON).when(mAdapterService).getState();
         doReturn(MAX_CONNECTED_AUDIO_DEVICES).when(mAdapterService).getMaxConnectedAudioDevices();
         doReturn(mDatabaseManager).when(mAdapterService).getDatabaseManager();
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
-            doReturn(Optional.of(mCsipSetCoordinatorService))
-                    .when(mAdapterService)
-                    .getCsipSetCoordinatorService();
-            doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
-            doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
-            doReturn(Optional.of(mHapClientService)).when(mAdapterService).getHapClientService();
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            // Setup the mocked factory to return mocked services
-            doReturn(mA2dpService).when(mServiceFactory).getA2dpService();
-            doReturn(mCsipSetCoordinatorService)
-                    .when(mServiceFactory)
-                    .getCsipSetCoordinatorService();
-            doReturn(mHeadsetService).when(mServiceFactory).getHeadsetService();
-            doReturn(mHearingAidService).when(mServiceFactory).getHearingAidService();
-            doReturn(mHapClientService).when(mServiceFactory).getHapClientService();
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-        }
+        doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
+        doReturn(Optional.of(mCsipSetCoordinatorService))
+                .when(mAdapterService)
+                .getCsipSetCoordinatorService();
+        doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
+        doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
+        doReturn(Optional.of(mHapClientService)).when(mAdapterService).getHapClientService();
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
         // Most common default
         doReturn(CONNECTION_POLICY_UNKNOWN).when(mHeadsetService).getConnectionPolicy(any());
@@ -158,7 +144,7 @@
 
         mockGetRemoteDevice(mAdapterService, mDevice1, mDevice2, mDevice3, mDevice4);
 
-        mPhonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper(), mServiceFactory);
+        mPhonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper());
         mOriginalDualModeState = Utils.isDualModeAudioEnabled();
     }
 
@@ -906,8 +892,7 @@
                         .build();
         DatabaseManager db = new DatabaseManager(mAdapterService);
         doReturn(db).when(mAdapterService).getDatabaseManager();
-        PhonePolicy phonePolicy =
-                new PhonePolicy(mAdapterService, mLooper.getLooper(), mServiceFactory);
+        PhonePolicy phonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper());
 
         db.start(mDatabase);
         TestUtils.waitForLooperToFinishScheduledTask(db.getHandlerLooper());
@@ -937,8 +922,7 @@
                         .build();
         DatabaseManager db = new DatabaseManager(mAdapterService);
         doReturn(db).when(mAdapterService).getDatabaseManager();
-        PhonePolicy phonePolicy =
-                new PhonePolicy(mAdapterService, mLooper.getLooper(), mServiceFactory);
+        PhonePolicy phonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper());
 
         db.start(mDatabase);
         TestUtils.waitForLooperToFinishScheduledTask(db.getHandlerLooper());
@@ -973,8 +957,7 @@
                         .build();
         DatabaseManager db = new DatabaseManager(mAdapterService);
         doReturn(db).when(mAdapterService).getDatabaseManager();
-        PhonePolicy phonePolicy =
-                new PhonePolicy(mAdapterService, mLooper.getLooper(), mServiceFactory);
+        PhonePolicy phonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper());
 
         db.start(mDatabase);
         TestUtils.waitForLooperToFinishScheduledTask(db.getHandlerLooper());
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/RemoteDevicesTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/RemoteDevicesTest.java
index 19990c2..81370cd 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/RemoteDevicesTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/RemoteDevicesTest.java
@@ -254,9 +254,7 @@
         // .BATTERY_LEVEL_UNKNOWN
         mRemoteDevices.onHeadsetConnectionStateChanged(
                 mDevice, STATE_DISCONNECTING, STATE_DISCONNECTED);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            verify(mAdapterService).getBatteryService();
-        }
+        verify(mAdapterService).getBatteryService();
         verifyBatteryLevelUpdate(BluetoothDevice.BATTERY_LEVEL_UNKNOWN);
 
         // Verify that updating battery level triggers ACTION_BATTERY_LEVEL_CHANGED intent again
@@ -272,9 +270,7 @@
 
         makeBatteryServiceAvailable(mDevice);
         assertThat(mRemoteDevices.hasBatteryService(mDevice)).isTrue();
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            verify(mAdapterService).getBatteryService();
-        }
+        verify(mAdapterService).getBatteryService();
 
         // Verify that updating battery level triggers ACTION_BATTERY_LEVEL_CHANGED intent
         mRemoteDevices.updateBatteryLevel(mDevice, batteryLevel, /* fromBas= */ false);
@@ -283,19 +279,13 @@
         // Verify that battery level is not reset
         mRemoteDevices.onHeadsetConnectionStateChanged(
                 mDevice, STATE_DISCONNECTING, STATE_DISCONNECTED);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            verify(mAdapterService, times(2)).getBatteryService();
-        }
+        verify(mAdapterService, times(2)).getBatteryService();
 
         assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNotNull();
         assertThat(mRemoteDevices.getDeviceProperties(mDevice).getBatteryLevel())
                 .isEqualTo(batteryLevel);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
-        } else {
-            BatteryService.setBatteryService(null);
-        }
+        doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
         verifyNoMoreInteractions(mAdapterService);
     }
 
@@ -490,9 +480,7 @@
         // .BATTERY_LEVEL_UNKNOWN
         mRemoteDevices.onHeadsetClientConnectionStateChanged(
                 mDevice, STATE_DISCONNECTING, STATE_DISCONNECTED);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            verify(mAdapterService).getBatteryService();
-        }
+        verify(mAdapterService).getBatteryService();
         verifyBatteryLevelUpdate(BluetoothDevice.BATTERY_LEVEL_UNKNOWN);
 
         // Verify that updating battery level triggers ACTION_BATTERY_LEVEL_CHANGED intent again
@@ -508,9 +496,7 @@
 
         makeBatteryServiceAvailable(mDevice);
         assertThat(mRemoteDevices.hasBatteryService(mDevice)).isTrue();
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            verify(mAdapterService).getBatteryService();
-        }
+        verify(mAdapterService).getBatteryService();
 
         // Verify that device property is null initially
         assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNull();
@@ -522,19 +508,13 @@
         // Verify that battery level is not reset.
         mRemoteDevices.onHeadsetClientConnectionStateChanged(
                 mDevice, STATE_DISCONNECTING, STATE_DISCONNECTED);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            verify(mAdapterService, times(2)).getBatteryService();
-        }
+        verify(mAdapterService, times(2)).getBatteryService();
 
         assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNotNull();
         assertThat(mRemoteDevices.getDeviceProperties(mDevice).getBatteryLevel())
                 .isEqualTo(batteryLevel);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
-        } else {
-            BatteryService.setBatteryService(null);
-        }
+        doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
         verifyNoMoreInteractions(mAdapterService);
     }
 
@@ -545,9 +525,7 @@
 
         makeBatteryServiceAvailable(mDevice);
         assertThat(mRemoteDevices.hasBatteryService(mDevice)).isTrue();
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            verify(mAdapterService).getBatteryService();
-        }
+        verify(mAdapterService).getBatteryService();
 
         // Verify that device property is null initially
         assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNull();
@@ -564,11 +542,7 @@
         mRemoteDevices.resetBatteryLevel(mDevice, /* fromBas= */ true);
         verifyBatteryLevelUpdate(batteryLevel);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
-        } else {
-            BatteryService.setBatteryService(null);
-        }
+        doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
         verifyNoMoreInteractions(mAdapterService);
     }
 
@@ -578,9 +552,7 @@
 
         makeBatteryServiceAvailable(mDevice);
         assertThat(mRemoteDevices.hasBatteryService(mDevice)).isTrue();
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            verify(mAdapterService).getBatteryService();
-        }
+        verify(mAdapterService).getBatteryService();
 
         // Verify that device property is null initially
         assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNull();
@@ -599,11 +571,7 @@
                 .isEqualTo(batteryLevel);
         verifyNoMoreInteractions(mAdapterService);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
-        } else {
-            BatteryService.setBatteryService(null);
-        }
+        doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
         verifyNoMoreInteractions(mAdapterService);
     }
 
@@ -700,13 +668,7 @@
     private void makeBatteryServiceAvailable(BluetoothDevice device) {
         BatteryService batteryService = mock(BatteryService.class);
         when(batteryService.getConnectionState(device)).thenReturn(STATE_CONNECTED);
-
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(batteryService)).when(mAdapterService).getBatteryService();
-        } else {
-            when(batteryService.isAvailable()).thenReturn(true);
-            BatteryService.setBatteryService(batteryService);
-        }
+        doReturn(Optional.of(batteryService)).when(mAdapterService).getBatteryService();
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/SilenceDeviceManagerTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/SilenceDeviceManagerTest.java
index 1de2081..781121a 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/SilenceDeviceManagerTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/SilenceDeviceManagerTest.java
@@ -32,7 +32,6 @@
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.inOrder;
 import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothDevice;
 import android.content.Intent;
@@ -74,7 +73,6 @@
     @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
 
     @Mock private AdapterService mAdapterService;
-    @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
     @Mock private A2dpService mA2dpService;
     @Mock private HeadsetService mHeadsetService;
 
@@ -88,18 +86,13 @@
     @Before
     public void setUp() {
         mInOrder = inOrder(mAdapterService);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
-            doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
-        } else {
-            when(mServiceFactory.getA2dpService()).thenReturn(mA2dpService);
-            when(mServiceFactory.getHeadsetService()).thenReturn(mHeadsetService);
-        }
+        doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
+        doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
 
         mHandlerThread = new HandlerThread("SilenceManagerTestHandlerThread");
         mHandlerThread.start();
         mLooper = mHandlerThread.getLooper();
-        mManager = new SilenceDeviceManager(mAdapterService, mServiceFactory, mLooper);
+        mManager = new SilenceDeviceManager(mAdapterService, mLooper);
     }
 
     @After
diff --git a/android/app/tests/unit/src/com/android/bluetooth/csip/CsipSetCoordinatorServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/csip/CsipSetCoordinatorServiceTest.java
index 66e3dd9..4d43e65 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/csip/CsipSetCoordinatorServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/csip/CsipSetCoordinatorServiceTest.java
@@ -65,8 +65,6 @@
 import com.android.bluetooth.TestLooper;
 import com.android.bluetooth.Utils;
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.tests.bluetooth.MockitoRule;
 
@@ -79,7 +77,6 @@
 import org.junit.runner.RunWith;
 import org.mockito.InOrder;
 import org.mockito.Mock;
-import org.mockito.Spy;
 import org.mockito.hamcrest.MockitoHamcrest;
 
 import java.util.List;
@@ -93,8 +90,6 @@
     @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
     @Rule public final MockitoRule mMockitoRule = new MockitoRule();
 
-    // TODO(b/422543753) Delete on flag cleanup
-    @Spy private ServiceFactory mServiceFactory = new ServiceFactory();
     @Mock private AdapterService mAdapterService;
     @Mock private LeAudioService mLeAudioService;
     @Mock private CsipSetCoordinatorNativeInterface mNativeInterface;
@@ -125,18 +120,14 @@
                 .when(mAdapterService)
                 .getRemoteUuids(any());
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-        }
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
         mInOrder = inOrder(mAdapterService);
         mLooper = new TestLooper();
 
         mService =
                 new CsipSetCoordinatorService(
-                        mAdapterService, mLooper.getLooper(), mNativeInterface, mServiceFactory);
+                        mAdapterService, mLooper.getLooper(), mNativeInterface);
         mService.setAvailable(true);
         mNativeCallback = new CsipSetCoordinatorNativeInterface(mAdapterService, mService);
 
@@ -146,12 +137,6 @@
     @After
     public void tearDown() throws Exception {
         mService.cleanup();
-        assertThat(CsipSetCoordinatorService.getCsipSetCoordinatorService()).isNull();
-    }
-
-    @Test
-    public void getService() {
-        assertThat(CsipSetCoordinatorService.getCsipSetCoordinatorService()).isEqualTo(mService);
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hap/HapClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hap/HapClientServiceTest.java
index e1d192b..c9df83b 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hap/HapClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hap/HapClientServiceTest.java
@@ -71,7 +71,6 @@
 import com.android.bluetooth.TestLooper;
 import com.android.bluetooth.Utils;
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
 import com.android.tests.bluetooth.FlagsWrapper;
@@ -103,7 +102,6 @@
 
     @Mock private AdapterService mAdapterService;
     @Mock private HapClientNativeInterface mNativeInterface;
-    @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
     @Mock private CsipSetCoordinatorService mCsipService;
     @Mock private IBluetoothHapClientCallback mFrameworkCallback;
     @Mock private Binder mBinder;
@@ -140,13 +138,7 @@
                 .when(mAdapterService)
                 .getProfileConnectionPolicy(any(), anyInt());
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mCsipService))
-                    .when(mAdapterService)
-                    .getCsipSetCoordinatorService();
-        } else {
-            doReturn(mCsipService).when(mServiceFactory).getCsipSetCoordinatorService();
-        }
+        doReturn(Optional.of(mCsipService)).when(mAdapterService).getCsipSetCoordinatorService();
 
         doReturn(mBinder).when(mFrameworkCallback).asBinder();
 
@@ -186,21 +178,12 @@
         mService = new HapClientService(mAdapterService, mLooper.getLooper(), mNativeInterface);
         mService.setAvailable(true);
 
-        mService.mFactory = mServiceFactory;
         synchronized (mService.mCallbacks) {
             mService.mCallbacks.register(mFrameworkCallback);
         }
     }
 
     @Test
-    public void getHapService() {
-        initTest();
-        assertThat(HapClientService.getHapClientService()).isEqualTo(mService);
-        mService.cleanup();
-        assertThat(HapClientService.getHapClientService()).isNull();
-    }
-
-    @Test
     public void getConnectionPolicy() {
         initTest();
         for (int policy :
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hearingaid/HearingAidServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hearingaid/HearingAidServiceTest.java
index b7a7b14..a3a11a5 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hearingaid/HearingAidServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hearingaid/HearingAidServiceTest.java
@@ -128,7 +128,6 @@
     @After
     public void tearDown() {
         mService.cleanup();
-        assertThat(HearingAidService.getHearingAidService()).isNull();
     }
 
     @SafeVarargs
@@ -169,11 +168,6 @@
     }
 
     @Test
-    public void getHearingAidService() {
-        assertThat(HearingAidService.getHearingAidService()).isEqualTo(mService);
-    }
-
-    @Test
     public void getConnectionPolicy() {
         for (int policy :
                 List.of(
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java
index cf08e0d..0daf4fe 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java
@@ -82,7 +82,6 @@
 import com.android.bluetooth.btservice.ActiveDeviceManager;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.RemoteDevices;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.btservice.SilenceDeviceManager;
 import com.android.bluetooth.btservice.storage.DatabaseManager;
 import com.android.bluetooth.flags.Flags;
@@ -137,7 +136,6 @@
 
     @Mock private HeadsetNativeInterface mNativeInterface;
     @Mock private LeAudioService mLeAudioService;
-    @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
     @Mock private AdapterService mAdapterService;
     @Mock private ActiveDeviceManager mActiveDeviceManager;
     @Mock private SilenceDeviceManager mSilenceDeviceManager;
@@ -265,8 +263,6 @@
     public void tearDown() {
         mTestLooper.dispatchAll();
         mHeadsetService.cleanup();
-        mHeadsetService = HeadsetService.getHeadsetService();
-        assertThat(mHeadsetService).isNull();
         // Clear classes that is spied on and has static life time
         HeadsetObjectsFactory.setInstanceForTesting(null);
         mBondedDevices.clear();
@@ -275,7 +271,6 @@
     /** Test to verify that HeadsetService can be successfully started */
     @Test
     public void testGetHeadsetService() {
-        assertThat(HeadsetService.getHeadsetService()).isEqualTo(mHeadsetService);
         // Verify default connection and audio states
         BluetoothDevice device = getTestDevice(0);
         assertThat(mHeadsetService.getConnectionState(device)).isEqualTo(STATE_DISCONNECTED);
@@ -1804,13 +1799,7 @@
     public void testHfpOnlyHandoverToLeAudioAfterScoDisconnect() {
         BluetoothDevice device = getTestDevice(0);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            assertThat(mHeadsetService.mFactory).isNotNull();
-            mHeadsetService.mFactory = mServiceFactory;
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-        }
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
         doReturn(List.of(device)).when(mLeAudioService).getConnectedDevices();
         List<BluetoothDevice> activeDeviceList = new ArrayList<>();
@@ -1896,13 +1885,7 @@
     public void testStopVoiceRecognitionBeforeStop_returnsFalse() {
         BluetoothDevice device = getTestDevice(0);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            assertThat(mHeadsetService.mFactory).isNotNull();
-            mHeadsetService.mFactory = mServiceFactory;
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-        }
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
         doReturn(List.of(device)).when(mLeAudioService).getConnectedDevices();
         List<BluetoothDevice> activeDeviceList = new ArrayList<>();
@@ -1931,13 +1914,7 @@
         BluetoothDevice device = getTestDevice(0);
         doReturn(false).when(mNativeInterface).isVoiceRecognitionSupported(device);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            assertThat(mHeadsetService.mFactory).isNotNull();
-            mHeadsetService.mFactory = mServiceFactory;
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-        }
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
         doReturn(List.of(device)).when(mLeAudioService).getConnectedDevices();
         List<BluetoothDevice> activeDeviceList = new ArrayList<>();
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceTest.java
index 759c94b..f5214db 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceTest.java
@@ -198,8 +198,6 @@
     @After
     public void tearDown() throws Exception {
         mHeadsetService.cleanup();
-        mHeadsetService = HeadsetService.getHeadsetService();
-        assertThat(mHeadsetService).isNull();
         mStateMachines.clear();
         mCurrentDevice = null;
         HeadsetObjectsFactory.setInstanceForTesting(null);
@@ -208,7 +206,6 @@
     /** Test to verify that HeadsetService can be successfully started */
     @Test
     public void testGetHeadsetService() {
-        assertThat(HeadsetService.getHeadsetService()).isEqualTo(mHeadsetService);
         // Verify default connection and audio states
         mCurrentDevice = getTestDevice(0);
         assertThat(mHeadsetService.getConnectionState(mCurrentDevice))
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/HeadsetClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/HeadsetClientServiceTest.java
index 03709d9..6ae1530 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/HeadsetClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/HeadsetClientServiceTest.java
@@ -48,7 +48,6 @@
 import com.android.bluetooth.btservice.storage.DatabaseManager;
 import com.android.tests.bluetooth.MockitoRule;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Rule;
@@ -74,7 +73,6 @@
     @Mock private RemoteDevices mRemoteDevices;
 
     private HeadsetClientService mService;
-    private boolean mIsHeadsetClientServiceStarted;
 
     private static final int STANDARD_WAIT_MILLIS = 1000;
     private static final int SERVICE_START_WAIT_MILLIS = 100;
@@ -89,15 +87,9 @@
         doReturn(mRemoteDevices).when(mAdapterService).getRemoteDevices();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        stopServiceIfStarted();
-    }
-
     @Test
     public void testInitialize() throws Exception {
         startService();
-        assertThat(HeadsetClientService.getHeadsetClientService()).isNotNull();
     }
 
     @Ignore("b/260202548")
@@ -250,13 +242,5 @@
     private void startService() throws Exception {
         mService = new HeadsetClientService(mAdapterService, mNativeInterface);
         mService.setAvailable(true);
-        mIsHeadsetClientServiceStarted = true;
-    }
-
-    private void stopServiceIfStarted() throws Exception {
-        if (mIsHeadsetClientServiceStarted) {
-            mService.cleanup();
-            assertThat(HeadsetClientService.getHeadsetClientService()).isNull();
-        }
     }
 }
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HeadsetClientServiceInterfaceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HeadsetClientServiceInterfaceTest.java
index 4abe67a..f3b60b1 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HeadsetClientServiceInterfaceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HeadsetClientServiceInterfaceTest.java
@@ -21,7 +21,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothDevice;
 import android.os.Bundle;
@@ -29,11 +28,9 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 import com.android.dx.mockito.inline.extended.ExtendedMockito;
 import com.android.tests.bluetooth.StaticMockitoRule;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -80,27 +77,12 @@
         mServiceInterface = new HeadsetClientServiceInterface();
     }
 
-    @After
-    public void tearDown() {
-        if (!Flags.adapterServiceProfilesUseOptional()) {
-            HeadsetClientService.setHeadsetClientService(null);
-            assertThat(HeadsetClientService.getHeadsetClientService()).isNull();
-        }
-    }
-
     private void makeHeadsetClientServiceAvailable() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            ExtendedMockito.doReturn(mAdapterService)
-                    .when(() -> AdapterService.deprecatedGetAdapterService());
-            doReturn(Optional.of(mHeadsetClientService))
-                    .when(mAdapterService)
-                    .getHeadsetClientService();
-        } else {
-            when(mHeadsetClientService.isAvailable()).thenReturn(true);
-            HeadsetClientService.setHeadsetClientService(mHeadsetClientService);
-            assertThat(HeadsetClientService.getHeadsetClientService())
-                    .isEqualTo(mHeadsetClientService);
-        }
+        ExtendedMockito.doReturn(mAdapterService)
+                .when(() -> AdapterService.deprecatedGetAdapterService());
+        doReturn(Optional.of(mHeadsetClientService))
+                .when(mAdapterService)
+                .getHeadsetClientService();
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientConnectionServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientConnectionServiceTest.java
index b80ecc6f..68ea500 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientConnectionServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientConnectionServiceTest.java
@@ -52,12 +52,10 @@
 import com.android.bluetooth.R;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.RemoteDevices;
-import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.pbapclient.PbapClientService;
 import com.android.dx.mockito.inline.extended.ExtendedMockito;
 import com.android.tests.bluetooth.StaticMockitoRule;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -97,17 +95,12 @@
                 .when(mAdapterService)
                 .getRemoteDevice(anyString());
         doReturn(mRemoteDevices).when(mAdapterService).getRemoteDevices();
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            ExtendedMockito.doReturn(mAdapterService)
-                    .when(() -> AdapterService.deprecatedGetAdapterService());
-            doReturn(Optional.of(mHeadsetClientService))
-                    .when(mAdapterService)
-                    .getHeadsetClientService();
-            doReturn(Optional.of(mPbapClientService)).when(mAdapterService).getPbapClientService();
-        } else {
-            when(mHeadsetClientService.isAvailable()).thenReturn(true);
-            HeadsetClientService.setHeadsetClientService(mHeadsetClientService);
-        }
+        ExtendedMockito.doReturn(mAdapterService)
+                .when(() -> AdapterService.deprecatedGetAdapterService());
+        doReturn(Optional.of(mHeadsetClientService))
+                .when(mAdapterService)
+                .getHeadsetClientService();
+        doReturn(Optional.of(mPbapClientService)).when(mAdapterService).getPbapClientService();
 
         // Spy the connection service under test so we can mock some of the system services and keep
         // them from impacting the actual system. Note: Another way to do this would be to extend
@@ -132,13 +125,6 @@
         mockGetBluetoothManager(mHfpClientConnectionService);
     }
 
-    @After
-    public void tearDown() throws Exception {
-        if (!Flags.adapterServiceProfilesUseOptional()) {
-            HeadsetClientService.setHeadsetClientService(null);
-        }
-    }
-
     private void createService() {
         mHfpClientConnectionService.onCreate();
     }
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientDeviceBlockTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientDeviceBlockTest.java
index 1a57380..df26ec0 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientDeviceBlockTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientDeviceBlockTest.java
@@ -38,11 +38,9 @@
 import androidx.test.filters.MediumTest;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 import com.android.dx.mockito.inline.extended.ExtendedMockito;
 import com.android.tests.bluetooth.StaticMockitoRule;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -88,24 +86,11 @@
 
         mockGetSystemService(mConnServ, TelecomManager.class);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            ExtendedMockito.doReturn(mAdapterService)
-                    .when(() -> AdapterService.deprecatedGetAdapterService());
-            doReturn(Optional.of(mHeadsetClientService))
-                    .when(mAdapterService)
-                    .getHeadsetClientService();
-        } else {
-            when(mHeadsetClientService.isAvailable()).thenReturn(true);
-            HeadsetClientService.setHeadsetClientService(mHeadsetClientService);
-        }
-    }
-
-    @After
-    public void tearDown() {
-        if (!Flags.adapterServiceProfilesUseOptional()) {
-            HeadsetClientService.setHeadsetClientService(null);
-            assertThat(HeadsetClientService.getHeadsetClientService()).isNull();
-        }
+        ExtendedMockito.doReturn(mAdapterService)
+                .when(() -> AdapterService.deprecatedGetAdapterService());
+        doReturn(Optional.of(mHeadsetClientService))
+                .when(mAdapterService)
+                .getHeadsetClientService();
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hid/HidHostServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hid/HidHostServiceTest.java
index c969100..c0ac4d6 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hid/HidHostServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hid/HidHostServiceTest.java
@@ -76,13 +76,6 @@
     @After
     public void tearDown() throws Exception {
         mService.cleanup();
-        mService = HidHostService.getHidHostService();
-        assertThat(mService).isNull();
-    }
-
-    @Test
-    public void testInitialize() {
-        assertThat(HidHostService.getHidHostService()).isNotNull();
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/le_audio/ContentControlIdKeeperTest.java b/android/app/tests/unit/src/com/android/bluetooth/le_audio/ContentControlIdKeeperTest.java
index 5e33760..bf39f1a 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/le_audio/ContentControlIdKeeperTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/le_audio/ContentControlIdKeeperTest.java
@@ -33,11 +33,8 @@
 import androidx.test.filters.MediumTest;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.flags.Flags;
 import com.android.tests.bluetooth.MockitoRule;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -56,22 +53,12 @@
     @Rule public final MockitoRule mMockitoRule = new MockitoRule();
 
     @Mock private AdapterService mAdapterService;
-    @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
     @Mock private LeAudioService mLeAudioService;
 
     @Before
     public void setUp() throws Exception {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-        }
-        ContentControlIdKeeper.initForTesting(mServiceFactory);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        ContentControlIdKeeper.initForTesting(null);
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
+        ContentControlIdKeeper.initForTesting();
     }
 
     public int testCcidAcquire(ParcelUuid uuid, int context, int expectedListSize) {
diff --git a/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioBroadcastServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioBroadcastServiceTest.java
index 02cd4cc..c603664 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioBroadcastServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioBroadcastServiceTest.java
@@ -87,7 +87,6 @@
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.Config;
 import com.android.bluetooth.btservice.MetricsLogger;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.btservice.storage.DatabaseManager;
 import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.tbs.TbsService;
@@ -135,8 +134,6 @@
     @Mock private IBinder mBinder;
 
     @Spy private LeAudioObjectsFactory mObjectsFactory = LeAudioObjectsFactory.getInstance();
-    // TODO(b/422543753) Delete on flag cleanup
-    @Spy private ServiceFactory mServiceFactory = new ServiceFactory();
 
     private static final String TEST_MAC_ADDRESS = "00:11:22:33:44:55";
     private static final int TEST_BROADCAST_ID = 42;
@@ -224,15 +221,10 @@
                         mLeAudioBroadcasterNativeInterface);
         mService.setAvailable(true);
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
-            doReturn(Optional.of(mVolumeControlService))
-                    .when(mAdapterService)
-                    .getVolumeControlService();
-        } else {
-            mService.mServiceFactory = mServiceFactory;
-            when(mServiceFactory.getBassClientService()).thenReturn(mBassClientService);
-        }
+        doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
+        doReturn(Optional.of(mVolumeControlService))
+                .when(mAdapterService)
+                .getVolumeControlService();
 
         // Set up the State Changed receiver
         when(mAdapterService.getDeviceFromByte(Utils.getBytesFromAddress("FF:FF:FF:FF:FF:FF")))
diff --git a/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioServiceTest.java
index 209b071..73940a2 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioServiceTest.java
@@ -89,7 +89,6 @@
 import com.android.bluetooth.btservice.ActiveDeviceManager;
 import com.android.bluetooth.btservice.AdapterService;
 import com.android.bluetooth.btservice.Config;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.btservice.storage.DatabaseManager;
 import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
@@ -155,8 +154,6 @@
     @Mock private VolumeControlService mVolumeControlService;
 
     @Spy private LeAudioObjectsFactory mObjectsFactory = LeAudioObjectsFactory.getInstance();
-    // TODO(b/422543753) Delete on flag cleanup
-    @Spy private ServiceFactory mServiceFactory = new ServiceFactory();
 
     private static final int MAX_LE_AUDIO_CONNECTIONS = 5;
     private static final int LE_AUDIO_GROUP_ID_INVALID = -1;
@@ -320,31 +317,18 @@
                 .when(mAdapterService)
                 .getDeviceFromByte(Utils.getBytesFromAddress("FF:FF:FF:FF:FF:FF"));
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
-            doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
-            doReturn(Optional.of(mCsipSetCoordinatorService))
-                    .when(mAdapterService)
-                    .getCsipSetCoordinatorService();
-            doReturn(Optional.of(mHapClientService)).when(mAdapterService).getHapClientService();
-            doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
-            doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
-            doReturn(Optional.of(mMcpService)).when(mAdapterService).getMcpService();
-            doReturn(Optional.of(mVolumeControlService))
-                    .when(mAdapterService)
-                    .getVolumeControlService();
-        } else {
-            doReturn(mA2dpService).when(mServiceFactory).getA2dpService();
-            doReturn(mBassClientService).when(mServiceFactory).getBassClientService();
-            doReturn(mCsipSetCoordinatorService)
-                    .when(mServiceFactory)
-                    .getCsipSetCoordinatorService();
-            doReturn(mHapClientService).when(mServiceFactory).getHapClientService();
-            doReturn(mHeadsetService).when(mServiceFactory).getHeadsetService();
-            doReturn(mHearingAidService).when(mServiceFactory).getHearingAidService();
-            doReturn(mMcpService).when(mServiceFactory).getMcpService();
-            doReturn(mVolumeControlService).when(mServiceFactory).getVolumeControlService();
-        }
+        doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
+        doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
+        doReturn(Optional.of(mCsipSetCoordinatorService))
+                .when(mAdapterService)
+                .getCsipSetCoordinatorService();
+        doReturn(Optional.of(mHapClientService)).when(mAdapterService).getHapClientService();
+        doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
+        doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
+        doReturn(Optional.of(mMcpService)).when(mAdapterService).getMcpService();
+        doReturn(Optional.of(mVolumeControlService))
+                .when(mAdapterService)
+                .getVolumeControlService();
         doCallRealMethod().when(mVolumeControlService).syncPost(any());
         doAnswer(
                         inv -> {
@@ -363,7 +347,6 @@
                         mNativeInterface,
                         mLeAudioBroadcasterNativeInterface);
         mService.setAvailable(true);
-        mService.mServiceFactory = mServiceFactory;
 
         LeAudioStackEvent stackEvent =
                 new LeAudioStackEvent(LeAudioStackEvent.EVENT_TYPE_NATIVE_INITIALIZED);
@@ -2453,11 +2436,7 @@
 
     @Test
     public void testGetAudioDeviceGroupVolume_whenVolumeControlServiceIsNull() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.empty()).when(mAdapterService).getVolumeControlService();
-        } else {
-            doReturn(null).when(mServiceFactory).getVolumeControlService();
-        }
+        doReturn(Optional.empty()).when(mAdapterService).getVolumeControlService();
 
         assertThat(mService.getAudioDeviceGroupVolume(TEST_GROUP_ID))
                 .isEqualTo(VOLUME_CONTROL_UNKNOWN_VOLUME);
@@ -2515,11 +2494,7 @@
     public void testHandleGroupIdleDuringCall() {
         BluetoothDevice headsetDevice = getTestDevice(5);
         HeadsetService headsetService = Mockito.mock(HeadsetService.class);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(headsetService)).when(mAdapterService).getHeadsetService();
-        } else {
-            when(mServiceFactory.getHeadsetService()).thenReturn(headsetService);
-        }
+        doReturn(Optional.of(headsetService)).when(mAdapterService).getHeadsetService();
 
         mService.mHfpHandoverDevice = null;
         mService.handleGroupIdleDuringCall();
diff --git a/android/app/tests/unit/src/com/android/bluetooth/map/BluetoothMapServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/map/BluetoothMapServiceTest.java
index 7644760..a7e9359 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/map/BluetoothMapServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/map/BluetoothMapServiceTest.java
@@ -76,12 +76,6 @@
     @After
     public void tearDown() {
         mService.cleanup();
-        assertThat(BluetoothMapService.getBluetoothMapService()).isNull();
-    }
-
-    @Test
-    public void initialize() {
-        assertThat(BluetoothMapService.getBluetoothMapService()).isNotNull();
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/mcp/McpServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/mcp/McpServiceTest.java
index de241da..eee93bb 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/mcp/McpServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/mcp/McpServiceTest.java
@@ -32,7 +32,6 @@
 import androidx.test.filters.MediumTest;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.tests.bluetooth.MockitoRule;
 
@@ -60,9 +59,7 @@
 
     @Before
     public void setUp() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        }
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
         mMcpService = new McpService(mAdapterService, mMediaControlProfile);
         mMcpService.setAvailable(true);
     }
@@ -70,14 +67,6 @@
     @After
     public void tearDown() {
         mMcpService.cleanup();
-        assertThat(McpService.getMcpService()).isNull();
-    }
-
-    @Test
-    public void testGetService() {
-        McpService mMcpServiceDuplicate = McpService.getMcpService();
-        assertThat(mMcpServiceDuplicate).isNotNull();
-        assertThat(mMcpServiceDuplicate).isSameInstanceAs(mMcpService);
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/mcp/MediaControlGattServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/mcp/MediaControlGattServiceTest.java
index 442c11b..20961ad 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/mcp/MediaControlGattServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/mcp/MediaControlGattServiceTest.java
@@ -41,11 +41,9 @@
 import androidx.test.filters.MediumTest;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.tests.bluetooth.MockitoRule;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -96,25 +94,13 @@
         doReturn(new BluetoothDevice[0]).when(mAdapterService).getBondedDevices();
         doReturn(BluetoothDevice.ACCESS_ALLOWED).when(mMcpService).getDeviceAuthorization(any());
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            when(mLeAudioService.isAvailable()).thenReturn(true);
-            LeAudioService.setLeAudioService(mLeAudioService);
-        }
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
         mMediaControlGattService =
                 new MediaControlGattService(mAdapterService, mMcpService, mCallback, TEST_CCID);
         mMediaControlGattService.setBluetoothGattServerForTesting(mGattServer);
     }
 
-    @After
-    public void tearDown() throws Exception {
-        if (!Flags.adapterServiceProfilesUseOptional()) {
-            LeAudioService.setLeAudioService(null);
-        }
-    }
-
     private void prepareConnectedDevice() {
         if (mCurrentDevice == null) {
             mCurrentDevice = getTestDevice(0);
diff --git a/android/app/tests/unit/src/com/android/bluetooth/opp/BluetoothOppServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/opp/BluetoothOppServiceTest.java
index 5503278..c0a71ac 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/opp/BluetoothOppServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/opp/BluetoothOppServiceTest.java
@@ -147,11 +147,6 @@
     }
 
     @Test
-    public void testInitialize() {
-        assertThat(BluetoothOppService.getBluetoothOppService()).isNotNull();
-    }
-
-    @Test
     public void deleteShare_deleteShareAndCorrespondingBatch() {
         int infoTimestamp = 123456789;
         int infoTimestamp2 = 123489;
diff --git a/android/app/tests/unit/src/com/android/bluetooth/pan/PanServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/pan/PanServiceTest.java
index a16ebb9..b5902de 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/pan/PanServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/pan/PanServiceTest.java
@@ -93,12 +93,6 @@
     @After
     public void tearDown() {
         mService.cleanup();
-        assertThat(PanService.getPanService()).isNull();
-    }
-
-    @Test
-    public void initialize() {
-        assertThat(PanService.getPanService()).isNotNull();
     }
 
     @Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java
index c7dce6e..9513dcd 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java
@@ -141,23 +141,6 @@
     @After
     public void tearDown() {
         mService.cleanup();
-        assertThat(PbapClientService.getPbapClientService()).isNull();
-    }
-
-    // *********************************************************************************************
-    // * Initialize Service
-    // *********************************************************************************************
-
-    @Test
-    public void testInitialize() {
-        assertThat(PbapClientService.getPbapClientService()).isNotNull();
-    }
-
-    @Test
-    public void testSetPbapClientService_withNull() {
-        PbapClientService.setPbapClientService(null);
-
-        assertThat(PbapClientService.getPbapClientService()).isNull();
     }
 
     // *********************************************************************************************
@@ -305,19 +288,6 @@
     // * API Methods
     // *********************************************************************************************
 
-    // getPbapClientService (available) -> this
-    @Test
-    public void testGetService_serviceAvailable_returnsThis() {
-        assertThat(PbapClientService.getPbapClientService()).isEqualTo(mService);
-    }
-
-    // getPbapClientService (unavailable) -> null
-    @Test
-    public void testGetService_serviceUnavailable_returnsNull() {
-        mService.setAvailable(false);
-        assertThat(PbapClientService.getPbapClientService()).isNull();
-    }
-
     // connect (policy allowed) -> connect/true
     @Test
     public void testConnect_onAllowedAndUnconnectedDevice_deviceCreatedAndIsConnecting() {
diff --git a/android/app/tests/unit/src/com/android/bluetooth/tbs/TbsGenericTest.java b/android/app/tests/unit/src/com/android/bluetooth/tbs/TbsGenericTest.java
index 945c20d..6a352aa 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/tbs/TbsGenericTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/tbs/TbsGenericTest.java
@@ -45,7 +45,6 @@
 import androidx.test.filters.MediumTest;
 
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.le_audio.LeAudioService;
 import com.android.tests.bluetooth.MockitoRule;
@@ -74,7 +73,6 @@
     @Rule public final MockitoRule mMockitoRule = new MockitoRule();
 
     @Mock private AdapterService mAdapterService;
-    @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
     @Mock private LeAudioService mLeAudioService;
     @Mock private TbsGatt mTbsGatt;
     @Mock private TbsService.Callback mCallback;
@@ -125,15 +123,9 @@
         doReturn(true).when(mTbsGatt).clearFriendlyName();
 
         mockGetSystemService(mAdapterService, AudioManager.class, mAudioManager);
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-        } else {
-            // Setup the mocked factory to return mocked services
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-        }
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
 
         mTbsGeneric = new TbsGeneric(mAdapterService, mTbsGatt);
-        mTbsGeneric.mFactory = mServiceFactory;
     }
 
     private Integer prepareTestBearer() {
diff --git a/android/app/tests/unit/src/com/android/bluetooth/telephony/BluetoothInCallServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/telephony/BluetoothInCallServiceTest.java
index 9c3feea..c585157 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/telephony/BluetoothInCallServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/telephony/BluetoothInCallServiceTest.java
@@ -72,7 +72,6 @@
 import com.android.dx.mockito.inline.extended.ExtendedMockito;
 import com.android.tests.bluetooth.StaticMockitoRule;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -128,17 +127,10 @@
 
     @Before
     public void setUp() {
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            ExtendedMockito.doReturn(mAdapterService)
-                    .when(() -> AdapterService.deprecatedGetAdapterService());
-            doReturn(Optional.of(mTbsService)).when(mAdapterService).getTbsService();
-            doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
-        } else {
-            doReturn(true).when(mTbsService).isAvailable();
-            TbsService.setTbsService(mTbsService);
-            doReturn(true).when(mHeadsetService).isAvailable();
-            HeadsetService.setHeadsetService(mHeadsetService);
-        }
+        ExtendedMockito.doReturn(mAdapterService)
+                .when(() -> AdapterService.deprecatedGetAdapterService());
+        doReturn(Optional.of(mTbsService)).when(mAdapterService).getTbsService();
+        doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
         doReturn(true).when(mCallInfo).isNullCall(null);
         doReturn(false).when(mCallInfo).isNullCall(notNull());
 
@@ -149,18 +141,9 @@
         mBluetoothInCallService.onCreate();
     }
 
-    @After
-    public void tearDown() {
-        if (!Flags.adapterServiceProfilesUseOptional()) {
-            TbsService.setTbsService(null);
-            HeadsetService.setHeadsetService(null);
-        }
-    }
-
     @Test
     public void onCreate_registerBearer_whenTbsServiceIsNull_doesNothing() {
         clearInvocations(mTbsService);
-        TbsService.setTbsService(null);
 
         Context spiedContext = spy(new ContextWrapper(mContext));
         mockGetSystemService(spiedContext, TelephonyManager.class, mTelephonyManager);
@@ -181,7 +164,6 @@
     @Test
     public void onCreate_registerBearer_whenTbsServiceIsPresent_callsRegisterBearer() {
         clearInvocations(mTbsService);
-        TbsService.setTbsService(mTbsService);
 
         PhoneAccount fakePhoneAccount = makeQuickAccount("id0", TEST_ACCOUNT_INDEX);
         doReturn(fakePhoneAccount).when(mCallInfo).getBestPhoneAccount();
diff --git a/android/app/tests/unit/src/com/android/bluetooth/vc/VolumeControlServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/vc/VolumeControlServiceTest.java
index e9c417b..baebf61 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/vc/VolumeControlServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/vc/VolumeControlServiceTest.java
@@ -65,7 +65,6 @@
 import com.android.bluetooth.TestUtils;
 import com.android.bluetooth.bass_client.BassClientService;
 import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
 import com.android.bluetooth.csip.CsipSetCoordinatorService;
 import com.android.bluetooth.flags.Flags;
 import com.android.bluetooth.le_audio.LeAudioService;
@@ -108,7 +107,6 @@
     @Mock private LeAudioService mLeAudioService;
     @Mock private VolumeControlNativeInterface mNativeInterface;
     @Mock private AudioManager mAudioManager;
-    @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
     @Mock private CsipSetCoordinatorService mCsipService;
 
     private static final int BT_LE_AUDIO_MAX_VOL = 255;
@@ -150,17 +148,9 @@
                 .when(mAdapterService)
                 .getRemoteUuids(any(BluetoothDevice.class));
 
-        if (Flags.adapterServiceProfilesUseOptional()) {
-            doReturn(Optional.of(mCsipService))
-                    .when(mAdapterService)
-                    .getCsipSetCoordinatorService();
-            doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
-            doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
-        } else {
-            doReturn(mCsipService).when(mServiceFactory).getCsipSetCoordinatorService();
-            doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
-            doReturn(mBassClientService).when(mServiceFactory).getBassClientService();
-        }
+        doReturn(Optional.of(mCsipService)).when(mAdapterService).getCsipSetCoordinatorService();
+        doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
+        doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
 
         doReturn(MEDIA_MIN_VOL)
                 .when(mAudioManager)
@@ -181,8 +171,6 @@
 
         mService = new VolumeControlService(mAdapterService, mLooper.getLooper(), mNativeInterface);
         mService.setAvailable(true);
-
-        mService.mFactory = mServiceFactory;
     }
 
     @After
@@ -190,12 +178,6 @@
         assertThat(mLooper.nextMessage()).isNull();
         mService.cleanup();
         mLooper.dispatchAll();
-        assertThat(VolumeControlService.getVolumeControlService()).isNull();
-    }
-
-    @Test
-    public void getVolumeControlService() {
-        assertThat(VolumeControlService.getVolumeControlService()).isEqualTo(mService);
     }
 
     @Test
diff --git a/flags/adapter.aconfig b/flags/adapter.aconfig
index 59ce3d1..05fee00 100644
--- a/flags/adapter.aconfig
+++ b/flags/adapter.aconfig
@@ -104,13 +104,6 @@
 }
 
 flag {
-    name: "adapter_service_profiles_use_optional"
-    namespace: "bluetooth"
-    description: "Add optional getters for all profiles in [Bluetooth]AdapterService"
-    bug: "422543753"
-}
-
-flag {
     name: "ignore_multiple_connect_request_in_bt_services"
     namespace: "bluetooth"
     description: "Ignore multiple connect request in BT Services"