Flutter

[Flutter] Android - deeplink가 앱을 재실행시키는 현상

devyong 2025. 4. 16. 20:39

딥링크로 Android앱을 실행시키는데, 앱이 이미 실행되어있으면 해당 Task에서 그대로 처리되기를 원했다.

하지만 새로운 Task로 실행되면서, 재시작되는듯한 처리가 진행되었다.

 

launchMode 값 변경으로 해결된 솔루션들이 있어서 적용했지만, 효과는 없었다.

AndroidManifest를 분석하면서 해결에 성공해냈다.

 

해결방법

<meta-data
    android:name="flutter_deeplinking_enabled"
    android:value="true" />

AndroidManifest에서 해당 부분제거로 정상작동 확인완료.

 

수정은 잘되었지만 왜 고쳐진것인지 파악을 좀 더 해봤다.

flutter_deeplinking_enabled는 Android 플랫폼이 딥링크 인텐트를 받았을때,

Flutter 엔진이 해당 URI를 initalRoute로 간주해서 앱을 딥링크 경로로 초기화된 상태로 시작시킨다.

 

flutter_deeplinking_enabled는 라우팅 시스템을 통해 딥링크를 처리할 때, 필요한 설정이다.

Android → Flutter → onGenerateInitialRoutes 등으로 URI 전달

위 방식으로 동작하는데, 나는 getInitialLink()를 통해 처리하기에 제거만해도 정상작동되는 것이다.

 

 

 정리하자면

항목 / flutter_deeplinking_enabled / getInitialLink()

딥링크 처리 방식 앱을 초기 라우트로 리런칭 앱 상태 유지, URI만 추출
앱 재시작 될 수 있음 (특히 cold start로) 안 됨
상태 유지 힘듦 쉬움
적합한 상황 라우트 중심 앱, 자동 전환 원할 때 커스텀 처리 원할 때

 

 

  • 만약 앱의 상태(예: 로그인, 사용자 컨텍스트)를 유지한 채 딥링크만 처리하고 싶다면 getInitialLink()가 더 안전하고 유연하다.
  • 반면에 딥링크를 자동 라우팅하고 싶은 경우엔 flutter_deeplinking_enabled도 좋지만, 앱이 꺼졌다 켜지는 건 사용자 UX에 주의해야 한다.