[pigeon] Consolidate platform test harnesses part 2 - Android (#2810)

* Move Kotlin tests into the new harness

* Move Java tests into the new harness
diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/build.gradle b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/build.gradle
index 1949870..75b9fe0 100644
--- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/build.gradle
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/build.gradle
@@ -32,4 +32,21 @@
     defaultConfig {
         minSdkVersion 16
     }
+
+    testOptions {
+        unitTests.includeAndroidResources = true
+        unitTests.returnDefaultValues = true
+        unitTests.all {
+            testLogging {
+               events "passed", "skipped", "failed", "standardOut", "standardError"
+               outputs.upToDateWhen {false}
+               showStandardStreams = true
+            }
+        }
+    }
+
+    dependencies {
+        testImplementation 'junit:junit:4.+'
+        testImplementation "org.mockito:mockito-core:3.+"
+    }
 }
diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore
new file mode 100644
index 0000000..abf5cc1
--- /dev/null
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore
@@ -0,0 +1,5 @@
+# TODO(stuartmorgan): Remove this, so that review will show the effects of
+# changes on generated files. This will need a way to avoid unnecessary churn,
+# such as a flag to suppress version stamp generation.
+*.java
+!AlternateLanguageTestPlugin.kt
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AllDatatypesTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java
similarity index 97%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AllDatatypesTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java
index 6cef5dd..9cbc2cf 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AllDatatypesTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
-import com.example.android_unit_tests.AllDatatypes.*;
+import com.example.alternate_language_test_plugin.AllDatatypes.*;
 import io.flutter.plugin.common.BinaryMessenger;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AsyncTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AsyncTest.java
similarity index 96%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AsyncTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AsyncTest.java
index 4ae2062..7877e02 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AsyncTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AsyncTest.java
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
-import com.example.android_unit_tests.AsyncHandlers.*;
+import com.example.alternate_language_test_plugin.AsyncHandlers.*;
 import io.flutter.plugin.common.BinaryMessenger;
 import io.flutter.plugin.common.MessageCodec;
 import java.nio.ByteBuffer;
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/EnumTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/EnumTest.java
similarity index 91%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/EnumTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/EnumTest.java
index 84b5b5d..617e04f 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/EnumTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/EnumTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/ListTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/ListTest.java
similarity index 89%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/ListTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/ListTest.java
index fdf916a..510534a 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/ListTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/ListTest.java
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
-import com.example.android_unit_tests.PigeonList.EchoApi;
-import com.example.android_unit_tests.PigeonList.TestMessage;
+import com.example.alternate_language_test_plugin.PigeonList.EchoApi;
+import com.example.alternate_language_test_plugin.PigeonList.TestMessage;
 import io.flutter.plugin.common.BinaryMessenger;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/MultipleArityTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/MultipleArityTest.java
similarity index 91%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/MultipleArityTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/MultipleArityTest.java
index e336d11..036e76b 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/MultipleArityTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/MultipleArityTest.java
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
-import com.example.android_unit_tests.MultipleArity.MultipleArityFlutterApi;
+import com.example.alternate_language_test_plugin.MultipleArity.MultipleArityFlutterApi;
 import io.flutter.plugin.common.BinaryMessenger;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NonNullFieldsTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NonNullFieldsTest.java
similarity index 82%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NonNullFieldsTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NonNullFieldsTest.java
index 3336fcf..c43e882 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NonNullFieldsTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NonNullFieldsTest.java
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 
-import com.example.android_unit_tests.NonNullFields.NonNullFieldSearchRequest;
+import com.example.alternate_language_test_plugin.NonNullFields.NonNullFieldSearchRequest;
 import java.lang.IllegalStateException;
 import org.junit.Test;
 
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullFieldsTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java
similarity index 98%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullFieldsTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java
index c1df044..de47463 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullFieldsTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullableReturnsTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullableReturnsTest.java
similarity index 97%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullableReturnsTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullableReturnsTest.java
index 1f79171..0b3beec 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullableReturnsTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullableReturnsTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PigeonTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java
similarity index 98%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PigeonTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java
index cf7f90a..c50bd51 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PigeonTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PrimitiveTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PrimitiveTest.java
similarity index 96%
rename from packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PrimitiveTest.java
rename to packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PrimitiveTest.java
index d1f3fb1..9599513 100644
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PrimitiveTest.java
+++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PrimitiveTest.java
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_unit_tests;
+package com.example.alternate_language_test_plugin;
 
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
-import com.example.android_unit_tests.Primitive.PrimitiveFlutterApi;
-import com.example.android_unit_tests.Primitive.PrimitiveHostApi;
+import com.example.alternate_language_test_plugin.Primitive.PrimitiveFlutterApi;
+import com.example.alternate_language_test_plugin.Primitive.PrimitiveHostApi;
 import io.flutter.plugin.common.BinaryMessenger;
 import io.flutter.plugin.common.MessageCodec;
 import java.nio.ByteBuffer;
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/.gitignore b/packages/pigeon/platform_tests/android_kotlin_unit_tests/.gitignore
deleted file mode 100644
index 0fa6b67..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/.gitignore
+++ /dev/null
@@ -1,46 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-**/ios/Flutter/.last_build_id
-.dart_tool/
-.flutter-plugins
-.flutter-plugins-dependencies
-.packages
-.pub-cache/
-.pub/
-/build/
-
-# Web related
-lib/generated_plugin_registrant.dart
-
-# Symbolication related
-app.*.symbols
-
-# Obfuscation related
-app.*.map.json
-
-# Android Studio will place build artifacts here
-/android/app/debug
-/android/app/profile
-/android/app/release
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/.metadata b/packages/pigeon/platform_tests/android_kotlin_unit_tests/.metadata
deleted file mode 100644
index 62b61c3..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/.metadata
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
-  revision: 891511d58f6550ce9e9b03b8d7c6a602caa97488
-  channel: master
-
-project_type: app
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/README.md b/packages/pigeon/platform_tests/android_kotlin_unit_tests/README.md
deleted file mode 100644
index d2383b7..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# android_kotlin_unit_tests
-
-Unit-tests for Pigeon generated Kotlin code.  See [../../tools/run_tests.dart](../../tools/run_tests.dart).
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/.gitignore b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/.gitignore
deleted file mode 100644
index 0a741cb..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-gradle-wrapper.jar
-/.gradle
-/captures/
-/gradlew
-/gradlew.bat
-/local.properties
-GeneratedPluginRegistrant.java
-
-# Remember to never publicly share your keystore.
-# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
-key.properties
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/.project b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/.project
deleted file mode 100644
index fe67538..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>android_</name>
-	<comment>Project android_ created by Buildship.</comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
-	</natures>
-	<filteredResources>
-		<filter>
-			<id>1624921942866</id>
-			<name></name>
-			<type>30</type>
-			<matcher>
-				<id>org.eclipse.core.resources.regexFilterMatcher</id>
-				<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
-			</matcher>
-		</filter>
-	</filteredResources>
-</projectDescription>
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/build.gradle b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/build.gradle
deleted file mode 100644
index 38eaf17..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/build.gradle
+++ /dev/null
@@ -1,70 +0,0 @@
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
-if (localPropertiesFile.exists()) {
-    localPropertiesFile.withReader('UTF-8') { reader ->
-        localProperties.load(reader)
-    }
-}
-
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
-    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
-if (flutterVersionCode == null) {
-    flutterVersionCode = '1'
-}
-
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
-if (flutterVersionName == null) {
-    flutterVersionName = '1.0'
-}
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
-android {
-    compileSdkVersion 31
-
-    sourceSets {
-        main.java.srcDirs += 'src/main/kotlin'
-    }
-
-    defaultConfig {
-        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
-        applicationId "com.example.android_kotlin_unit_tests"
-        minSdkVersion 16
-        targetSdkVersion 30
-        versionCode flutterVersionCode.toInteger()
-        versionName flutterVersionName
-    }
-
-    buildTypes {
-        release {
-            // TODO: Add your own signing config for the release build.
-            // Signing with the debug keys for now, so `flutter run --release` works.
-            signingConfig signingConfigs.debug
-        }
-    }
-
-    testOptions {
-        unitTests.returnDefaultValues = true
-    }
-}
-
-flutter {
-    source '../..'
-}
-
-dependencies {
-    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
-    testImplementation 'junit:junit:4.+'
-    testImplementation "io.mockk:mockk:1.12.4"
-}
-
-
-//test {
-//    useJUnitPlatform()
-//}
\ No newline at end of file
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/debug/AndroidManifest.xml b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index fac2664..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android_kotlin_unit_tests">
-    <!-- Flutter needs it to communicate with the running application
-         to allow setting breakpoints, to provide hot reload, etc.
-    -->
-    <uses-permission android:name="android.permission.INTERNET"/>
-</manifest>
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/AndroidManifest.xml b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 27ed867..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android_kotlin_unit_tests">
-   <application
-        android:label="android_kotlin_unit_tests"
-        android:icon="@mipmap/ic_launcher">
-        <activity
-            android:name=".MainActivity"
-            android:launchMode="singleTop"
-            android:theme="@style/LaunchTheme"
-            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
-            android:hardwareAccelerated="true"
-            android:windowSoftInputMode="adjustResize">
-            <!-- Specifies an Android theme to apply to this Activity as soon as
-                 the Android process has started. This theme is visible to the user
-                 while the Flutter UI initializes. After that, this theme continues
-                 to determine the Window background behind the Flutter UI. -->
-            <meta-data
-              android:name="io.flutter.embedding.android.NormalTheme"
-              android:resource="@style/NormalTheme"
-              />
-            <!-- Displays an Android View that continues showing the launch screen
-                 Drawable until Flutter paints its first frame, then this splash
-                 screen fades out. A splash screen is useful to avoid any visual
-                 gap between the end of Android's launch screen and the painting of
-                 Flutter's first frame. -->
-            <meta-data
-              android:name="io.flutter.embedding.android.SplashScreenDrawable"
-              android:resource="@drawable/launch_background"
-              />
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
-        <!-- Don't delete the meta-data below.
-             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
-        <meta-data
-            android:name="flutterEmbedding"
-            android:value="2" />
-    </application>
-</manifest>
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/kotlin/com/example/android_kotlin_unit_tests/.gitignore b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/kotlin/com/example/android_kotlin_unit_tests/.gitignore
deleted file mode 100644
index 78d4294..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/kotlin/com/example/android_kotlin_unit_tests/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.kt
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/drawable-v21/launch_background.xml
deleted file mode 100644
index f74085f..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/drawable-v21/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="?android:colorBackground" />
-
-    <!-- You can insert your own image assets here -->
-    <!-- <item>
-        <bitmap
-            android:gravity="center"
-            android:src="@mipmap/launch_image" />
-    </item> -->
-</layer-list>
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/drawable/launch_background.xml b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 304732f..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="@android:color/white" />
-
-    <!-- You can insert your own image assets here -->
-    <!-- <item>
-        <bitmap
-            android:gravity="center"
-            android:src="@mipmap/launch_image" />
-    </item> -->
-</layer-list>
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/values-night/styles.xml b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/values-night/styles.xml
deleted file mode 100644
index 449a9f9..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/values-night/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
-    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
-        <!-- Show a splash screen on the activity. Automatically removed when
-             Flutter draws its first frame -->
-        <item name="android:windowBackground">@drawable/launch_background</item>
-    </style>
-    <!-- Theme applied to the Android Window as soon as the process has started.
-         This theme determines the color of the Android Window while your
-         Flutter UI initializes, as well as behind your Flutter UI while its
-         running.
-         
-         This Theme is only used starting with V2 of Flutter's Android embedding. -->
-    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
-        <item name="android:windowBackground">?android:colorBackground</item>
-    </style>
-</resources>
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/values/styles.xml b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index d74aa35..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
-    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
-        <!-- Show a splash screen on the activity. Automatically removed when
-             Flutter draws its first frame -->
-        <item name="android:windowBackground">@drawable/launch_background</item>
-    </style>
-    <!-- Theme applied to the Android Window as soon as the process has started.
-         This theme determines the color of the Android Window while your
-         Flutter UI initializes, as well as behind your Flutter UI while its
-         running.
-         
-         This Theme is only used starting with V2 of Flutter's Android embedding. -->
-    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
-        <item name="android:windowBackground">?android:colorBackground</item>
-    </style>
-</resources>
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/profile/AndroidManifest.xml b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/profile/AndroidManifest.xml
deleted file mode 100644
index fac2664..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/profile/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android_kotlin_unit_tests">
-    <!-- Flutter needs it to communicate with the running application
-         to allow setting breakpoints, to provide hot reload, etc.
-    -->
-    <uses-permission android:name="android.permission.INTERNET"/>
-</manifest>
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/build.gradle b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/build.gradle
deleted file mode 100644
index 410e2c7..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/build.gradle
+++ /dev/null
@@ -1,34 +0,0 @@
-buildscript {
-    ext.kotlin_version = '1.6.0'
-    repositories {
-        google()
-        mavenCentral()
-    }
-
-    dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
-        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-    }
-}
-
-allprojects {
-    repositories {
-        google()
-        mavenCentral()
-    }
-    gradle.projectsEvaluated {
-        tasks.withType(JavaCompile) {
-            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
-        }
-    }
-}
-
-rootProject.buildDir = '../build'
-subprojects {
-    project.buildDir = "${rootProject.buildDir}/${project.name}"
-    project.evaluationDependsOn(':app')
-}
-
-task clean(type: Delete) {
-    delete rootProject.buildDir
-}
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/gradle.properties b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/gradle.properties
deleted file mode 100644
index 94adc3a..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-org.gradle.jvmargs=-Xmx1536M
-android.useAndroidX=true
-android.enableJetifier=true
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/gradle/wrapper/gradle-wrapper.properties b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index bc6a58a..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jun 23 08:50:38 CEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/settings.gradle b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/settings.gradle
deleted file mode 100644
index 44e62bc..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/settings.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-include ':app'
-
-def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
-def properties = new Properties()
-
-assert localPropertiesFile.exists()
-localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
-
-def flutterSdkPath = properties.getProperty("flutter.sdk")
-assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
-apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/lib/main.dart b/packages/pigeon/platform_tests/android_kotlin_unit_tests/lib/main.dart
deleted file mode 100644
index f9b0dd7..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/lib/main.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-void main() {}
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/pubspec.yaml b/packages/pigeon/platform_tests/android_kotlin_unit_tests/pubspec.yaml
deleted file mode 100644
index 1b00c7b..0000000
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/pubspec.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-name: android_kotlin_unit_tests
-description: Unit tests for Pigeon generated Java code.
-
-publish_to: "none" # Remove this line if you wish to publish to pub.dev
-version: 1.0.0+1
-
-environment:
-  sdk: ">=2.12.0 <3.0.0"
-
-dependencies:
-  cupertino_icons: ^1.0.2
-  flutter:
-    sdk: flutter
-
-dev_dependencies:
-  flutter_test:
-    sdk: flutter
-
-flutter:
-  uses-material-design: true
diff --git a/packages/pigeon/platform_tests/android_unit_tests/.gitignore b/packages/pigeon/platform_tests/android_unit_tests/.gitignore
deleted file mode 100644
index 0fa6b67..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/.gitignore
+++ /dev/null
@@ -1,46 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-**/ios/Flutter/.last_build_id
-.dart_tool/
-.flutter-plugins
-.flutter-plugins-dependencies
-.packages
-.pub-cache/
-.pub/
-/build/
-
-# Web related
-lib/generated_plugin_registrant.dart
-
-# Symbolication related
-app.*.symbols
-
-# Obfuscation related
-app.*.map.json
-
-# Android Studio will place build artifacts here
-/android/app/debug
-/android/app/profile
-/android/app/release
diff --git a/packages/pigeon/platform_tests/android_unit_tests/.metadata b/packages/pigeon/platform_tests/android_unit_tests/.metadata
deleted file mode 100644
index 62b61c3..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/.metadata
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
-  revision: 891511d58f6550ce9e9b03b8d7c6a602caa97488
-  channel: master
-
-project_type: app
diff --git a/packages/pigeon/platform_tests/android_unit_tests/README.md b/packages/pigeon/platform_tests/android_unit_tests/README.md
deleted file mode 100644
index e109aa5..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# android_unit_tests
-
-Unit-tests for Pigeon generated Java code.  See [../../run_tests.sh](../../run_tests.sh).
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/.gitignore b/packages/pigeon/platform_tests/android_unit_tests/android/.gitignore
deleted file mode 100644
index 0a741cb..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-gradle-wrapper.jar
-/.gradle
-/captures/
-/gradlew
-/gradlew.bat
-/local.properties
-GeneratedPluginRegistrant.java
-
-# Remember to never publicly share your keystore.
-# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
-key.properties
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/.project b/packages/pigeon/platform_tests/android_unit_tests/android/.project
deleted file mode 100644
index fe67538..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>android_</name>
-	<comment>Project android_ created by Buildship.</comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
-	</natures>
-	<filteredResources>
-		<filter>
-			<id>1624921942866</id>
-			<name></name>
-			<type>30</type>
-			<matcher>
-				<id>org.eclipse.core.resources.regexFilterMatcher</id>
-				<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
-			</matcher>
-		</filter>
-	</filteredResources>
-</projectDescription>
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/.settings/org.eclipse.buildship.core.prefs b/packages/pigeon/platform_tests/android_unit_tests/android/.settings/org.eclipse.buildship.core.prefs
deleted file mode 100644
index 6154443..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/.settings/org.eclipse.buildship.core.prefs
+++ /dev/null
@@ -1,13 +0,0 @@
-arguments=
-auto.sync=false
-build.scans.enabled=false
-connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
-connection.project.dir=
-eclipse.preferences.version=1
-gradle.user.home=
-java.home=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
-jvm.arguments=
-offline.mode=false
-override.workspace.settings=true
-show.console.view=true
-show.executions.view=true
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/build.gradle b/packages/pigeon/platform_tests/android_unit_tests/android/app/build.gradle
deleted file mode 100644
index 93562e7..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/build.gradle
+++ /dev/null
@@ -1,65 +0,0 @@
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
-if (localPropertiesFile.exists()) {
-    localPropertiesFile.withReader('UTF-8') { reader ->
-        localProperties.load(reader)
-    }
-}
-
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
-    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
-if (flutterVersionCode == null) {
-    flutterVersionCode = '1'
-}
-
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
-if (flutterVersionName == null) {
-    flutterVersionName = '1.0'
-}
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
-android {
-    compileSdkVersion 31
-
-    sourceSets {
-        main.java.srcDirs += 'src/main/kotlin'
-    }
-
-    defaultConfig {
-        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
-        applicationId "com.example.android_unit_tests"
-        minSdkVersion 16
-        targetSdkVersion 30
-        versionCode flutterVersionCode.toInteger()
-        versionName flutterVersionName
-    }
-
-    buildTypes {
-        release {
-            // TODO: Add your own signing config for the release build.
-            // Signing with the debug keys for now, so `flutter run --release` works.
-            signingConfig signingConfigs.debug
-        }
-    }
-
-    testOptions {
-        unitTests.returnDefaultValues = true
-    }
-}
-
-flutter {
-    source '../..'
-}
-
-dependencies {
-    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
-    testImplementation 'junit:junit:4.+'
-    testImplementation "org.mockito:mockito-core:3.+"
-}
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/debug/AndroidManifest.xml b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index 0102266..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android_unit_tests">
-    <!-- Flutter needs it to communicate with the running application
-         to allow setting breakpoints, to provide hot reload, etc.
-    -->
-    <uses-permission android:name="android.permission.INTERNET"/>
-</manifest>
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/AndroidManifest.xml b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index a945186..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android_unit_tests">
-   <application
-        android:label="android_unit_tests"
-        android:icon="@mipmap/ic_launcher">
-        <activity
-            android:name=".MainActivity"
-            android:launchMode="singleTop"
-            android:theme="@style/LaunchTheme"
-            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
-            android:hardwareAccelerated="true"
-            android:windowSoftInputMode="adjustResize">
-            <!-- Specifies an Android theme to apply to this Activity as soon as
-                 the Android process has started. This theme is visible to the user
-                 while the Flutter UI initializes. After that, this theme continues
-                 to determine the Window background behind the Flutter UI. -->
-            <meta-data
-              android:name="io.flutter.embedding.android.NormalTheme"
-              android:resource="@style/NormalTheme"
-              />
-            <!-- Displays an Android View that continues showing the launch screen
-                 Drawable until Flutter paints its first frame, then this splash
-                 screen fades out. A splash screen is useful to avoid any visual
-                 gap between the end of Android's launch screen and the painting of
-                 Flutter's first frame. -->
-            <meta-data
-              android:name="io.flutter.embedding.android.SplashScreenDrawable"
-              android:resource="@drawable/launch_background"
-              />
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
-        <!-- Don't delete the meta-data below.
-             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
-        <meta-data
-            android:name="flutterEmbedding"
-            android:value="2" />
-    </application>
-</manifest>
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/java/com/example/android_unit_tests/.gitignore b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/java/com/example/android_unit_tests/.gitignore
deleted file mode 100644
index 27d1535..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/java/com/example/android_unit_tests/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.java
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/kotlin/com/example/android_unit_tests/MainActivity.kt b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/kotlin/com/example/android_unit_tests/MainActivity.kt
deleted file mode 100644
index 4faeabd..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/kotlin/com/example/android_unit_tests/MainActivity.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-package com.example.android_unit_tests
-
-import io.flutter.embedding.android.FlutterActivity
-
-class MainActivity: FlutterActivity() {
-}
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/drawable-v21/launch_background.xml
deleted file mode 100644
index f74085f..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/drawable-v21/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="?android:colorBackground" />
-
-    <!-- You can insert your own image assets here -->
-    <!-- <item>
-        <bitmap
-            android:gravity="center"
-            android:src="@mipmap/launch_image" />
-    </item> -->
-</layer-list>
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/drawable/launch_background.xml b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 304732f..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="@android:color/white" />
-
-    <!-- You can insert your own image assets here -->
-    <!-- <item>
-        <bitmap
-            android:gravity="center"
-            android:src="@mipmap/launch_image" />
-    </item> -->
-</layer-list>
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index a60e5e3..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/values-night/styles.xml b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/values-night/styles.xml
deleted file mode 100644
index 449a9f9..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/values-night/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
-    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
-        <!-- Show a splash screen on the activity. Automatically removed when
-             Flutter draws its first frame -->
-        <item name="android:windowBackground">@drawable/launch_background</item>
-    </style>
-    <!-- Theme applied to the Android Window as soon as the process has started.
-         This theme determines the color of the Android Window while your
-         Flutter UI initializes, as well as behind your Flutter UI while its
-         running.
-         
-         This Theme is only used starting with V2 of Flutter's Android embedding. -->
-    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
-        <item name="android:windowBackground">?android:colorBackground</item>
-    </style>
-</resources>
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/values/styles.xml b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index d74aa35..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
-    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
-        <!-- Show a splash screen on the activity. Automatically removed when
-             Flutter draws its first frame -->
-        <item name="android:windowBackground">@drawable/launch_background</item>
-    </style>
-    <!-- Theme applied to the Android Window as soon as the process has started.
-         This theme determines the color of the Android Window while your
-         Flutter UI initializes, as well as behind your Flutter UI while its
-         running.
-         
-         This Theme is only used starting with V2 of Flutter's Android embedding. -->
-    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
-        <item name="android:windowBackground">?android:colorBackground</item>
-    </style>
-</resources>
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/profile/AndroidManifest.xml b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/profile/AndroidManifest.xml
deleted file mode 100644
index 0102266..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/profile/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android_unit_tests">
-    <!-- Flutter needs it to communicate with the running application
-         to allow setting breakpoints, to provide hot reload, etc.
-    -->
-    <uses-permission android:name="android.permission.INTERNET"/>
-</manifest>
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/build.gradle b/packages/pigeon/platform_tests/android_unit_tests/android/build.gradle
deleted file mode 100644
index 410e2c7..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/build.gradle
+++ /dev/null
@@ -1,34 +0,0 @@
-buildscript {
-    ext.kotlin_version = '1.6.0'
-    repositories {
-        google()
-        mavenCentral()
-    }
-
-    dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
-        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-    }
-}
-
-allprojects {
-    repositories {
-        google()
-        mavenCentral()
-    }
-    gradle.projectsEvaluated {
-        tasks.withType(JavaCompile) {
-            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
-        }
-    }
-}
-
-rootProject.buildDir = '../build'
-subprojects {
-    project.buildDir = "${rootProject.buildDir}/${project.name}"
-    project.evaluationDependsOn(':app')
-}
-
-task clean(type: Delete) {
-    delete rootProject.buildDir
-}
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/gradle.properties b/packages/pigeon/platform_tests/android_unit_tests/android/gradle.properties
deleted file mode 100644
index 94adc3a..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-org.gradle.jvmargs=-Xmx1536M
-android.useAndroidX=true
-android.enableJetifier=true
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/gradle/wrapper/gradle-wrapper.properties b/packages/pigeon/platform_tests/android_unit_tests/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index bc6a58a..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jun 23 08:50:38 CEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/settings.gradle b/packages/pigeon/platform_tests/android_unit_tests/android/settings.gradle
deleted file mode 100644
index 44e62bc..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/android/settings.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-include ':app'
-
-def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
-def properties = new Properties()
-
-assert localPropertiesFile.exists()
-localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
-
-def flutterSdkPath = properties.getProperty("flutter.sdk")
-assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
-apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/packages/pigeon/platform_tests/android_unit_tests/lib/main.dart b/packages/pigeon/platform_tests/android_unit_tests/lib/main.dart
deleted file mode 100644
index f9b0dd7..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/lib/main.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-void main() {}
diff --git a/packages/pigeon/platform_tests/android_unit_tests/pubspec.yaml b/packages/pigeon/platform_tests/android_unit_tests/pubspec.yaml
deleted file mode 100644
index 2d098b8..0000000
--- a/packages/pigeon/platform_tests/android_unit_tests/pubspec.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-name: android_unit_tests
-description: Unit tests for Pigeon generated Java code.
-
-publish_to: 'none' # Remove this line if you wish to publish to pub.dev
-version: 1.0.0+1
-
-environment:
-  sdk: ">=2.12.0 <3.0.0"
-
-dependencies:
-  cupertino_icons: ^1.0.2
-  flutter:
-    sdk: flutter
-
-dev_dependencies:
-  flutter_test:
-    sdk: flutter
-
-flutter:
-  uses-material-design: true
diff --git a/packages/pigeon/platform_tests/test_plugin/android/build.gradle b/packages/pigeon/platform_tests/test_plugin/android/build.gradle
index 4dfe18c..737ccbb 100644
--- a/packages/pigeon/platform_tests/test_plugin/android/build.gradle
+++ b/packages/pigeon/platform_tests/test_plugin/android/build.gradle
@@ -43,4 +43,21 @@
     defaultConfig {
         minSdkVersion 16
     }
+
+    testOptions {
+        unitTests.includeAndroidResources = true
+        unitTests.returnDefaultValues = true
+        unitTests.all {
+            testLogging {
+               events "passed", "skipped", "failed", "standardOut", "standardError"
+               outputs.upToDateWhen {false}
+               showStandardStreams = true
+            }
+        }
+    }
+
+    dependencies {
+        testImplementation 'junit:junit:4.+'
+        testImplementation "io.mockk:mockk:1.12.4"
+    }
 }
diff --git a/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/.gitignore b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/.gitignore
new file mode 100644
index 0000000..c69837a
--- /dev/null
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/.gitignore
@@ -0,0 +1,5 @@
+# TODO(stuartmorgan): Remove this, so that review will show the effects of
+# changes on generated files. This will need a way to avoid unnecessary churn,
+# such as a flag to suppress version stamp generation.
+*.kt
+!TestPlugin.kt
diff --git a/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/TestPlugin.kt b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/TestPlugin.kt
index bc19e7f..f1bb6a8 100644
--- a/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/TestPlugin.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/TestPlugin.kt
@@ -12,28 +12,14 @@
 import io.flutter.plugin.common.MethodChannel.MethodCallHandler
 import io.flutter.plugin.common.MethodChannel.Result
 
-/** TestPlugin */
-class TestPlugin: FlutterPlugin, MethodCallHandler {
-  /// The MethodChannel that will the communication between Flutter and native Android
-  ///
-  /// This local reference serves to register the plugin with the Flutter Engine and unregister it
-  /// when the Flutter Engine is detached from the Activity
-  private lateinit var channel : MethodChannel
-
+/**
+ * This plugin is currently a no-op since only unit tests have been set up.
+ * In the future, this will register Pigeon APIs used in integration tests.
+ */
+class TestPlugin: FlutterPlugin {
   override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
-    channel = MethodChannel(flutterPluginBinding.binaryMessenger, "test_plugin")
-    channel.setMethodCallHandler(this)
-  }
-
-  override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
-    if (call.method == "getPlatformVersion") {
-      result.success("Android ${android.os.Build.VERSION.RELEASE}")
-    } else {
-      result.notImplemented()
-    }
   }
 
   override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
-    channel.setMethodCallHandler(null)
   }
 }
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AllDatatypesTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt
similarity index 98%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AllDatatypesTest.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt
index 87a94ca..82e9123 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AllDatatypesTest.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import io.flutter.plugin.common.BinaryMessenger
 import io.mockk.every
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AsyncHandlersTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AsyncHandlersTest.kt
similarity index 98%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AsyncHandlersTest.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AsyncHandlersTest.kt
index 04937c0..5a12c20 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AsyncHandlersTest.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AsyncHandlersTest.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import io.flutter.plugin.common.BinaryMessenger
 import io.mockk.every
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EchoBinaryMessenger.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/EchoBinaryMessenger.kt
similarity index 95%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EchoBinaryMessenger.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/EchoBinaryMessenger.kt
index 652cb13..e632ddf 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EchoBinaryMessenger.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/EchoBinaryMessenger.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import io.flutter.plugin.common.BinaryMessenger
 import io.flutter.plugin.common.MessageCodec
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EnumTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/EnumTest.kt
similarity index 97%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EnumTest.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/EnumTest.kt
index 1246e2f..a0cf3f9 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EnumTest.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/EnumTest.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import io.flutter.plugin.common.BinaryMessenger
 import io.mockk.every
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/ListTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/ListTest.kt
similarity index 96%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/ListTest.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/ListTest.kt
index c8d1669..d0edb5e 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/ListTest.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/ListTest.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import io.flutter.plugin.common.BinaryMessenger
 import io.mockk.every
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/MultipleArityTests.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/MultipleArityTests.kt
similarity index 97%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/MultipleArityTests.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/MultipleArityTests.kt
index 0144ce1..bbb1e6c 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/MultipleArityTests.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/MultipleArityTests.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import io.flutter.plugin.common.BinaryMessenger
 import io.mockk.every
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NonNullFieldsTests.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/NonNullFieldsTests.kt
similarity index 89%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NonNullFieldsTests.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/NonNullFieldsTests.kt
index 7f89152..efa699f 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NonNullFieldsTests.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/NonNullFieldsTests.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import junit.framework.TestCase
 import org.junit.Test
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NullableReturnsTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/NullableReturnsTest.kt
similarity index 97%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NullableReturnsTest.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/NullableReturnsTest.kt
index 2b8fd2e..7bb1474 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NullableReturnsTest.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/NullableReturnsTest.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import io.flutter.plugin.common.BinaryMessenger
 import io.mockk.every
diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/PrimitiveTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/PrimitiveTest.kt
similarity index 99%
rename from packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/PrimitiveTest.kt
rename to packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/PrimitiveTest.kt
index e4a86b4..c79adbe 100644
--- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/PrimitiveTest.kt
+++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/PrimitiveTest.kt
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package com.example.android_kotlin_unit_tests
+package com.example.test_plugin
 
 import io.flutter.plugin.common.BinaryMessenger
 import io.mockk.every
diff --git a/packages/pigeon/run_tests.sh b/packages/pigeon/run_tests.sh
index df3ac08..9bfc9ab 100755
--- a/packages/pigeon/run_tests.sh
+++ b/packages/pigeon/run_tests.sh
@@ -119,12 +119,12 @@
 gen_android_unittests_code() {
   local input=$1
   local javaName=$2
-  local javaOut="platform_tests/android_unit_tests/android/app/src/main/java/com/example/android_unit_tests/$javaName.java"
+  local javaOut="platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/$javaName.java"
   $run_pigeon \
     --input $input \
     --dart_out /dev/null \
     --java_out $javaOut \
-    --java_package "com.example.android_unit_tests"
+    --java_package "com.example.alternate_language_test_plugin"
 
   java -jar ci/$java_formatter --replace $javaOut
   java -jar ci/$java_linter -c "ci/$google_checks" "$javaOut"
@@ -298,7 +298,7 @@
   gen_android_unittests_code ./pigeons/void_arg_host.dart VoidArgHost
   gen_android_unittests_code ./pigeons/voidflutter.dart VoidFlutter
   gen_android_unittests_code ./pigeons/voidhost.dart VoidHost
-  cd platform_tests/android_unit_tests
+  cd platform_tests/alternate_language_test_plugin/example
   if [ ! -f "android/gradlew" ]; then
     flutter build apk --debug
   fi
@@ -334,11 +334,13 @@
     should_run_macos_swift_unittests=false
     should_run_android_kotlin_unittests=false
     case $OPTARG in
+    # TODO(stuartmorgan): Rename to include "java".
     android_unittests) should_run_android_unittests=true ;;
     dart_compilation_tests) should_run_dart_compilation_tests=true ;;
     dart_unittests) should_run_dart_unittests=true ;;
     flutter_unittests) should_run_flutter_unittests=true ;;
     ios_e2e_tests) should_run_ios_e2e_tests=true ;;
+    # TODO(stuartmorgan): Rename to include "objc".
     ios_unittests) should_run_ios_unittests=true ;;
     ios_swift_unittests) should_run_ios_swift_unittests=true ;;
     mock_handler_tests) should_run_mock_handler_tests=true ;;
diff --git a/packages/pigeon/tool/run_tests.dart b/packages/pigeon/tool/run_tests.dart
index 445744e..6f9045f 100644
--- a/packages/pigeon/tool/run_tests.dart
+++ b/packages/pigeon/tool/run_tests.dart
@@ -27,6 +27,8 @@
 const String _testFlag = 'test';
 const String _listFlag = 'list';
 
+const String testPluginRelativePath = 'platform_tests/test_plugin';
+
 @immutable
 class _TestInfo {
   const _TestInfo({required this.function, this.description});
@@ -100,8 +102,10 @@
 }
 
 Future<int> _runAndroidKotlinUnitTests() async {
-  const String androidKotlinUnitTestsPath =
-      './platform_tests/android_kotlin_unit_tests';
+  const String androidKotlinUnitTestsPath = './$testPluginRelativePath';
+  // TODO(stuartmorgan): Move generation to a separate script in tool/ that can
+  // easily be run manually as well (e.g., to look at generated code without
+  // running tests, or to update generated code when running tests in an IDE).
   const List<String> tests = <String>[
     'all_datatypes',
     'all_void',
@@ -129,18 +133,19 @@
     generateCode = await _runPigeon(
       input: './pigeons/$test.dart',
       kotlinOut:
-          '$androidKotlinUnitTestsPath/android/app/src/main/kotlin/com/example/android_kotlin_unit_tests/${snakeToPascalCase(test)}.kt',
-      kotlinPackage: 'com.example.android_kotlin_unit_tests',
+          '$androidKotlinUnitTestsPath/android/src/main/kotlin/com/example/test_plugin/${snakeToPascalCase(test)}.kt',
+      kotlinPackage: 'com.example.test_plugin',
     );
     if (generateCode != 0) {
       return generateCode;
     }
   }
 
+  const String examplePath = '$androidKotlinUnitTestsPath/example';
   final Process gradlewExists = await _streamOutput(Process.start(
     './gradlew',
     <String>[],
-    workingDirectory: '$androidKotlinUnitTestsPath/android',
+    workingDirectory: '$examplePath/android',
     runInShell: true,
   ));
   final int gradlewExistsCode = await gradlewExists.exitCode;
@@ -148,7 +153,7 @@
     final Process compile = await _streamOutput(Process.start(
       'flutter',
       <String>['build', 'apk', '--debug'],
-      workingDirectory: androidKotlinUnitTestsPath,
+      workingDirectory: examplePath,
       runInShell: true,
     ));
     final int compileCode = await compile.exitCode;
@@ -160,9 +165,9 @@
   final Process run = await _streamOutput(Process.start(
     './gradlew',
     <String>[
-      'test',
+      'testDebugUnitTest',
     ],
-    workingDirectory: '$androidKotlinUnitTestsPath/android',
+    workingDirectory: '$examplePath/android',
   ));
 
   return run.exitCode;