1) 액티비티 확인
앱에 특정 액티비티가 존재하는지를 명확히 확인하기 위해 dumpsys로 정보를 출력한다.
LAUNCHER 액티비티를 찾는다.
$ dumpsys package com.skmc.okcashbag.home_google ...(생략)... 9e46495 com.skmc.okcashbag.home_google/.activities.Entrypoint filter d2269aa Action: "android.intent.action.MAIN" Category: "android.intent.category.LAUNCHER" Category: "android.intent.category.DEFAULT" ...(생략)... |
2) 오류확인
am start -an 명령어로 액티비티를 실행한다.
액티비티가 있는것을 확인하고 실행하였으나 존재하지 않는다고 오류 메시지를 출력한다
$ am start -an com.skmc.okcashbag.home_google Starting: Intent { act=n pkg=com.skmc.okcashbag.home_google } Error: Activity not started, unable to resolve Intent { act=n flg=0x10000000 pkg=com.skmc.okcashbag.home_google } |
3) 해결방법
이럴 경우 am start-activity 를 이용하여 앱을 시작할 수 있다.
$ am start-activity com.skmc.okcashbag.home_google/.activities.Entrypoint Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.skmc.okcashbag.home_google/.activities.Entrypoint } |
4) 왜 발생할까?
우선 확인된 내용은 앱의 targetSdk 버전이 33일 경우 am start -an 으로 실행되지 않는다는 점이다.
앱의 targetSdk 버전이 32 이하의 패키지는 모두 am start -an 으로 실행가능했다.
com.tmon versionCode=23005941 minSdk=23 targetSdk=33
$ am start -an com.tmon/.splash.SplashActivity Starting: Intent { act=n cmp=com.tmon/.splash.SplashActivity } Error type 3 Error: Activity class {com.tmon/com.tmon.splash.SplashActivity} does not exist. |
com.hnsmall versionCode=531 minSdk=21 targetSdk=32
$ am start -an com.hnsmall/.presentation.MainActivity Starting: Intent { act=n cmp=com.hnsmall/.presentation.MainActivity } |
targetSdk 33은 Android 13에 해당하는 버전이다.
위 정보로 짐작컨데 Android 13 앱에 대한 권한 변경으로 발생한 문제로 보인다.