Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity

Hello, I am new to Appium and Selenium WebDriver so the question may be a bit easy to some of you.

  • Appium Version: 1.6.5
  • OS: Windows 10

Basically this is my code written in Java and this is the error I am getting:

capabilities.setCapability("platformVersion", "5.5");
capabilities.setCapability("deviceName", "nexus_5x");
capabilities.setCapability("avd", "nexus_5x");
capabilities.setCapability("app", "C:\\Users\\juanvidal\\projects\\automation\\src\\test\\resources\\apps\\tu-admin.apk");
capabilities.setCapability("appPackage", "com.jcor.laadministracion");
capabilities.setCapability("appActivity", ".activities.MainActivity");
//Fixed Properties
capabilities.setCapability("appium-version", "1.6");
capabilities.setCapability("platformName", "Android");

Error from Appium:

[MJSONWP] Encountered internal error running command: Error: Error occured while starting App. Original error: Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity at Object.wrappedLogger.errorAndThrow (C:\Users\juanvidal\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-support\lib\logging.js:63:13) at ADB.callee$0$0$ (C:\Users\juanvidal\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-adb\lib\tools\apk-utils.js:79:9) at tryCatch (C:\Users\juanvidal\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40) at GeneratorFunctionPrototype.invoke [as _invoke] (C:\Users\juanvidal\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:315:22) at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (C:\Users\juanvidal\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:100:21) at GeneratorFunctionPrototype.invoke (C:\Users\juanvidal\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37) at process._tickCallback (internal/process/next_tick.js:103:7)

Thanks in advance for your time!

@juanmartinvidal try:

  1. remove “appActivity”
  2. will not help add “appWaitActivity”
capabilities.setCapability("appWaitActivity", ".activities.*");

Hi @Aleksei, thanks for the fast answer!

I tried what you suggested, even left the “appActivity” line with no luck at all!

Please let me know anything you need from my side to try to figure this out.

Cheers,

Juan

@juanmartinvidal post full appium log at https://gist.github.com/

Hi @Aleksei, thanks for getting back to me.

Here’s the gist with the complete Log from Appium since I started the server.

Let me know if there’s anything else you need from my side.

And in my MANIFEST in the Android app this is my main activity.

@juanmartinvidal

  1. remove “appPackage” (it will get from apk automatically) and “appActivity” (this is needed when you start existing app on phone)
  2. add:
capabilities.setCapability(AndroidMobileCapabilityType.APP_WAIT_ACTIVITY, ".activities.MainActivity");
// or
capabilities.setCapability("appWaitActivity", ".activities.MainActivity");

if it fails check appium logs again to see what activity started instead

SO! total once again:

capabilities.setCapability("automationName", "Appium"); // can be values "Appium", "Selendroid", "XCuiTest", "UIAutomator2", "espresso"
capabilities.setCapability("platformVersion", "5.5");
capabilities.setCapability("deviceName", "nexus_5x");
capabilities.setCapability("avd", "nexus_5x");
capabilities.setCapability("app", "C:\\Users\\juanvidal\\projects\\automation\\src\\test\\resources\\apps\\tu-admin.apk");
capabilities.setCapability("appWaitActivity", ".activities.MainActivity");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, "true"); //valid from Android 6.0

@Aleksei

With your last suggestions now it starts up the app and I was able to login in my VM.

In the logs it says [ADB] Found package: 'com.jcor.tuadmin' and fully qualified activity name : 'com.jcor.laadministracion.activities.ListUserFunctionalUnitActivity'

and because it doesn’t find the MainActivity it shuts down.

@juanmartinvidal so the only change now is:

capabilities.setCapability("appWaitActivity", ".activities.ListUserFunctionalUnitActivity");
// or try
capabilities.setCapability("appWaitActivity", ".activities.*");

@Aleksei

Exactly, this is what I have now:

//Configurable properties
capabilities.setCapability(“platformVersion”, “5.5”);
capabilities.setCapability(“deviceName”, “nexus_5x”);
capabilities.setCapability(“avd”, “nexus_5x”);
capabilities.setCapability(“app”, “C:\Users\juanvidal\projects\automation\src\test\resources\apps\tu-admin.apk”);
capabilities.setCapability(“appWaitActivity”, “.activities.ListUserFunctionalUnitActivity”);

    //Fixed Properties
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("automationName", "Appium");
    capabilities.setCapability("appium-version", "1.6"); 

This is what I had:

//Configurable properties
capabilities.setCapability(“platformVersion”, “5.5”);
capabilities.setCapability(“deviceName”, “nexus_5x”);
capabilities.setCapability(“avd”, “nexus_5x”);
capabilities.setCapability(“app”, “C:\Users\juanvidal\projects\automation\resources\apps\flipkart.apk”);
capabilities.setCapability(“appPackage”, “com.flipkart.android”);
capabilities.setCapability(“appActivity”, “com.flipkart.android.SplashActivity”);

    //Fixed Properties
    capabilities.setCapability("appium-version", "1.6");
    capabilities.setCapability("platformName", "Android");

@juanmartinvidal and any problem with latest config?

@Aleksei

Actually the initial problem was solved because now my VM loads my apk and shows the Login Page. I manually login and so far so good, but in Appium I see the error I mentioned before [ADB] Found package: 'com.jcor.tuadmin' and fully qualified activity name : 'com.jcor.laadministracion.activities.ListUserFunctionalUnitActivity' and it stops the app in the VM.

I tried changing the config to point to that Activity instead of the MainActivity one but no luck, same error.

Thanks!

@juanmartinvidal update to

capabilities.setCapability("appWaitActivity", ".activities.*");

this should allow any after *

@Aleksei,

that didn’t help either. I think I found the error but I wanted to hear your thoughs.

With .activities.* or with .activities.MainActivity I get an error like this in Appium before it shuts down the app in the VM: [MJSONWP] Encountered internal error running command: Error: Error occured while starting App. Original error: com.jcor.tuadmin.activities.* never started

So in the original package name was com.jcor.laadministracion and then we changed it in the configuration files but not in the code itself.

If I add the appPackage capability to set the right package name it fails with the old error.

Could it be that the only fix here is to match the configuration package name with the actual code package name??

@juanmartinvidal may you just connect to android studio with phone. start client and check what full package name + activity starting? e.g. when i am starting “Contacts” on mine LG G4 i have message like:

08-15 16:00:31.141 1474-3484/? I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.contacts/.activities.DialtactsActivity bnds=[0,2128][288,2392]} from uid 10053 on display 0

where i have “com.android.contacts” package name, “.activities.DialtactsActivity” activity started

@Aleksei, sure thing I can try that!

@Aleksei

Got the info for you:

08-15 10:33:13.304 898-1279/? I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.jcor.tuadmin/com.jcor.laadministracion.activities.MainActivity} from uid 2000 on display 0

That shows exactly what I was trying to explain. The real package in the source code is com.jcor.laadministracion while in the config files is com.jcor.tuadmin

@Aleksei, hi there!

Sorry to bother you but did you get a chance to look at my last msg?

Thanks in advance for your time!

@juanmartinvidal did you try with:

capabilities.setCapability("appWaitActivity", "com.jcor.laadministracion.activities.MainActivity");
// or
capabilities.setCapability("appWaitActivity", "com.jcor.laadministracion.activities.*");
// or maybe even
capabilities.setCapability("appWaitActivity", "*");

?

@Aleksei

First option worked! Thanks a lot for all your help! We can consider this ticket Solved.

Cheers!!

You can watch these videos : https://www.youtube.com/playlist?list=PLXbcghgSZDroz9nez1IrbL2hnMVJ0ba1W