diff --git a/packages/path_provider/path_provider_android/CHANGELOG.md b/packages/path_provider/path_provider_android/CHANGELOG.md
index d0bee39ec1a6..4cc9962622ea 100644
--- a/packages/path_provider/path_provider_android/CHANGELOG.md
+++ b/packages/path_provider/path_provider_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.3.1
+
+* Temporarily reverts changes introduced in version 2.3.0.
+
## 2.3.0
* Changes internal implementation to use JNI.
diff --git a/packages/path_provider/path_provider_android/CONTRIBUTING.md b/packages/path_provider/path_provider_android/CONTRIBUTING.md
deleted file mode 100644
index 9f764f87c640..000000000000
--- a/packages/path_provider/path_provider_android/CONTRIBUTING.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Contributing
-
-## `jnigen`
-
-This package uses [jnigen](https://pub.dev/packages/jnigen) to call Android
-methods, rather than using the standard Flutter plugin structure. To add new
-functionality to the JNI interface, update `tool/jnigen.dart`, then run:
-
-```bash
-dart run tool/jnigen.dart
-```
diff --git a/packages/path_provider/path_provider_android/android/build.gradle.kts b/packages/path_provider/path_provider_android/android/build.gradle.kts
new file mode 100644
index 000000000000..3114e6c6385e
--- /dev/null
+++ b/packages/path_provider/path_provider_android/android/build.gradle.kts
@@ -0,0 +1,64 @@
+group = "io.flutter.plugins.pathprovider"
+version = "1.0-SNAPSHOT"
+
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath("com.android.tools.build:gradle:8.13.1")
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+plugins {
+ id("com.android.library")
+}
+
+android {
+ namespace = "io.flutter.plugins.pathprovider"
+ compileSdk = flutter.compileSdkVersion
+
+ defaultConfig {
+ minSdk = 24
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ lint {
+ checkAllWarnings = true
+ warningsAsErrors = true
+ disable.addAll(setOf("AndroidGradlePluginVersion", "InvalidPackage", "GradleDependency", "NewerVersionAvailable"))
+ }
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+ }
+
+ testOptions {
+ unitTests {
+ isIncludeAndroidResources = true
+ isReturnDefaultValues = true
+ all {
+ it.outputs.upToDateWhen { false }
+ it.testLogging {
+ events("passed", "skipped", "failed", "standardOut", "standardError")
+ showStandardStreams = true
+ }
+ }
+ }
+ }
+}
+
+dependencies {
+ implementation("androidx.annotation:annotation:1.9.1")
+ testImplementation("junit:junit:4.13.2")
+}
diff --git a/packages/path_provider/path_provider_android/android/settings.gradle.kts b/packages/path_provider/path_provider_android/android/settings.gradle.kts
new file mode 100644
index 000000000000..4fc5bb16d8aa
--- /dev/null
+++ b/packages/path_provider/path_provider_android/android/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "path_provider_android"
diff --git a/packages/path_provider/path_provider_android/android/src/main/AndroidManifest.xml b/packages/path_provider/path_provider_android/android/src/main/AndroidManifest.xml
new file mode 100644
index 000000000000..ae9c21c963fd
--- /dev/null
+++ b/packages/path_provider/path_provider_android/android/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/packages/path_provider/path_provider_android/android/src/main/java/io/flutter/plugins/pathprovider/Messages.java b/packages/path_provider/path_provider_android/android/src/main/java/io/flutter/plugins/pathprovider/Messages.java
new file mode 100644
index 000000000000..923a8a28e8d2
--- /dev/null
+++ b/packages/path_provider/path_provider_android/android/src/main/java/io/flutter/plugins/pathprovider/Messages.java
@@ -0,0 +1,320 @@
+// Copyright 2013 The Flutter Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+// Autogenerated from Pigeon (v26.1.0), do not edit directly.
+// See also: https://pub.dev/packages/pigeon
+
+package io.flutter.plugins.pathprovider;
+
+import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import io.flutter.plugin.common.BasicMessageChannel;
+import io.flutter.plugin.common.BinaryMessenger;
+import io.flutter.plugin.common.MessageCodec;
+import io.flutter.plugin.common.StandardMessageCodec;
+import java.io.ByteArrayOutputStream;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+/** Generated class from Pigeon. */
+@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression", "serial"})
+public class Messages {
+
+ /** Error class for passing custom error details to Flutter via a thrown PlatformException. */
+ public static class FlutterError extends RuntimeException {
+
+ /** The error code. */
+ public final String code;
+
+ /** The error details. Must be a datatype supported by the api codec. */
+ public final Object details;
+
+ public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) {
+ super(message);
+ this.code = code;
+ this.details = details;
+ }
+ }
+
+ @NonNull
+ protected static ArrayList