Fix issue with native fonts dir.
Test: atest -c MyRoboTests
Bug:  263483214

Change-Id: Ib71c3c332d4ea19ef961e8ecf89c2c462dc33b66
diff --git a/robolectric/src/main/java/org/robolectric/android/internal/AndroidTestEnvironment.java b/robolectric/src/main/java/org/robolectric/android/internal/AndroidTestEnvironment.java
index 267cc6d..cdcac2b 100755
--- a/robolectric/src/main/java/org/robolectric/android/internal/AndroidTestEnvironment.java
+++ b/robolectric/src/main/java/org/robolectric/android/internal/AndroidTestEnvironment.java
@@ -2,6 +2,7 @@
 
 import static android.os.Build.VERSION_CODES.P;
 import static android.os.Build.VERSION_CODES.Q;
+import static android.os.Build.VERSION_CODES.O;
 import static org.robolectric.shadow.api.Shadow.newInstanceOf;
 import static org.robolectric.util.reflector.Reflector.reflector;
 
@@ -48,6 +49,8 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.annotation.ConscryptMode;
 import org.robolectric.annotation.LooperMode;
+import org.robolectric.annotation.GraphicsMode;
+import org.robolectric.annotation.GraphicsMode.Mode;
 import org.robolectric.annotation.experimental.LazyApplication.LazyLoad;
 import org.robolectric.config.ConfigurationRegistry;
 import org.robolectric.internal.ResourcesMode;
@@ -145,6 +148,8 @@
       ShadowLegacyLooper.internalInitializeBackgroundThreadScheduler();
     }
 
+    exportNativeruntimeProperties();
+
     if (!loggingInitialized) {
       ShadowLog.setupLogging();
       loggingInitialized = true;
@@ -710,4 +715,11 @@
     }
     return receiverClassName;
   }
+
+  private static void exportNativeruntimeProperties() {
+    GraphicsMode.Mode graphicsMode = ConfigurationRegistry.get(GraphicsMode.Mode.class);
+    System.setProperty(
+        "robolectric.nativeruntime.enableGraphics",
+        Boolean.toString(graphicsMode == Mode.NATIVE && RuntimeEnvironment.getApiLevel() >= O));
+  }
 }
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeFontsFontFamily.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeFontsFontFamily.java
index 360f613..fcdd7d4 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeFontsFontFamily.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeFontsFontFamily.java
@@ -2,6 +2,8 @@
 
 import static android.os.Build.VERSION_CODES.Q;
 import static android.os.Build.VERSION_CODES.S;
+import static android.os.Build.VERSION_CODES.TIRAMISU;
+import static android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
 
 import android.graphics.fonts.FontFamily;
 import org.robolectric.annotation.Implementation;
@@ -56,12 +58,18 @@
       FontFamilyBuilderNatives.nAddFont(builderPtr, fontPtr);
     }
 
-    @Implementation
+    @Implementation(maxSdk=TIRAMISU)
     protected static long nBuild(
         long builderPtr, String langTags, int variant, boolean isCustomFallback) {
       return FontFamilyBuilderNatives.nBuild(builderPtr, langTags, variant, isCustomFallback);
     }
 
+    @Implementation(minSdk=UPSIDE_DOWN_CAKE)
+    protected static long nBuild(
+        long builderPtr, String langTags, int variant, boolean isCustomFallback, boolean isDefaultFallback) {
+      return nBuild(builderPtr, langTags, variant, isCustomFallback);
+    }
+
     @Implementation
     protected static long nGetReleaseNativeFamily() {
       return FontFamilyBuilderNatives.nGetReleaseNativeFamily();
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowServiceManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowServiceManager.java
index aa51c52..778e196 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowServiceManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowServiceManager.java
@@ -102,6 +102,7 @@
 import org.robolectric.annotation.Implements;
 import org.robolectric.annotation.Resetter;
 import org.robolectric.util.ReflectionHelpers;
+import android.companion.virtual.IVirtualDeviceManager;
 
 /** Shadow for {@link ServiceManager}. */
 @SuppressWarnings("NewApi")
@@ -139,6 +140,7 @@
     addBinderService(Context.BLUETOOTH_SERVICE, IBluetooth.class);
     addBinderService(Context.WINDOW_SERVICE, IWindowManager.class);
     addBinderService(Context.NFC_SERVICE, INfcAdapter.class, true);
+    addBinderService(Context.VIRTUAL_DEVICE_SERVICE, IVirtualDeviceManager.class);
 
     if (RuntimeEnvironment.getApiLevel() >= JELLY_BEAN_MR1) {
       addBinderService(Context.USER_SERVICE, IUserManager.class);