androidairadb

error "activity class does not exist" when launching android app with adb shell am start


After adb install-ing my app, I can verify that it's there with adb shell pm list packages AppName:

package:air.com.client.AppName

So I know it's there, but when I try to launch it with adb shell am start -a android.intent.action.MAIN -n air.com.client/.AppName, I get this error:

Starting: Intent { cmp=air.com.client/.AppName}

Error type 3

Error: Activity class {air.com.client/air.com.client.AppName} does not exist.

If it matters, this is, as you may have noticed, an AIR app that's been packaged as an Android app. Any ideas? Did I miss something somewhere? When I use aapt dump xmltree I can see that my .apk includes an android.intent.action.MAIN entry in the intent-filter node, for what it's worth.

And finally, for sanity's sake, using the same command template I can launch the settings app with no problems:

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings

Solution

  • Managed to figure it out - I left a prompt open with adb logcat, then launched my app on the device - out of this corresponding log entry:

    I/ActivityManager( 2115): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=air.com.client.AppName/.AppEntry} from pid 2453

    I put together a new command line:

    adb shell start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n air.com.client.AppName/.AppEntry
    

    ... which does exactly what I wanted. I'll be honest, I don't understand exactly why it works, but that's good enough for now.