Bump Robolectric to 4.7.3 (#30437)

diff --git a/shell/platform/android/test/README.md b/shell/platform/android/test/README.md
index b5e4dce..ef203e0 100644
--- a/shell/platform/android/test/README.md
+++ b/shell/platform/android/test/README.md
@@ -1,6 +1,6 @@
 # Unit testing Java code
 
-All Java code in the engine should now be able to be tested with Robolectric 4.6.1
+All Java code in the engine should now be able to be tested with Robolectric 4.7.3
 and JUnit 4. The test suite has been added after the bulk of the Java code was
 first written, so most of these classes do not have existing tests. Ideally code
 after this point should be tested, either with unit tests here or with
diff --git a/shell/platform/android/test/io/flutter/plugin/platform/SingleViewPresentationTest.java b/shell/platform/android/test/io/flutter/plugin/platform/SingleViewPresentationTest.java
index 67c0300..1aa4953 100644
--- a/shell/platform/android/test/io/flutter/plugin/platform/SingleViewPresentationTest.java
+++ b/shell/platform/android/test/io/flutter/plugin/platform/SingleViewPresentationTest.java
@@ -1,5 +1,8 @@
 package io.flutter.plugin.platform;
 
+import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
+import static android.os.Build.VERSION_CODES.P;
+import static android.os.Build.VERSION_CODES.R;
 import static junit.framework.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -18,9 +21,10 @@
 
 @Config(manifest = Config.NONE)
 @RunWith(RobolectricTestRunner.class)
-@TargetApi(28)
+@TargetApi(P)
 public class SingleViewPresentationTest {
   @Test
+  @Config(minSdk = JELLY_BEAN_MR1, maxSdk = R)
   public void returnsOuterContextInputMethodManager() {
     // There's a bug in Android Q caused by the IMM being instanced per display.
     // https://github.com/flutter/flutter/issues/38375. We need the context returned by
@@ -51,6 +55,7 @@
   }
 
   @Test
+  @Config(minSdk = JELLY_BEAN_MR1, maxSdk = R)
   public void returnsOuterContextInputMethodManager_createDisplayContext() {
     // The IMM should also persist across display contexts created from the base context.
 
diff --git a/shell/platform/android/test_runner/build.gradle b/shell/platform/android/test_runner/build.gradle
index bb9a1fc..bc69251 100644
--- a/shell/platform/android/test_runner/build.gradle
+++ b/shell/platform/android/test_runner/build.gradle
@@ -44,7 +44,7 @@
     testImplementation "androidx.test:core:1.4.0"
     testImplementation "com.google.android.play:core:1.8.0"
     testImplementation "com.ibm.icu:icu4j:69.1"
-    testImplementation "org.robolectric:robolectric:4.6.1"
+    testImplementation "org.robolectric:robolectric:4.7.3"
     testImplementation "junit:junit:4.13"
 
     def mockitoVersion = "4.1.0"
diff --git a/shell/platform/android/test_runner/src/main/resources/robolectric.properties b/shell/platform/android/test_runner/src/main/resources/robolectric.properties
index 28a4ed2..ffcbe2d 100644
--- a/shell/platform/android/test_runner/src/main/resources/robolectric.properties
+++ b/shell/platform/android/test_runner/src/main/resources/robolectric.properties
@@ -1 +1 @@
-sdk=30
+sdk=31