Android Studio Narwhal + Capacitor v7: ionic cap sync android Not Working

The Problem

I upgraded to Capacitor v7 and Android Studio Narwhal (from Koala) around the same time, and now ionic cap sync android completely stopped working. NO changes show up on device without manual cleaning.

What worked (Koala + Capacitor v6):

  1. Make any code changes

  2. Run ionic cap sync android

  3. :white_check_mark: Changes appeared immediately

What’s broken now (Narwhal + Capacitor v7):

  1. Make any code changes

  2. Run ionic cap sync android

  3. :cross_mark: Zero changes on device - still shows old everything

Current Painful Workaround

Every single change now requires:

  1. cd android && ./gradlew clean && cd ..

  2. ionic cap sync android

  3. Android Studio → Clean Project → Rebuild

  4. Finally see changes

This is killing productivity - what used to be one command is now 4+ manual steps.

What’s Not Working

  • Code changes (TS, JS, CSS, HTML)

  • Version updates in build.gradle

  • Config changes in capacitor.config.ts

  • Literally everything requires manual cleaning

Environment

  • Capacitor: v7.x (from v6)

  • Android Studio: Narwhal (from Koala)

  • Node.js: v21.3.0

  • Ionic CLI: Latest

What I’ve Tried

  • ionic cap sync android multiple times

  • Restarting dev server

  • Invalidating Android Studio caches

  • Verifying build completes without errors

My Questions

  1. Is this the Android Studio Narwhal upgrade or Capacitor v7 causing this?

  2. Should I run the AGP Upgrade Assistant mentioned in Capacitor v7 docs?

  3. Are there Narwhal-specific settings breaking Capacitor sync?

  4. Has anyone else hit this with the Koala → Narwhal + Capacitor v7 combo?

  5. Is there a way to get the old instant-sync workflow back?

This went from a seamless development experience to completely broken overnight. Any suggestions greatly appreciated! :folded_hands:

Hi.

As far as I know, sync is only to sync capacitor packages, not to copy code changes (TS, HTML, …)
To copy code I use ionic cap copy android.

And for live reload code, that boost your productivity x20, I use the command: ionic cap run android -l --external

FYI, ionic cap sync runs copy and update - source. It also builds your JS first by default.

Then definitely should be some circumstances where it doesn’t do the build, because I saw it executing and not doing the build option. And, obviously, not seeing my changes in the compiled app.

For that reason, my rules when I don’t use live reload, are always:

  1. ionic build
  2. If new/update capacitor features: sync
  3. If only web code: copy

With that rules, I always ensure that the compiled app I’m seeing is the ultimate code

Ok, I think I found the problem: in Windows, ionic cap sync nor copy doesn’t run build previously, so if you don’t build manually, nothing happens in Android Studio, you got your old code version.

In Mac I tested and it runs build.