Move Native Graphics initialization into ViewScreenshotTestRule.

Test: atest SystemUIGoogleRoboRNGTests
Bug: 276453135
Change-Id: I7cdcd01c20b8d9c377404c57de6fc375bfeb0648
diff --git a/packages/SystemUI/screenshot/src/com/android/systemui/testing/screenshot/ViewScreenshotTestRule.kt b/packages/SystemUI/screenshot/src/com/android/systemui/testing/screenshot/ViewScreenshotTestRule.kt
index f96d1e3..e075abe 100644
--- a/packages/SystemUI/screenshot/src/com/android/systemui/testing/screenshot/ViewScreenshotTestRule.kt
+++ b/packages/SystemUI/screenshot/src/com/android/systemui/testing/screenshot/ViewScreenshotTestRule.kt
@@ -62,6 +62,15 @@
     private val isRobolectric = if (Build.FINGERPRINT.contains("robolectric")) true else false
 
     override fun apply(base: Statement, description: Description): Statement {
+        if (isRobolectric) {
+            // In robolectric mode, we enable NATIVE graphics and unpack font and icu files.
+            // We need to use reflection, as this library is only needed and therefore
+            //  only available in deviceless mode.
+            val nativeLoaderClassName = "org.robolectric.nativeruntime.DefaultNativeRuntimeLoader"
+            val defaultNativeRuntimeLoader = Class.forName(nativeLoaderClassName)
+            System.setProperty("robolectric.graphicsMode", "NATIVE")
+            defaultNativeRuntimeLoader.getMethod("injectAndLoad").invoke(null)
+        }
         val ruleToApply = if (isRobolectric) roboRule else delegateRule
         return ruleToApply.apply(base, description)
     }