안녕하세요. Jamie입니다.
최근에 앱 개발중 작은 삽질(?)을 한 부분이 있어, 혹시 같은 문제로 고생하시는 분들이 있을까하여 기록을 남깁니다.
제가 개발중인 앱이 외부 다른 앱의 데이터를 송수신하고, 그 앱에서 제 앱을 호출하는등 기능들이 있습니다.
문제는 다른앱에서 제 앱의 호출은 Intent를 통해 하고 있었는데,
어느날부터 외부앱에서 제 앱의 Activity가 실행되지 않는 증상을 확인합니다.
특별히 실행되는 Activity를 수정하진 않았는데, 문제가 되어 로그를 확인해보니 패키지명이 다음과 같이 찍힙니다.
START u0 {act=android.intent.action.MAIN cmp=com.test.launcher/.IntroActivity} from uid 10461
cmp의 패키지명과 액티비티명을 보니, 액비티비명은 정상적인데 패키지명이 다르네요.
(기존의 패키지명은 com.cpdev.launcher)
git message를 추적해본결과, 제가 플레이스토어에 앱을 배포하기전, 테스트로 작성해놨던 패키지명을 변경하기 위해
build.gradle의 applicationId의 패키지명을 변경하였는데, namespace (실제 package경로)는 변경하지 않아 발생한 문제입니다.
외부앱에서는 applicationId의 패키지명으로 접근하는데, 실제 앱에서는 해당 패키지명이 없으니 실행되지 않은것입니다.
혹시나하여 build.gradle의 namespace명만 살짝 바꾸었더니, binding과 패키지명 오류들이 주르륵 발생하네요.
코드의 패키지명을 모두 바꿔주기로 합니다.
모두 변경하고 Sync Gradle후에 정상적으로 외부앱에서 제 앱이 호출되는것을 확인했습니다.
(binding을 사용하실경우, 일부 import path가 sync되지 않는 현상이 있습니다.
수고스럽지만 일일히 지워줘야하는 번거로움이... 좋은 방법 있으신분 알려주세요.)
applicationId를 변경하게 될땐, 번거롭지만 namespace도 변경해야하는걸 공부했습니다.