diff --git a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt
index 401cd16..0908f9e 100644
--- a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt
+++ b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt
@@ -52,7 +52,7 @@
             +PreferenceWidget("module_version", R.string.module_version)
             +BasebandVersionPreference()
             +KernelVersionPreference()
-            +PreferenceWidget("os_build_number", R.string.build_number)
+            +SimpleBuildNumberPreference()
         }
 
     private class PreferenceWidget(override val key: String, override val title: Int) :
diff --git a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreference.kt b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreference.kt
new file mode 100644
index 0000000..62cc2f9
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreference.kt
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2024 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.settings.deviceinfo.firmwareversion
+
+import android.content.Context
+import android.os.Build
+import android.text.BidiFormatter
+import android.view.View.LAYOUT_DIRECTION_RTL
+import androidx.preference.Preference
+import com.android.settings.R
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.PreferenceSummaryProvider
+import com.android.settingslib.preference.PreferenceBinding
+
+// LINT.IfChange
+class SimpleBuildNumberPreference :
+    PreferenceMetadata, PreferenceSummaryProvider, PreferenceBinding {
+
+    override val key: String
+        get() = "os_build_number"
+
+    override val title: Int
+        get() = R.string.build_number
+
+    override fun isIndexable(context: Context) = false
+
+    override fun getSummary(context: Context): CharSequence? {
+        val isRtl = context.resources.configuration.layoutDirection == LAYOUT_DIRECTION_RTL
+        return BidiFormatter.getInstance(isRtl).unicodeWrap(Build.DISPLAY)
+    }
+
+    override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+        super.bind(preference, metadata)
+        preference.isSelectable = false
+        preference.isCopyingEnabled = true
+    }
+}
+// LINT.ThenChange(SimpleBuildNumberPreferenceController.java)
diff --git a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java
index 53f5ff9..11988f7 100644
--- a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java
@@ -22,6 +22,7 @@
 
 import com.android.settings.core.BasePreferenceController;
 
+// LINT.IfChange
 public class SimpleBuildNumberPreferenceController extends BasePreferenceController {
 
     public SimpleBuildNumberPreferenceController(Context context,
@@ -39,3 +40,4 @@
         return BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY);
     }
 }
+// LINT.ThenChange(SimpleBuildNumberPreference.kt)
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java
index 3f050db..4b7dfc5 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java
@@ -29,6 +29,7 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
+// LINT.IfChange
 @RunWith(RobolectricTestRunner.class)
 public class SimpleBuildNumberPreferenceControllerTest {
 
@@ -48,3 +49,4 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
     }
 }
+// LINT.ThenChange(SimpleBuildNumberPreferenceTest.kt)
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceTest.kt b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceTest.kt
new file mode 100644
index 0000000..9c9dd71
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceTest.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2024 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.settings.deviceinfo.firmwareversion
+
+import android.content.Context
+import android.os.Build
+import android.text.BidiFormatter
+import androidx.test.core.app.ApplicationProvider
+import com.google.common.truth.Truth.assertThat
+import java.util.Locale
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+
+// LINT.IfChange
+@RunWith(RobolectricTestRunner::class)
+class SimpleBuildNumberPreferenceTest {
+    private val context: Context = ApplicationProvider.getApplicationContext()
+
+    private val simpleBuildNumberPreference = SimpleBuildNumberPreference()
+
+    @Test
+    fun isIndexable() {
+        assertThat(simpleBuildNumberPreference.isIndexable(context)).isFalse()
+    }
+
+    @Test
+    fun getSummary_ltr() {
+        context.resources.configuration.setLayoutDirection(Locale.ENGLISH)
+        assertThat(simpleBuildNumberPreference.getSummary(context))
+            .isEqualTo(BidiFormatter.getInstance(false).unicodeWrap(Build.DISPLAY))
+    }
+
+    @Test
+    fun getSummary_rtl() {
+        context.resources.configuration.setLayoutDirection(Locale("ar"))
+        assertThat(simpleBuildNumberPreference.getSummary(context))
+            .isEqualTo(BidiFormatter.getInstance(true).unicodeWrap(Build.DISPLAY))
+    }
+}
+// LINT.ThenChange(SimpleBuildNumberPreferenceControllerTest.java)
