Key takeaways
- Flutter removed the Android v1 embedding in Flutter 3.29, released on February 12, 2025. Classes such as io.flutter.app.FlutterActivity, io.flutter.app.FlutterApplication and io.flutter.view.FlutterView no longer exist.
- The Flutter tool treats an app as v1, and stops with "Build failed due to use of deleted Android v1 embedding", when its AndroidManifest.xml uses io.flutter.app.FlutterApplication or lacks <meta-data android:name="flutterEmbedding" android:value="2"/>.
- The app fix is Flutter's own migration: change the FlutterActivity import, move custom channel setup into configureFlutterEngine, set android:name="${applicationName}" and add the flutterEmbedding meta-data with value 2.
- A plugin that still has a registerWith(PluginRegistry.Registrar) method fails to compile instead. Flutter's build output suggests flutter pub upgrade, and plugin authors should delete registerWith.
- The v2 embedding arrived in Flutter 1.12 in December 2019, and flutter create stopped making v1 projects in Flutter 1.22, so, in my view, the apps hit now are mostly ones created before 2020 and not updated since.
Pricing an app? Try the free app cost calculator or get a range for your project in the instant quote.
If flutter build stops with "Build failed due to use of deleted Android v1 embedding", your Android project still uses the wrapper Flutter removed in Flutter 3.29. For a project that came straight from flutter create, Flutter's guide changes two files: MainActivity and AndroidManifest.xml. Custom channel code or a splash screen adds a little more. If the build instead fails inside a plugin with cannot find symbol and PluginRegistry.Registrar, the plugin is the problem, and a newer version of it usually fixes it.
If you landed here from an old link to Flutter's "Upgrading pre 1.12 Android projects" wiki page or an old flutter.dev/go migration link, this is what changed and where the steps live now. The facts come from Flutter's breaking-change docs, its migration guide and the Flutter tool's source code, as listed in the sources. I checked each one on October 18, 2026.
Disclosure: App369 is my studio. I build and fix Flutter apps, and the last section mentions what I sell. Google doesn't pay me for anything on this page.
What happened to the v1 embedding, and when
| Date | What happened | Source |
|---|---|---|
| December 11, 2019 | Flutter 1.12 reaches stable with the v2 Android embedding (io.flutter.embedding) | Flutter deprecation page, release archive |
| October 1, 2020 | Flutter 1.22: flutter create only makes v2 apps and plugins. Existing v1 apps keep working, but get a migration warning when they use plugins | Flutter deprecation page |
| February 12, 2025 | Flutter 3.29 removes the v1 embedding Java classes | Flutter removal page, release archive |
Flutter's deprecation page says that by Q2 2020 only 26% of applications used the v1 embedding. In my view, the apps that still hit this error are usually ones created before 2020 and moved to a new Flutter version for the first time in years.
What the old addresses do today
Checked on October 18, 2026:
- The "Upgrading pre 1.12 Android projects" page on the Flutter GitHub wiki now only says it has moved, and links to the same page in the Flutter repository's
docsfolder. - flutter.dev/go/android-project-migration now redirects to Flutter's AndroidX migration page, which doesn't cover the v1 embedding. The embedding steps are in the repository doc above.
- flutter.dev/go/android-plugin-migration redirects to "Supporting the new Android plugins APIs", which is still the right page for plugin authors.
Why Flutter says your app is v1
The check is in the Flutter tool's project.dart. It reads android/app/src/main/AndroidManifest.xml and treats the app as v1 when:
- the
<application>tag hasandroid:name="io.flutter.app.FlutterApplication", or - there is a
flutterEmbeddingmeta-data tag with value1, or - there is no
<meta-data android:name="flutterEmbedding" android:value="2"/>at all, or - the manifest file is missing.
Any of those ends the build with "Build failed due to use of deleted Android v1 embedding." The tool skips this check for add-to-app modules and plugins.
Fixing the app
These are the steps from Flutter's Upgrading pre 1.12 Android projects guide, for a project made with flutter create.
- Update
MainActivity. Changeimport io.flutter.app.FlutterActivitytoimport io.flutter.embedding.android.FlutterActivityand delete theonCreateoverride that callsGeneratedPluginRegistrant.registerWith(this). The newFlutterActivityregisters plugins itself.import io.flutter.embedding.android.FlutterActivity class MainActivity: FlutterActivity()
If your file isMainActivity.java, the guide's result is the same:import io.flutter.embedding.android.FlutterActivity;andpublic class MainActivity extends FlutterActivity {}. - Move any platform channel code. If
onCreatealso set up aMethodChannel, move it into aconfigureFlutterEngine(flutterEngine)override, and useflutterEngine.getDartExecutor().getBinaryMessenger()instead ofgetFlutterView(). The guide's example also callsGeneratedPluginRegistrant.registerWith(flutterEngine)at the start of that override. - Fix the application tag. In
AndroidManifest.xml, replaceandroid:name="io.flutter.app.FlutterApplication"withandroid:name="${applicationName}". - Declare the v2 embedding. Add this inside
<application>:<meta-data android:name="flutterEmbedding" android:value="2" /> - Update the splash screen if you had one. Remove meta-data named
io.flutter.app.android.SplashScreenUntilFirstFrame. The guide shows the replacement: aLaunchThemeand aNormalThemeinstyles.xml, set on the activity. - Rebuild. The guide says the app should then build as normal, for example with
flutter build apk. My advice: runflutter cleanfirst, andflutter pub upgradetoo, because a project this old usually has plugins that are out of date as well.
If your own code uses other removed classes, Flutter's removal page lists the replacements:
| Removed class | Use instead |
|---|---|
io.flutter.app.FlutterActivity | io.flutter.embedding.android.FlutterActivity |
io.flutter.app.FlutterFragmentActivity | io.flutter.embedding.android.FlutterFragmentActivity |
io.flutter.app.FlutterApplication | Removed. Extend android.app.Application if you need a custom one |
io.flutter.app.FlutterPlayStoreSplitApplication | io.flutter.embedding.android.FlutterPlayStoreSplitApplication |
io.flutter.view.FlutterMain | io.flutter.embedding.engine.loader.FlutterLoader |
io.flutter.view.FlutterView and FlutterNativeView | io.flutter.embedding.android.FlutterView |
For add-to-app projects, the same guide has a separate section: remove calls to FlutterMain.startInitialization and ensureInitializationComplete, and replace the io.flutter.facade classes.
Fixing a plugin that still uses PluginRegistry.Registrar
If the error points at a plugin, its Android code usually still has a registerWith(PluginRegistry.Registrar registrar) method. That API was removed with the rest of the v1 embedding. When the Flutter tool sees that line in a failed build, it prints its own advice: run flutter pub upgrade to get newer plugin versions, and file an issue if that doesn't help.
- If you use the plugin: upgrade it, as the tool suggests. My advice: if
flutter pub upgradedoesn't move it, check pub.dev for a newer major version and runflutter pub upgrade --major-versions. If the plugin has had no release in years, replace it. - If you maintain the plugin: Flutter's removal page says to delete the
registerWithmethod from yourFlutterPluginimplementation. The Flutter team did the same for its own plugins in flutter/packages#6494.
Need a hand?
If an older Flutter app won't build after an upgrade, the App Fix Ticket covers it in two fixed-price steps. A $450 Diagnosis gives you the root cause with evidence and a fixed repair quote within 3 business days, credited toward the fix. If you go ahead, the $1,200 Fix takes 5 business days and comes as a pull request. If the iOS side broke too, see Flutter iOS build failed after an upgrade, or send me a short description.
Frequently asked questions
- What does "Build failed due to use of deleted Android v1 embedding" mean?
- The Flutter tool decided your Android app still uses the old v1 embedding, which was removed in Flutter 3.29. In Flutter's source, that happens when AndroidManifest.xml uses io.flutter.app.FlutterApplication, or has no flutterEmbedding meta-data with value 2, or the AndroidManifest.xml file is missing.
- How do I fix the deleted Android v1 embedding error?
- Follow Flutter's "Upgrading pre 1.12 Android projects" steps: import io.flutter.embedding.android.FlutterActivity in MainActivity, remove the old onCreate plugin registration, set android:name="${applicationName}" on the application tag, and add <meta-data android:name="flutterEmbedding" android:value="2"/> inside <application>.
- Which Flutter version removed the v1 embedding?
- Flutter 3.29. Flutter's breaking-change page says the removal landed in 3.28.0-0.1.pre and shipped in stable 3.29, which Flutter's release archive dates February 12, 2025.
- Why does a plugin fail with "cannot find symbol" PluginRegistry.Registrar?
- The plugin usually still has a registerWith method that takes a PluginRegistry.Registrar, a v1 API removed in Flutter 3.29. Flutter's build output suggests running flutter pub upgrade to get a newer plugin version. If no fixed version exists, the method has to be removed from the plugin.
- Can I keep using the v1 embedding on an older Flutter version?
- Flutter's breaking-change page says it was removed in 3.29, so earlier versions still have it. In my view, pinning an old Flutter only delays the fix. Newer plugin versions and store requirements move on, and for a standard flutter create project the migration changes two files.
Sources
- Flutter docs, Removal of v1 Android embedding Java APIs (last updated July 31, 2026)
- Flutter docs, Android v1 embedding app and plugin creation deprecation
- Flutter on GitHub, Upgrading pre 1.12 Android projects
- Flutter docs, Supporting the new Android plugins APIs
- Flutter on GitHub, flutter_tools project.dart (embedding check)
- Flutter on GitHub, flutter_tools gradle_errors.dart (v1 embedding plugin handler)
- Flutter release archive (macOS)
Fixed-price services
Want this done at a fixed price?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
Related Resources
Related guides
Flutter iOS Build Failed After an Upgrade? Fix CocoaPods and Xcode Errors (2026)
Flutter iOS build failing after upgrading Flutter, FlutterFire or Xcode? How to read the real error, then fix CocoaPods, deployment target and plugin version mismatches.
Read moreJCenter Shutdown: Fixing Old Android and Flutter Builds
Bintray shut down on May 1, 2021, JCenter has redirected to Maven Central since August 15, 2024, and Gradle 9 removed jcenter(). How to fix an old Android or Flutter build that still points at them, with every address checked on October 18, 2026.
Read moreHow to Debug a Flutter and Firebase Bug: Find the Root Cause (2026)
Find the root cause of a Flutter and Firebase bug: reproduce it, read the right logs, isolate it with the Emulator Suite, and fix the five most common issues.
Read more