Navigation
이 표에는 androidx.navigation
그룹의 모든 아티팩트가 나열됩니다.
아티팩트 | 현재 안정화 버전 | 다음 버전 후보 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
navigation-* | 2.3.4 | - | - | - |
navigation-compose | - | - | - | 1.0.0-alpha09 |
종속 항목 선언
Navigation의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle
파일에 필요한 아티팩트의 종속 항목을 추가합니다.
dependencies { def nav_version = "2.3.5" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:1.0.0-alpha10" }
Safe Args
프로젝트에 Safe Args를 추가하려면 최상위 build.gradle
파일에 다음의 classpath
를 포함합니다.
buildscript { repositories { google() } dependencies { def nav_version = "2.3.4" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
또한 사용 가능한 두 가지 플러그인 중 하나를 적용해야 합니다.
자바 모듈 또는 자바와 Kotlin 혼합 모듈에 적합한 자바 언어 코드를 생성하려면 앱 또는 모듈의 build.gradle
파일에 다음 행을 추가합니다.
apply plugin: "androidx.navigation.safeargs"
또는 Kotlin 전용 모듈에 적합한 Kotlin 코드를 생성하려면 다음을 추가하세요.
apply plugin: "androidx.navigation.safeargs.kotlin"
AndroidX로 이전에 따라 gradle.properties
파일에 android.useAndroidX=true
가 있어야 합니다.
Kotlin 확장 프로그램 사용에 관한 정보는 ktx 문서를 참조하세요.
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 만들기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
Navigation Compose 버전 1.0.0
버전 1.0.0-alpha09
2021년 3월 10일
androidx.navigation:navigation-compose:1.0.0-alpha09
가 출시되었습니다. 버전 1.0.0-alpha09에 포함된 커밋을 확인하세요.
API 변경사항
LocalViewModelStoreOwner.current
가 이제 null을 허용하는ViewModelStoreOwner
를 반환하여 현재 컴포지션에서ViewModelStoreOwner
를 사용할 수 있는지 더 효과적으로 판단합니다.ViewModelStoreOwner
가 설정되어 있지 않으면viewModel()
및NavHost
와 같은ViewModelStoreOwner
가 필요한 API에서 여전히 예외가 발생합니다. (Idf39a)
버그 수정
- 이제 Navigation Compose는 그래프를 설정한 후 동일한 ViewModelStore 객체 설정을 시도하는 수정사항이 포함된 Navigation 2.3.4에 종속됩니다. (I65c24, b/177825470)
버전 1.0.0-alpha08
2021년 2월 24일
androidx.navigation:navigation-compose:1.0.0-alpha08
이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
NavHost
가LocalSavedStateRegistryOwner
CompositionLocal을 대상의NavBackStackEntry
로 채우기 때문에,SavedStateRegistry
에 바로 저장되는 상태가 대상과 함께 저장되고 복원됩니다. (I435d7, b/179469431)
버전 1.0.0-alpha07
2021년 2월 10일
androidx.navigation:navigation-compose:1.0.0-alpha07
이 출시되었습니다. 버전 1.0.0-alpha07에 포함된 커밋을 확인하세요.
종속 항목 업데이트
- 이제 Navigation Compose는
composable
대상에viewModel()
지원을 제공하기 위해 Lifecycle ViewModel Compose 1.0.0-alpha01에 종속됩니다. (I7a374) NavHost
는 이제 Activity-Compose 1.3.0-alpha01의 새로운LocalOnBackPressedDispatcherOwner
를 사용하여NavController
에 설정된OnBackPressedDispatcher
를 가져옵니다. (I65b12)
버전 1.0.0-alpha06
2021년 1월 28일
androidx.navigation:navigation-compose:1.0.0-alpha06
이 출시되었습니다. 버전 1.0.0-alpha06에 포함된 커밋을 확인하세요.
API 변경사항
NavController
에 연결된NavBackStackEntry
를 반환하는getBackStackEntry(route: String)
확장 메서드를 추가했습니다. (If8931)
버전 1.0.0-alpha05
2021년 1월 13일
androidx.navigation:navigation-compose:1.0.0-alpha05
가 출시되었습니다. 버전 1.0.0-alpha05에 포함된 커밋을 확인하세요.
Compose 1.0.0-alpha10에 따라 업데이트되었습니다.
버전 1.0.0-alpha04
2020년 12월 16일
androidx.navigation:navigation-compose:1.0.0-alpha04
가 출시되었습니다. 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.
- Compose
1.0.0-alpha09
와의 호환성을 위해 업데이트되었습니다.
버전 1.0.0-alpha03
2020년 12월 2일
androidx.navigation:navigation-compose:1.0.0-alpha03
이 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.
버그 수정
- 구성이 변경되거나 프로세스가 중단되어 다시 생성된 후에
popBackStack()
과navigateUp()
이 작동하지 않는 문제가 수정되었습니다. (Icea47, b/173281473) - 이제 NavHost 내의 중첩된 그래프로 이동하는 작업이 올바르게 작동합니다. (I0948d, b/173647694)
버전 1.0.0-alpha02
2020년 11월 11일
androidx.navigation:navigation-compose:1.0.0-alpha02
가 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- Navigation Compose는 이제 popUpTo 및 launchSingleTop 작업을 사용하도록 NavOptions를 지원합니다. (If96c3, b/171468994)
- ID 대신 Navigation Compose DSL에서 중첩 그래프를 생성할 수 있는 경로를 사용하는 탐색 함수를 추가했습니다. (I1661d)
- 이제 startDestination이 NavHost용 매개변수 목록에서 경로 앞에 배치됩니다. (Ie620e)
- 이제 경로를 NavHost 컴포저블 외부의 시작 대상으로 사용하여 그래프를 만들 수 있습니다. (Iceb75)
버전 1.0.0-alpha01
2020년 10월 28일
android.navigation:navigation-compose:1.0.0-alpha01
가 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
navigation-compose
아티팩트는 Navigation Compose와 Jetpack Compose 간 통합을 제공합니다. @Composable
함수를 애플리케이션의 대상으로 사용합니다.
이번 최초 출시에서는 다음 기능을 제공합니다.
NavHost
컴포저블을 사용하여 Kotlin DSL을 통해 탐색 그래프를 구성할 수 있음- 대상 레벨에서 수명 주기,
ViewModel
, 저장된 상태의 범위 지정 - 시스템 뒤로 버튼을 사용하면 자동으로 통합
- 인수 전달, 대상에 딥 링크 연결, 이전 대상에 결과 반환 지원
rememberNavController()
및currentBackStackEntryAsState()
에 특정 도우미를 작성하여 호이스팅 상태를 허용하고NavController
를NavHost
(예: 하단 탐색 메뉴) 외부의 컴포저블에 연결합니다.
자세한 내용은 Compose Navigation 가이드를 참고하세요.
버전 2.3.4
버전 2.3.4
2021년 3월 10일
androidx.navigation:navigation-*:2.3.4
가 출시되었습니다. 버전 2.3.4에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
ReferenceType
인수가 딥 링크 URI의 일부로 전송될 때 이 인수를 올바르게 파싱할 수 있습니다. 원시 정숫값과0x
접두어가 붙은 16진수 값이 모두 지원됩니다. (#127, b/179166693) - 이제
app:argType="float"
를 사용하는 인수의android:defaultValue
에서 정수 기본값을 지원하며 이를 통해0.0
을 사용할 필요 없이android:defaultValue="0"
을 사용하면 됩니다. (#117, b/173766247)
버그 수정
- Navigation의 동적 기능 지원 기능을 사용할 때 설치 진행률이 중단되는 문제를 수정합니다. (Ib27a7, b/169636207)
- 이제 이미 설정된 동일한 객체로
setViewModelStore
또는setLifecycleOwner
를 호출하면 노옵스(no-ops)가 됩니다. (Idf491, b/177825470) - 이제 Safe Args는 자바를 사용할 때 적절한 메서드에 억제 주석을 추가합니다. (I8fbc5, b/179463137)
외부 기여
ReferenceType
인수가 딥 링크 URI의 일부로 전송될 때 이 인수를 적절하게 파싱할 수 있도록 pull 요청을 해 주신JvmName
님께 감사드립니다. (#127, b/179166693)app:argType=”float”
를 사용하는 인수의defaultValue
가 정수 기본값을 지원하도록 pull 요청을 해 주신tatocaster
님께 감사드립니다. (#117, b/173766247)
버전 2.3.3
버전 2.3.3
2021년 1월 27일
androidx.navigation:navigation-*:2.3.3
이 출시되었습니다. 버전 2.3.3에 포함된 커밋을 확인하세요.
버그 수정
Lifecycle
이CREATED
로 이동하기 전에NavBackStackEntry
를 표시할 때 더 이상 다운되지 않습니다. (Ie3ba3)- 애니메이션 리소스 값이
0
인 활동으로 이동할 때ResourceNotFoundException
이 발생하는 b/171364502로 인한 회귀 문제를 수정했습니다. (I7aedb, b/176819931)
버전 2.3.2
Navigation 버전 2.3.2
2020년 12월 2일
androidx.navigation:navigation-*:2.3.2
가 출시되었습니다. 버전 2.3.2에 포함된 커밋을 확인하세요.
버그 수정
onNavDestinationSelected
로<activity>
대상을 사용하면 활동으로 이동할 수 없던NavigationUI
의 회귀 문제가 수정되었습니다. (I22e34, b/171364502)navigation-dynamic-features-fragment
가 새로 설치된 대상으로 여러 번 이동하는 문제가 수정되었습니다. (aosp/1486056, b/169636207)launchSingleTop
사용 시 기본 인수가OnDestinationChangedListener
인스턴스로 전송되지 않는 문제가 수정되었습니다. (I2c5cb)- 중첩된 탐색 그래프로 이동할 때 백 스택에 새 그래프 인스턴스가 생성되지 않는 문제가 수정되었습니다. (Ifc831)
- 탐색 그래프에서 마지막 대상을 삭제하는
popUpTo
와 함께navigate()
를 사용하면 백 스택에서 탐색 그래프 자체가 즉시 소멸 및 삭제되지 않는 문제가 수정되었습니다. (I910a3) - Navigation SafeArgs는 이제 Kotlin의 명시적 API 모드 지원을 추가한 KotlinPoet 버전 1.7.2를 사용합니다. (I918b5)
- 이제
NavHostFragment.findNavController(Fragment)
에서는 기존에 하던 Fragment 계층 구조와 Fragment 뷰 계층 구조 확인 외에 DialogFragment의 루트 장식 뷰도 확인합니다. 이를 통해FragmentScenario
와Navigation.setViewNavController()
로 Navigation을 사용하는 대화상자 프래그먼트를 테스트할 수 있습니다. (I69e0d)
버전 2.3.1
버전 2.3.1
2020년 10월 14일
androidx.navigation:navigation-*:2.3.1
가 출시되었습니다. 버전 2.3.1에 포함된 커밋을 확인하세요.
새로운 기능
- 기본 Animator 리소스를 Navigation UI에 추가했으며, 기본 애니메이션 리소스보다 이 리소스를 사용하는 것이 좋습니다. (b/167430145)
- 이제 NavOptions에서 hashCode와 equals 메서드를 재정의합니다. (b/161586466)
- 이제 Navigation에서 'ID가 있는 대상 없음' IllegalArgumentException의 현재 대상을 포함하며 이는 개발자 디버깅 환경을 개선합니다. (b/168311416)
버그 수정
- 생성된 인수 클래스 이름이 100자를 초과하더라도 Safe Args는 더 이상 반환 행을 래핑하지 않습니다. (b/168584987)
종속 항목 변경사항
- 이제
navigation-ui
가 DrawerLayout 1.1.1에 종속되도록 하여LOCK_MODE_LOCKED_CLOSED
또는LOCK_MODE_LOCKED_OPEN
을 사용할 때NavigationUI
에서 창을 열 수 있도록 합니다. (b/162253907) - 이제 Safe Args가 KotlinPoet 1.6.0에 종속됩니다. (aosp/1435911)
- 이제 Safe Args가 AGP 4.0.1에 종속됩니다. (aosp/1442337)
버전 2.3.0
버전 2.3.0
2020년 6월 24일
androidx.navigation:navigation-*:2.3.0
가 출시되었습니다. 버전 2.3.0에 포함된 커밋을 확인하세요.
2.2.0 이후 주요 변경사항
- 기능 모듈 통합:
navigation-dynamic-features-runtime
및navigation-dynamic-features-fragment
아티팩트를 사용하면 기능 모듈에 정의된 대상으로 이동하여 필요에 따라 기능 모듈의 설치를 자동으로 처리할 수 있습니다. 자세한 내용은 기능 모듈로 탐색을 참고하세요. - 탐색 테스트:
navigation-testing
아티팩트는TestNavHostController
를 제공하며 이를 사용하면 탐색 작업 후 현재 대상을 설정하고 백 스택을 확인할 수 있습니다. 자세한 내용은 테스트 탐색을 참고하세요. - 결과 반환: 이제 탐색 백 스택의 각 대상에 연결된
NavBackStackEntry
를 사용하여 특정 백 스택 항목에 연결되어야 하는 소량의 저장된 상태를 보관하는 데 적합한SavedStateHandle
에 액세스할 수 있습니다. 자세한 내용은 이전 대상으로 결과 반환을 참고하세요. Openable
에 대한NavigationUI
지원:NavigationUI
의 모든DrawerLayout
사용은 CustomView1.1.0
에서 추가되고 DrawerLayout1.1.0
의DrawerLayout
에서 구현되는 더 일반적인Openable
인터페이스로 대체되었습니다.- 딥 링크의 작업 및 MIME 유형 지원: 이전에 사용 가능했던
app:uri
외에 딥 링크에서app:action
및app:mimeType
을 지원하도록 확장되었습니다. 이제NavController
에서 새로운NavDeepLinkRequest
클래스를 통해 이러한 필드의 조합으로 탐색할 수 있습니다. 자세한 내용은 NavDeepLinkRequest를 사용하여 탐색을 참고하세요.
알려진 문제
- 딥 링크 작업 및 MIME 유형 지원은 아직 매니페스트 병합기에서 사용할 수 없습니다. 이 작업이 완료될 때까지 매니페스트의
<nav-graph>
요소에서 생성된<intent-filter>
요소는<data>
요소 또는 맞춤<action>
에 MIME 유형을 포함하지 않습니다. 매니페스트에 적절한<intent-filter>
를 수동으로 추가해야 합니다.
버전 2.3.0-rc01
2020년 6월 10일
androidx.navigation:navigation-*:2.3.0-rc01
가 출시되었습니다. 버전 2.3.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
- 인수가 없는 대상 인스턴스를
singleTop
인수가 있는 다른 인스턴스로 교체할 때 발생하는NullPointerException
문제를 수정했습니다. (b/158006669) - 이제
NavController
에서 발생하는 모든destination is unknown
예외에 디버깅 정보가 추가되어NavController
의 상태를 확인할 수 있습니다. (b/157764916)
버전 2.3.0-beta01
2020년 5월 20일
androidx.navigation:navigation-*:2.3.0-beta01
이 출시되었습니다. 버전 2.3.0-beta01에 포함된 커밋을 확인하세요.
버그 수정
- 프로세스 종료 후
NavBackStackEntry
의Lifecycle
이 제대로 업데이트되지 않는 문제가 수정되었습니다. (b/155218371) - 이제
setGraph()
호출 전에 등록된OnDestinationChangedListener
인스턴스가 프로세스 종료 후 복원된 대상으로 올바르게 전송됩니다. (b/155218371) singleTop
을 사용할 때 이제NavBackStackEntry
의 인수가 올바르게 업데이트되고 업데이트된 인수는 모든OnDestinationChangeListener
인스턴스로 전송됩니다. (b/156545508)
종속 항목 업데이트
- 이제
NavigationUI
아티팩트가 CustomView1.1.0-rc01
및 DrawerLayout1.1.0-rc01
에 종속됩니다. (aosp/1309696)
버전 2.3.0-alpha06
2020년 4월 29일
androidx.navigation:navigation-*:2.3.0-alpha06
가 출시되었습니다. 버전 2.3.0-alpha06에 포함된 커밋을 확인하세요.
새로운 기능
- 이전에 사용 가능한
app:uri
외에app:action
및app:mimeType
을 지원하도록 딥 링크가 확장되었습니다. 이제 NavController가 새로운NavDeepLinkRequest
클래스를 통한 이러한 필드의 조합으로 탐색을 지원합니다. (b/136573074, b/135334841)
API 변경사항
- 동적 탐색 대상의 Kotlin DSL 지원이 크게 확장되었습니다. (b/148969800)
버그 수정
- 중첩된 시작 대상을 사용할 때 딥 링크 인텐트가 무시되는 문제가 수정되었습니다. (b/154532067 참조)
버전 2.3.0-alpha05
2020년 4월 15일
androidx.navigation:navigation-*:2.3.0-alpha05
가 출시되었습니다. 버전 2.3.0-alpha05에 포함된 커밋을 확인하세요.
새로운 기능
<include-dynamic>
사용을 포함하는 동적 그래프의 경우 더 이상app:graphPackage
를 지정할 필요가 없으며 기본적으로 점 다음에applicationId
에moduleName
접미사를 추가하여 사용합니다.graphPackage
를 맞춤설정해야 하는 경우${applicationId}
자리표시자가 지원됩니다. (b/152696768)- 탐색 그래프 Kotlin DSL은 이제 작업에
defaultArguments
Map
을 노출하여 탐색 XML 파일의<action>
요소에 기본값을 설정하는 기능을 미러링합니다. (b/150345605)
버그 수정
- Navigation 2.2.2에서: 활동에 여러
NavHostFragment
인스턴스가 있을 때 그래프의 시작 대상으로 딥 링크를 생성할 때 발생하는IllegalStateException
이 수정되었습니다. (b/147378752)
종속 항목 업데이트
- 탐색은 이제 Fragment
1.2.4
에 종속됩니다. (aosp/1277325) - 동적 탐색은 이제 Play Core
1.7.2
에 종속됩니다. (aosp/1282257)
버전 2.3.0-alpha04
2020년 3월 18일
androidx.navigation:navigation-*:2.3.0-alpha04
가 출시되었습니다. 버전 2.3.0-alpha04에 포함된 커밋을 확인하세요.
새로운 기능
- 탐색 Kotlin DSL에서 기능 모듈 활동 및 프래그먼트 대상에 대한 지원이 추가되었습니다. (b/148969800)
API 변경사항
DynamicExtras
클래스는 더 이상 빌더 패턴을 사용하지 않으며 이제 직접 생성할 수 있습니다. (aosp/1253671)- 이제
DynamicActivityNavigator
는 생성자에서Activity
가 아닌Context
를 가져옵니다. (aosp/1250252)
버그 수정
NavigationUI
는 더 이상 빈 라벨(예:android:label=””
이 있는 대상)을 무시하지 않으며 이제 제목을 빈 문자열로 올바르게 설정합니다. (b/148679860)
종속 항목 업데이트
- 이제 탐색 동적 기능 아티팩트는 Play Core
1.6.5
에 종속됩니다. (b/149556401)
버전 2.3.0-alpha03
2020년 3월 4일
androidx.navigation:navigation-*:2.3.0-alpha03
가 출시되었습니다. 버전 2.3.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- 구체적인
DrawerLayout
클래스에 의존하는 대신AppBarConfiguration
에서는 이제 CustomView1.1.0-alpha02
에서 도입된Openable
인터페이스(DrawerLayout
에서 DrawerLayout1.1.0-alpha04
로 구현)를 사용하여 개발자가NavigationUI
가 있는 맞춤Openable
구현을 사용할 수 있습니다. (b/129030452 참조)
버그 수정
- 이제
navigation-common-ktx
ProGuard 규칙이 모든NavArgs
인스턴스가 아닌 사용되는NavArgs
클래스만 올바르게 유지합니다. (b/150213558)
종속 항목 변경사항
- Navigation이 Core
1.2.0
에 대한 의존성을 되돌려 이제는 Core1.1.0
에 의존합니다. 이로써 Navigation이 코어1.2.0
의 새로운 API에 종속되지 않을 때 개발자가 새로운 종속 항목으로 강제로 이동하게 되는 것을 방지합니다.
버전 2.3.0-alpha02
2020년 2월 19일
androidx.navigation:navigation-*:2.3.0-alpha02
가 출시되었습니다. 버전 2.3.0-alpha02에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
NavBackStackEntry
를 사용하면 특정 백 스택 항목과 관련된 소량의 저장된 상태를 저장하는 데 적합한SavedStateHandle
에 액세스할 수 있습니다. 사용 사례는 결과 반환을 참조하세요. (b/79672220)
API 변경사항
- 현재 및 이전 대상에 대한
NavBackStackEntry
를 더 쉽게 가져올 수 있도록getCurrentBackStackEntry()
및getPreviousBackStackEntry()
의 편의 메서드가 추가되었습니다. (b/79672220)
버그 수정
- 이제 자체 작업 스택에서 앱을 실행할 때
navigateUp()
이 현재 대상의 인수와KEY_DEEP_LINK_INTENT
를 이전 대상으로 전달합니다. (b/147456890)
종속 항목 변경사항
- 이제 Navigation이 Core
1.2.0
에 종속됩니다.
버전 2.3.0-alpha01
2020년 2월 5일
androidx.navigation:navigation-*:2.3.0-alpha01
가 출시되었습니다. 버전 2.3.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
- 새
navigation-testing
아티팩트는TestNavHostController
클래스를 제공합니다. 이 클래스는 Navigation 테스트 시 모의NavController
사용에 대한 대안을 제공하여 탐색 작업 후 현재 대상을 설정하고 백 스택을 확인할 수 있도록 합니다. (b/140884273) - 새로운
navigation-dynamic-features-fragment
(및 전이 종속 항목,navigation-dynamic-features-runtime
)를 사용하면 기능 모듈의 대상 또는 전체 탐색 그래프(<include-dynamic>
을 통해)를 포함하여 대상으로 이동할 때 주문형 기능 모듈을 원활하게 설치할 수 있습니다. 자세한 내용은 기능 모듈로 탐색을 참고하세요. (b/132170186)
버그 수정
- Navigation
2.2.1
에서: 이제 쿼리 매개변수가 없는 딥 링크는 뒤에 오는{argument}
요소에 쿼리 매개변수를 추가하거나 딥 링크를 일치시키지 않는 것이 아니라 쿼리 매개변수를 올바르게 무시합니다. (b/147447512 참조) - Navigation
2.2.1
에서:android.enableJetifier=true
가 필요하지 않도록DrawerArrowDrawable
에 대한navigation-ui
ProGuard 규칙이 업데이트되었습니다. (b/147610424 참조) - Navigation
2.2.1
에서: 이제navigation-common-ktx
모듈이navigation-runtime-ktx
처럼 동일한 매니페스트 패키지 이름을 공유하는 대신 고유한 매니페스트 패키지 이름을 갖습니다. (aosp/1141947)
종속 항목 업데이트
- Navigation
2.2.1
에서: 이제 Navigation2.2.1
은 Lifecycle ViewModel SavedState2.2.0
및 Fragment1.2.1
에 종속됩니다.
버전 2.2.2
버전 2.2.2
2020년 4월 15일
androidx.navigation:navigation-*:2.2.2
이 출시되었습니다. 버전 2.2.2에 포함된 커밋을 확인하세요.
버그 수정
- 활동에
NavHostFragment
인스턴스가 여러 개 있는 경우 그래프 시작 대상에 딥 링크를 생성할 때 발생하던IllegalStateException
을 수정했습니다. (b/147378752) NavigationUI
는 더 이상 빈 라벨(예:android:label=””
이 있는 대상)을 무시하지 않으며 이제 제목을 빈 문자열로 올바르게 설정합니다. 이전에 Navigation 2.3.0-alpha04에서 출시되었습니다. (b/148679860)- 이제
navigation-common-ktx
ProGuard 규칙이 모든NavArgs
인스턴스가 아닌 사용되는NavArgs
클래스만 올바르게 유지합니다. 이전에 Navigation 2.3.0-alpha03에서 출시되었습니다. (b/150213558
종속 항목 업데이트
- 탐색은 이제 Fragment
1.2.4
에 종속됩니다. (aosp/1277325)
버전 2.2.1
버전 2.2.1
2020년 2월 5일
androidx.navigation:navigation-*:2.2.1
가 출시되었습니다. 버전 2.2.1에 포함된 커밋을 확인하세요.
버그 수정
- 이제 쿼리 매개변수가 없는 딥 링크가 뒤에 오는
{argument}
요소에 추가되거나 딥 링크와 일치하지 않는 쿼리 매개변수를 올바르게 무시합니다. (b/147447512 참조) android.enableJetifier=true
가 필요하지 않도록DrawerArrowDrawable
에 대한navigation-ui
ProGuard 규칙이 업데이트되었습니다. (b/147610424 참조)- 이제
navigation-common-ktx
모듈이navigation-runtime-ktx
처럼 동일한 매니페스트 패키지 이름을 공유하는 대신 공유한 매니페스트 패키지 이름을 갖습니다. (aosp/1141947)
종속 항목 업데이트
- Navigation
2.2.1
이 이제 Lifecycle ViewModel SavedState2.2.0
및 Fragment1.2.1
에 종속됩니다.
버전 2.2.0
버전 2.2.0
2020년 1월 22일
androidx.navigation:navigation-*:2.2.0
가 출시되었습니다. 버전 2.2.0에 포함된 커밋을 확인하세요.
2.0.1 이후 중요 변경사항
- NavBackStackEntry: 이제
NavController.getBackStackEntry()
를 호출하여 백 스택에 있는 대상 또는 탐색 그래프의 ID를 전달할 수 있습니다. 반환된NavBackStackEntry
는 이 대상을 시작하는 데 사용되는 인수를 제공할 뿐 아니라 Navigation 기반LifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
가 반환하는 것과 동일함),SavedStateRegistryOwner
도 제공합니다. - Lifecycle ViewModel SavedState 통합:
SavedStateViewModelFactory
는 이제NavController.getBackStackEntry()
또는NavController.getViewModelStoreOwner()
에서 반환된ViewModelStoreOwner
와 함께by navGraphViewModels()
또는ViewModelProvider
생성자를 사용할 때 사용되는 기본 팩토리입니다. - 딥 링크의 쿼리 매개변수 지원: 쿼리 매개변수가 포함된 딥 링크가 이제 재정렬된 쿼리 매개변수를 지원합니다. 딥 링크를 일치시킬 때 이제 기본값이 있거나 null을 허용하는 인수는 선택사항입니다.
- 개선된 애니메이션 지원: 이제
NavHostFragment
가 Fragment 1.2.0에서FragmentContainerView
를 사용하여 애니메이션 z-순서 문제 및 Fragment로 창 인셋 전달 문제를 해결했습니다.
버전 2.2.0-rc04
2019년 12월 18일
androidx.navigation:navigation-*:2.2.0-rc04
가 출시되었습니다. 버전 2.2.0-rc04에 포함된 커밋을 확인하세요.
버그 수정
- Fragment
1.2.0-rc04
에서 조정된 페이드 애니메이션에 일치시키기 위해navigation-ui
에 사용되는 기본 페이드 애니메이션을 조정했습니다. (b/145769814 참조)
버전 2.2.0-rc03
2019년 12월 4일
androidx.navigation:navigation-*:2.2.0-rc03
가 출시되었습니다. 버전 2.2.0-rc03에 포함된 커밋을 확인하세요.
버그 수정
- 경로에 쿼리 매개변수와 인수를 마지막 요소로 사용할 때 마지막 경로 인수의 두 개 이상 문자가 파싱되지 않던 딥 링크 파싱 문제가 해결했습니다. (b/144554689 참조)
- 선택적 매개변수가
null
대신"@null"
을 수신하는 딥 링크 파싱 문제가 해결되었습니다. (b/141613546 참조) - 이제
NavHostFragment
는FragmentContainerView
와 함께 사용될 경우 구성 변경 후 그래프를 올바르게 복원합니다. (b/143752103 참조)
종속 항목 변경사항
- Navigation이 이제 Lifecycle
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Activity1.1.0-rc03
및 Fragment1.2.0-rc03
에 종속됩니다(해당하는 경우).
버전 2.2.0-rc02
2019년 11월 7일
androidx.navigation:navigation-*:2.2.0-rc02
가 출시되었습니다. 버전 2.2.0-rc02에 포함된 커밋을 확인하세요.
종속 항목 변경사항
- Navigation이 이제 androidx.lifecycle
2.2.0-rc02
에 종속됩니다.
버전 2.2.0-rc01
2019년 10월 23일
androidx.navigation:navigation-*:2.2.0-rc01
이 2.2.0-beta01
이후 변경사항 없이 출시되었습니다. 버전 2.2.0-rc01에 포함된 커밋을 확인하세요.
버전 2.2.0-beta01
2019년 10월 9일
androidx.navigation:navigation-*:2.2.0-beta01
가 출시되었습니다. 버전 2.2.0-beta01에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
NavDestination
및 서브클래스가toString()
을 재정의하여 디버깅 시 유용한 추가 정보를 제공합니다. (b/141264986 참조)
동작 변경사항
- 딥 링크를 일치시킬 때 이제 추가 쿼리 매개변수가 일치 실패를 일으키지 않고 무시됩니다. (b/141482822 참조)
버그 수정
- 쿼리 매개변수도 지정되어 있는 경우 딥 링크 경로의 인수가 무시되는 문제를 해결했습니다. (b/141505755 참조)
- 이제
Activity
의navArgs()
Kotlin 확장 프로그램에 추가 항목이 없을 때 나타나는 오류 메시지가 개선되었습니다. (b/141408999 참조) - Safe Args 생성
Directions
자바 클래스에 이제 기본값이 포함되었습니다. (b/141099045 참조) - Safe Args 생성
Args
자바 클래스에 이제 기본값이 포함되었습니다. (b/140123727 참조) Toolbar
를 사용하면NavigationUI
는 두 최상위 대상 사이를 이동할 때 더 이상 텍스트 변경사항에 애니메이션을 적용하지 않습니다. (b/140848160 참조)
버전 2.2.0-alpha03
2019년 9월 18일
androidx.navigation:navigation-*:2.2.0-alpha03
가 출시되었습니다. 버전 2.2.0-alpha03에 포함된 커밋을 확인하세요.
동작 변경사항
setGraph
호출 후setViewModelStore()
를 호출할 때 이제IllegalStateException
이 발생합니다. 항상 초기 설정 과정에서NavHost
를 통해 설정함으로써 모든NavBackStackEntry
인스턴스가ViewModel
인스턴스를 위한 일관된 저장소를 가지도록 해야 합니다. (aosp/1111821 참조)
버그 수정
- 여러 개의 탐색 그래프 범위
ViewModelStore
인스턴스에 연결된ViewModel
인스턴스를 사용할 때 발생하는ConcurrentModificationException
을 수정했습니다. (aosp/1112257 참조)
버전 2.2.0-alpha02
2019년 9월 5일
androidx.navigation:navigation-*:2.2.0-alpha02
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 쿼리 매개변수가 포함된 딥 링크가 이제 재정렬된 쿼리 매개변수를 지원합니다. 딥 링크를 일치시킬 때 이제 기본값이 있거나 null을 허용하는 인수는 선택사항입니다. (b/133273839 참조)
- 이제
NavController.getBackStackEntry()
를 호출하여 백 스택에 있는 대상 또는 탐색 그래프의 ID를 전달할 수 있습니다. 반환된NavBackStackEntry
는 이 대상을 시작하는 데 사용되는 인수를 제공할 뿐 아니라 Navigation 기반LifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
가 반환하는 것과 동일함),SavedStateRegistryOwner
도 제공합니다. (aosp/1101691, aosp/1101710 참조)
버그 수정
ViewPager2
에NavHostFragment
를 추가할 때 실패하고IllegalArgumentException
이 발생하는 문제를 해결했습니다. (b/133640271 참조)NavInflater
가 이제 불필요하게getResourceName()
을 호출하지 않아 인플레이션 시간을 최대 40% 단축합니다. (b/139213740 참조)
버전 2.2.0-alpha01
2019년 8월 7일
androidx.navigation:navigation-*:2.2.0-alpha01
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
SavedStateViewModelFactory
는 이제by navGraphViewModels()
를 사용하거나NavController.getViewModelStoreOwner()
에서 반환된ViewModelStoreOwner
와 함께ViewModelProvider
생성자를 사용할 때 기본 팩토리입니다. (b/135716331 참조)
API 변경사항
- Navigation
2.1.0-rc01
에서 변경:2.1.0-alpha02
에 도입된NavController
의 지원 중단된getViewModelStore()
API를 삭제했습니다. (aosp/1091021 참조)
버그 수정
- 이제
NavHostFragment
가FragmentContainerView
를 사용하여 애니메이션 z-순서 문제 및 Fragment로 창 인셋 전달 문제를 해결했습니다. (b/137310379 참조)
버전 2.1.0
버전 2.1.0
2019년 9월 5일
androidx.navigation:navigation-*:2.1.0
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
2.0.0 이후 중요 변경사항
- ViewModel의 범위를 탐색 그래프로 지정: 이제
-ktx
라이브러리를 사용하는 Kotlin 사용자를 위한by navGraphViewModels()
속성 위임을 사용하거나NavController
에 추가된getViewModelStoreOwner()
API를 사용하여 탐색 그래프 수준으로 범위가 지정된 ViewModel을 만들 수 있습니다. 자세한 내용은 대상 간 UI 관련 데이터 공유를 참고하세요. - 대화상자 대상: 이제
navigate
시DialogFragment
를 표시하는<dialog>
대상을 만들 수 있습니다.NavHostFragment
는 기본적으로 대화상자 대상을 지원합니다. 자세한 내용은 DialogFragment에서 대상 만들기를 참고하세요. - URI로 탐색: 이제
Uri
를 사용한navigate
가 가능하며 이 경우 대상에 추가한<deepLink>
를 사용하여 탐색합니다. 자세한 내용은 URI를 사용하여 이동을 참조하세요. - NavHostController: 특히 맞춤
NavHost
를 생성하는 데 사용되는 API를NavHostController
로 이동했으므로 호스팅LifecycleOwner
,OnBackPressedDispatcher
,ViewModelStore
에NavController
를 연결하도록 구현할 수 있습니다.
버전 2.1.0-rc01
2019년 8월 7일
androidx.navigation:navigation-*:2.1.0-rc01
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API 변경사항
2.1.0-alpha02
에 도입된NavController
의 지원 중단된getViewModelStore()
API를 삭제했습니다. (aosp/1091021 참조)
버전 2.1.0-beta02
2019년 7월 19일
androidx.navigation:*:2.1.0-beta02
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
버그 수정
2.1.0-beta01
에 도입된 의도치 않은 jacoco 종속 항목이 삭제되었습니다. (b/137782950 참조)
버전 2.1.0-beta01
2019년 7월 17일
androidx.navigation:*:2.1.0-beta01
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
setupWithNavController()
를Toolbar
또는CollapsingToolbarLayout
과 함께 사용할 때 이제NavigationUI
가 위로 버튼의 삭제를 애니메이션합니다. (b/131403621 참조)
버그 수정
- 동일한 컨테이너가 포함된 여러 NavHostFragment를
findNavController()
와 함께 사용할 때 발생하는 타이밍 문제를 해결했습니다. (b/136021571 참조)
버전 2.1.0-alpha06
2019년 7월 2일
androidx.navigation:*:2.1.0-alpha06
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- NavHostFragment에 사용되는
app:navGraph
속성을navigation-runtime
아티팩트로 이동했습니다. XML을 통해 추가할 수 있는 맞춤 탐색기는 이 속성을 사용하여 Navigation Editor의 Host 패널과의 통합을 가져와야 합니다. (b/133880955 참조)
API 변경사항
NavController
의getViewModelStore()
API를 지원 중단하고ViewModelStoreOwner
를 반환하는 새getViewModelStoreOwner()
메서드를 도입했습니다. (aosp/987010 참조)- 부동 창 대상(예:
<dialog>
대상)의 구현을 마커 인터페이스인FloatingWindow
로 일반화하여 이제 모든<dialog>
대상이 구현됩니다. 상단의 앱 바와 상호작용하는 NavigationUI 메서드가 이제FloatingWindow
대상을 무시합니다. (b/133600763 참조)
동작 변경사항
- 이제 Navigation이
<dialog>
대상 사용 시 화면에 표시되는 내용과의 동기화 상태를 올바르게 유지합니다. 결과적으로<fragment>
대상과 같은 비 대화상자 및 비 활동 대상으로 이동할 때 이제 Navigation에서<dialog>
대상을 자동으로 표시합니다. (b/134089818 참조)
버그 수정
- 이제 Navigation에서 딥 링크를 처리하는 경우 액티비티를 다시 생성할 때 발생하는 애니메이션을 표시하지 않도록 하여 시각적 플래시 문제를 해결했습니다. (b/130362979)
- 초기 프래그먼트가 추가되는 동안 Fragment를 표시할 때 Navigation 백 스택이 동기화되지 않는 버그를 수정했습니다. (b/133832218)
버전 2.1.0-alpha05
2019년 6월 5일
androidx.navigation:*:2.1.0-alpha05
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API 변경사항
NavController
의 호스트 관련 API를NavController
의 새로운 서브클래스인NavHostController
로 이동했으며 그 이름을 변경했습니다. (aosp/966091 참조)NavController
setHostOnBackPressedDispatcherOwner()
메서드를NavHostController
의setOnBackPressedDispatcher()
메서드로 대체했으며 이제 이 메서드를 호출하기 전에setLifecycleOwner()
를 호출해야 합니다. (aosp/965409 참조)- 이제
NavHostController
가 이전에setHostOnBackPressedDispatcherOwner()
에서 반환된NavHostOnBackPressedManager
클래스를 대체하는enableOnBackPressed(boolean)
메서드를 포함합니다. (aosp/966091 참조)
버그 수정
- URI로 탐색한 후 백 스택이 잘못되는 문제가 해결되었습니다. (b/132509387 참조)
- NavController에서 자동으로 처리되는 딥 링크가 이제 한 번만 트리거됩니다. (b/132754763 참조)
버전 2.1.0-alpha04
2019년 5월 16일
androidx.navigation:*:2.1.0-alpha04
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
버그 수정
NavHostFragment
가 시스템 뒤로 버튼 이벤트를 가로챌 때app:defaultNavHost
를 올바르게 적용하도록 하여 Navigation2.1.0-alpha03
의 회귀 문제를 해결했습니다. (b/132077777 참조)DialogFragmentNavigator
가 이제popBackStack()
및navigateUp()
작업을 올바르게 처리합니다. (b/132576764 참조)- 중첩된 그래프 사이를 반복적으로 탐색할 때 발생하는
IllegalStateException: unknown destination during restore
문제를 해결했습니다. (b/131733658 참조)
버전 2.1.0-alpha03
2019년 5월 7일
androidx.navigation:*:2.1.0-alpha03
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
알려진 문제
app:defaultNavHost="false"
를 사용하더라도 NavHostFragment가 계속해서 시스템 뒤로 버튼을 가로챕니다. (b/132077777 참조)
새로운 기능
- 이제 대상으로
navigate
할 때DialogFragment
를 표시하는<dialog>
대상을 만들 수 있습니다.NavHostFragment
는 기본적으로 대화상자 대상을 지원합니다. (b/80267254 참조) - 리소스 ID 또는
NavDirections
인스턴스로navigate
를 호출하는 것뿐 아니라 이제Uri
를 통해 탐색할 수 있으며 이때 대상에 추가한<deepLink>
를 사용하여 올바른 대상으로 이동합니다. (b/110412864 참조)
동작 변경사항
- NavigationUI에서 제공하는 기본 애니메이션이 액티비티 및 프래그먼트의 기본 애니메이션 속도와 일치하도록 400ms에서 220ms로 빨라졌습니다. b/130055522
API 변경사항
NavHostFragment
의createFragmentNavigator()
메서드를 지원 중단하고 기능을 새onCreateNavController()
메서드로 이동했으며 이로써NavHostFragment
를 서브클래스로 분류할 때 맞춤 Navigator 추가의 올바른 진입점이라는 것을 더 명확하게 나타냈습니다. (b/122802849 참조)NavDestination
에hasDeepLink()
메서드를 추가했습니다. 따라서 제공된Uri
가 대상(또는NavGraph
의 경우 탐색 그래프의 임의의 대상)에서 처리될 수 있는지 여부를 확인할 수 있습니다. (b/117437718 참조)
버그 수정
- 이제 기본 인수가
OnDestinationChangedListener
인스턴스에 올바르게 전달됩니다. (b/130630686 참조) - 이제
NavHostFragment
에서OnBackPressedDispatcher
를 사용해 시스템 뒤로 이벤트를 가로채도록 함으로써 Fragment로 돌아갈 때 Fragment 수명 주기 메서드에서 조건부 탐색을 할 때 발생하는 문제를 해결했습니다. (b/111598096 참조) - Safe Args의 경우 지정되지 않은
app:argType
이 있는android:defaultValue=”@null”
이 이제string
인수로 올바르게 추론됩니다. (b/129629192 참조)
버전 2.1.0-alpha02
2019년 4월 3일
androidx.navigation:*:2.1.0-alpha02
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 이제 Kotlin 사용자를 위한
by navGraphViewModels()
속성 위임을 통해 또는NavController
에 추가된getViewModelStore()
API를 사용하여 탐색 그래프 수준으로 범위가 지정된 ViewModel을 만들 수 있습니다. (b/111614463 참조)
API 변경사항
- 이제
app:targetPackage
를<activity>
대상에 추가하여 일치하는 패키지 이름을 제한할 수 있습니다. 패키지를 자체 애플리케이션 ID로 제한하는app:targetPackage="${applicationId}"
를 지원합니다. (b/110975456 참조)
버그 수정
<activity>
대상의android:name
이 더 이상 인플레이션 시간에 클래스로 파싱되지 않으며 동적 기능 사용 시 ClassNotFoundExceptions를 방지합니다. (b/124538597 참조)
버전 2.1.0-alpha01
2019년 3월 19일
Navigation 2.1.0
의 첫 번째 알파 릴리스입니다.
종속 항목 변경사항
- Navigation이 이제
androidx.core:core:1.0.1
및androidx.fragment:fragment:1.1.0-alpha05
에 종속됩니다. 이 출시에서는 또한androidx.legacy:legacy-support-core-utils:1.0.0
의 종속 항목이 삭제되었습니다. (b/128632612 참조)
API 변경사항
- 리소스 ID와 번들로 클릭 리스너를 만드는 대신 새로운
Navigation.createNavigateOnClickListener(NavDirections)
메서드가 추가되었습니다. (b/127631752 참조) FragmentNavigator.instantiateFragment
를 이제 지원 중단했습니다. 이제 기본 구현에서는FragmentFactory
를 사용하여 Fragment를 인스턴스화합니다. (b/119054429 참조)
버그 수정
- 대상에 연결된 인수가 있는 경우 더 이상 Navigation에서 null
Bundle
을 전송하지 않도록 하여android:defaultValue="@null"
을 사용할 때 발생하는 문제를 해결했습니다. (b/128531879 참조) - 이제 Safe Args가 KotlinPoet 1.1.0에 종속되도록 하여 지나치게 긴 패키지 이름 관련 문제를 해결했습니다. (b/123654948 참조)
버전 2.0.0
버전 2.0.0
2019년 3월 14일
Navigation 2.0.0
이 2.0.0-rc02
에서 변경사항 없이 출시되었습니다.
버전 2.0.0-rc02
2019년 3월 6일
Navigation 2.0.0-rc02는 androidx.navigation
그룹 ID가 포함된 새로운 아티팩트를 제공하고 해당 종속 항목을 상응하는 AndroidX 종속 항목으로 변경합니다.
2.0.0-rc02의 동작은 Navigation 1.0.0-rc02의 동작과 동일하며 새로운 종속 항목에 맞춰 종속 항목을 업데이트하는 것 외에 1.0.0-rc02에서 코드 변경사항을 업데이트할 필요가 없습니다.
프로젝트가 AndroidX로 이전되어야 2.X 버전의 Navigation을 사용할 수 있습니다. Navigation 1.0 안정화 버전은 지원 라이브러리 종속 항목을 사용하는 마지막 출시가 될 것입니다. 앞으로 1.0 이후의 모든 개발은 AndroidX를 기반으로 하며 2.0 안정화 버전에서 빌드됩니다.
AndroidX 이전 종속 항목
Navigation의 AndroidX 이전 버전의 경우 다음 종속 항목을 포함합니다.
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Safe args의 경우 최상위 build.gradle
파일에 다음 클래스 경로를 추가합니다.
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
버전 1.0.0
버전 1.0.0
2019년 3월 14일
Navigation 1.0.0
이 1.0.0-rc02
에서 변경사항 없이 출시되었습니다.
버전 1.0.0-rc02
2019년 2월 26일
Navigation 1.0.0 안정화 릴리스의 두 번째 출시 후보입니다. 이 릴리스에는 다양한 버그 수정이 포함되어 있습니다.
버그 수정
- 루트 그래프에 ID가 없는 경우
popBackStack()
이 무시되는 문제를 해결했습니다. (b/126251695 참조) - 이제
navigateUp()
이FLAG_ACTIVITY_NEW_TASK
없이 딥 링크를 처리한 후 호출될 때 앱의 작업으로 돌아가기를 올바르게 처리합니다. (b/126082008 참조) - 올바른 열기 종료 애니메이션을 적용하지 않는
ActivityNavigator.applyPopAnimationsToPendingTransition
문제를 해결했습니다. (b/126237567 참조) - 이제 Safe Args에서 생성된 Kotlin 코드가
R
클래스와 연결된 패키지 이름의in
및fun
과 같은 Kotlin 키워드를 올바르게 이스케이프 처리합니다. (b/126020455 참조)
버전 1.0.0-rc01
2019년 2월 21일
Navigation 1.0.0 안정화 버전의 출시 후보입니다. 이 버전에는 한 가지 버그 수정이 포함되어 있습니다.
버그 수정
- Fragment 및
singleTop
탐색 작업을 사용할 때 발생하는 문제를 해결했습니다. (b/124294805 참조)
버전 1.0.0-beta02
2019년 2월 12일
이 릴리스에는 다양한 소규모 변경사항 및 중요한 버그 수정이 포함되어 있습니다.
새로운 기능
- 이제
0
을reference
인수의android:defaultValue
로 사용할 수 있습니다. (b/124248602 참조)
동작 변경사항
- 이제 정확한 딥 링크 일치가
.*
또는 인수 일치가 있는 딥 링크보다 높은 우선순위를 차지합니다. (b/123969518 참조)
버그 수정
- 백 스택에서 마지막 대상을 표시할 때 이제
popBackStack()
및navigateUp
이false
를 올바르게 반환하도록 하여1.0.0-beta01
에 도입된 회귀 문제를 해결했습니다. (b/123933201 참조) - 저장된 인스턴스 상태를 복원하는 동안 Navigation이 이제
ClassLoader
를 올바르게 설정하므로Navigator
저장된 상태 또는NavDestination
에 전송된 인수의 맞춤 클래스를 사용할 때 발생하는 문제를 방지합니다. (b/123893858 참조) - 저장된 인스턴스 상태에서
Parcelable[]
인수를 복원할 때 Safe Args 생성 NavArgs 클래스가 더 이상 비정상 종료되지 않습니다. (b/123963545 참조) - 이제 Safe Args가 불필요하게 생성된 Kotlin 클래스를 올바르게 정리합니다. (b/124120883 참조)
버전 1.0.0-beta01
2019년 2월 4일
Navigation의 첫 번째 베타 출시입니다. 앞으로 심각한 문제만 없다면 다음 버전까지 Navigation API가 안정적으로 유지될 것으로 예상됩니다. 이 출시에는 몇 가지 버그 수정 및 동작 변경사항이 포함되어 있습니다.
동작 변경사항
- Navigation에서 이제 런타임 시 그리고 Safe Args를 통해 인수 기본값이 동일하게 취급되도록 합니다. 따라서
app:argType="reference"
가 있는 인수만 다른 리소스를 가리키는 기본값을 가질 수 있습니다(예:@color/colorPrimary
). 탐색 XML을 파싱할 때 다른app:argType
이 포함된 참조 기본값을 사용하려고 하면 예외가 발생합니다. (b/123551990 참조) - Safe Args가 이제 Android Gradle 플러그인 3.3.0에 종속됩니다. (aosp/888413 참조)
- Safe Args가 이제 Kotlin 1.3.20에 종속됩니다. (aosp/888414 참조)
버그 수정
- 이제 Safe Args를 모든 버전의 Android Gradle 플러그인의 라이브러리 및 기능 모듈에서 사용할 수 있습니다. (b/121304903 참조)
- 단일
popBackStack()
작업이 한 번에 하나의 대상만 표시하지 않고 백 스택 상단에서 대상의 모든 사본을 표시하는 회귀 문제를 해결했습니다. (b/123552990 참조) FragmentNavigator
상태가NavController
의 상태와 비동기화되어 백 스택을 복원하려고 할 때IllegalStateException
이 발생하는 문제를 해결했습니다. (b/123803044 참조)- 난독화와 함께 ProGuard를 사용할 때
NavigationUI
처리된 뒤로 화살표가 표시되지 않는 문제를 해결했습니다. (b/123449431 참조) - Safe Args에서 생성된 코드가 이제
.OuterClass$InnerClass
형식의 정적 내부 클래스를 가리키는app:argType
의 사용을 제대로 처리합니다. (b/123736741 참조) - 이제 Safe Args에서 생성된 자바 코드가 전역 작업 및 깊이 중첩된 대상을 올바르게 처리합니다. (b/123347762 참조)
버전 1.0.0-alpha11
2019년 1월 23일
Safe Args 관련 문제를 해결하는 1.0.0-alpha10
의 핫픽스 릴리스입니다.
버그 수정
- Safe Args에서 전역 작업과 연결된 Directions 클래스를 가져오지 못하는 문제가 해결되었습니다. (b/123307342 참조)
버전 1.0.0-alpha10
2019년 1월 23일
알려진 문제
- Safe Args에서 전역 작업과 연결된 Directions 클래스를 가져오지 못합니다. (b/123307342 참조)
이 릴리스에는 획기적인 API 변경사항이 있습니다. 아래의 브레이킹 체인지 섹션을 참고하세요.
새로운 기능
- 이제 Kotlin 사용자는
by navArgs()
속성 위임을 사용하여Activity
또는Fragment
의 Safe Args 생성NavArgs
클래스 참조를 느리게 가져올 수 있습니다. (b/122603367 참조) - 이제 Safe Args에서
androidx.navigation.safeargs.kotlin
플러그인을 적용하여 Kotlin 코드를 생성할 수 있습니다. Kotlin 코드는 Kotlin 전용 모듈을 위해 특별히 빌드되었으며 이전androidx.navigation.safeargs
플러그인을 통해 여전히 사용할 수 있는 빌더 패턴 위에 기본 인수 및 불변 클래스를 사용합니다. (b/110263087 참조)
동작 변경사항
- 일치하는 딥 링크가 이제 가장 일치하는 인수가 있는 딥 링크로 편중됩니다. (b/118393029 참조)
NavController
에서setGraph()
를 호출하면 이제 백 스택이 재설정됩니다. (b/111450672 참조)- 알 수 없는 딥 링크가 더 이상
IllegalStateException
을 유발하지 않고 무시되도록 하여 중첩되었거나 여러 개의NavHostFragment
와 관련된 문제를 해결했습니다. (b/121340440 참조)
브레이킹 체인지
- Activity에 열기 애니메이션을 적용하는
NavOptions.applyPopAnimationsToPendingTransition()
메서드를ActivityNavigator
로 이동했습니다. (b/122413117 참조) - Safe Args는 이제 인수가 없는 작업의 동일한 클래스를 복제하지 않습니다. 생성된 NavDirections 클래스에서 인수가 없는 메서드의 반환 유형은 이제
NavDirections
입니다. (b/123233147 참조) - Safe Args 생성 Directions 클래스에 이제 공개 생성자가 없습니다. 생성된 정적 메서드로만 상호작용해야 합니다. (b/123031660 참조)
- Safe Args 생성
NavDirections
클래스에 이제 공개 생성자가 없습니다. 생성된 Directions 클래스의 정적 메서드를 통해서만 생성해야 합니다. (b/122963206 참조) NavDirections
의getArguments()
에서 반환된Bundle
이 이제@Nullable
이 아니라@NonNull
로 표시됩니다. (b/123243957 참조)
버그 수정
- 이제
NavDeepLinkBuilder
에서 고유성을 확인하기 위해 전달한 인수를 사용하여 동일한 대상에 연결된 여러 개의 동시PendingIntent
를 올바르게 처리합니다. (b/120042732 참조) - 중첩된
NavHostFragment
또는 백 스택이 있는 기타 하위 Fragment를 사용할 때 이제NavController
에서popBackStack()
작업을 올바르게 처리합니다. (b/122770335 참조) - 이제
NavigationUI
에서 위로 버튼의 콘텐츠 설명을 올바르게 설정합니다. (b/120395362 참조) - Safe Args 생성 Directions 클래스에서 이제 대상의 작업과 동일한 ID를 사용하는 전역 작업을 올바르게 처리합니다. (b/122962504 참조)
- 이제 Safe Args 생성
NavDirections
클래스에는equals()
가 참을 반환할 때 동일한hashCode()
값이 올바르게 있습니다. (b/123043662 참조) NavHostFragment
의FragmentManager
에서 맞춤FragmentTransactions
를 시도할 때FragmentNavigator
에서 발생하는 오류 메시지가 개선되었습니다. 항상getChildFragmentManager()
를 사용해야 합니다. (b/112927148 참조)
버전 1.0.0-alpha09
2018년 12월 18일
이 릴리스에는 획기적인 API 변경사항이 있습니다. 아래의 브레이킹 체인지 섹션을 참고하세요.
android.arch.navigation:navigation-testing
아티팩트의 개발을 계속하지 않기로 결정했습니다. NavController
의 내부 테스트에는 도움이 되는 것으로 입증되었지만, navigate()
가 올바르게 호출되고 있는지 확인하기 위해 모의 NavController
인스턴스를 만드는 것과 같은 대체 테스트 전략을 사용할 것을 권장합니다. 이 방법은 AndroidDevSummit 2018의 단일 활동 소개에서 자세히 논의되었으며 Google에서는 Navigation을 통한 테스트와 관련된 추가 문서를 제작하고 있습니다.
새로운 기능
menuCategory="secondary"
가 포함된MenuItem
이NavigationUI
메서드와 함께 사용될 때 더 이상 백 스택을 표시하지 않습니다. b/120104424- 이제
AppBarConfiguration
을 사용하여navController.navigateUp()
에서false
를 반환할 때 호출되는 대체OnNavigateUpListener
인스턴스를 설정할 수 있습니다. b/79993862 b/120690961
브레이킹 체인지
argType="reference"
인<argument>
를 사용할 때 Navigation에서 더 이상 참조를 파싱하지 않는 대신 원시 리소스 ID 자체를 제공합니다. b/111736515onNavDestinationSelected()
가 이제 기본적으로 탐색 그래프의 시작 대상으로 돌아가서setup
메서드와 일치하도록 만듭니다.MenuItem
에menuCategory="secondary"
를 추가하여 백 스택이 표시되지 않도록 합니다. aosp/852869- 생성된
Args
클래스의fromBundle()
메서드가 이제 null이 허용되는Bundle
대신 null이 아닌Bundle
을 사용합니다. aosp/845616
버그 수정
- 이제 인수가 항상 문자열로 파싱되지 않고 딥 링크에서 올바른
argType
으로 파싱됩니다. b/110273284 - Navigation에서 이제 공개 리소스를 올바르게 내보냅니다. b/121059552
- 이제 Safe Args가 Android Gradle 플러그인 3.4 Canary 4 이상과 호환됩니다. (b/119662045 참조)
버전 1.0.0-alpha08
2018년 12월 6일
이 릴리스에는 획기적인 API 변경사항이 있습니다. 아래의 브레이킹 체인지 섹션을 참고하세요.
새로운 기능
- 이제
NavigationUI
메서드와 함께 사용하면 대상 라벨이android:label
의{argName}
인스턴스를 올바른 인수로 자동 대체합니다. b/80267266 - Navigation에서 이제 지원 라이브러리 28.0.0을 사용합니다. b/120293333
브레이킹 체인지
OnNavigatedListener
에서OnDestinationChangedListener
로 이름이 변경되었습니다. b/118670572OnDestinationChangedListener
에서 이제 인수의Bundle
도 전달합니다. aosp/837142app:clearTask
,app:launchDocument
속성 및 관련 메서드가 삭제되었습니다. 그래프의 루트와 함께app:popUpTo
를 사용하여 백 스택의 모든 대상을 삭제합니다. b/119628354ActivityNavigator.Extras
가 이제Builder
패턴을 사용하며 임의의Intent.FLAG_ACTIVITY_
플래그를 설정하는 기능을 추가합니다. aosp/828140NavController.onHandleDeepLink
에서handleDeepLink
로 이름이 변경되었습니다. aosp/836063NavOptions
,NavInflater
,NavDeepLinkBuilder
,AppBarConfiguration
과 같이 서브클래스 목적이 아닌 여러 클래스와 메서드가final
로 설정되었습니다. aosp/835681- 지원 중단된
NavHostFragment.setGraph()
메서드가 삭제되었습니다. aosp/835684 - 지원 중단된
NavigationUI.navigateUp(DrawerLayout, NavController)
메서드가 삭제되었습니다. aosp/835684 - Fragment 생성이
FragmentNavigator
로 이동하여 더욱 간편하게FragmentFactory
에 Fragment 생성을 위임할 수 있습니다. b/119054429 NavGraphNavigator
생성자가 더 이상Context
를 가져오지 않습니다. aosp/835340- NavigatorProvider는 이제 인터페이스가 아닌 클래스입니다.
getNavigatorProvider()
에서 반환되는NavigatorProvider
의 기능은 변경되지 않았습니다. aosp/830660 NavDestination.navigate()
를 삭제했습니다. 대신Navigator
에서navigate()
를 호출하세요. (aosp/830663 참조)Navigator
를 대규모로 리팩터링하고OnNavigatorNavigatedListener
의 필요성을 제거했으며 대신navigate
가 이전에 이동했던NavDestination
을 반환합니다.Navigator
인스턴스에서 더 이상 열기 이벤트를NavController
에 전송할 수 없습니다.OnBackPressedCallback
을 사용하여 뒤로 버튼 누르기를 가로채고navController.popBackStack()
을 호출하는 방법을 고려해 보세요. (aosp/833716 참조)
버그 수정
- 이제 대상이
<navigation>
요소인 경우popUpTo
가 일관되게 작동합니다. (b/116831650 참조) - 중첩된 그래프를 사용할 때
IllegalArgumentException
을 유발하는 여러 버그를 수정했습니다. (b/118713731, b/113611083, b/113346925, b/113305559 참조) - 이제
<activity>
대상의dataPattern
속성이toString()
을 호출하여 문자열이 아닌 인수를 채웁니다. (b/120161365 참조)
Safe Args
- Safe Args는 Enum 값을 포함하여 직렬화 가능한 개체를 지원합니다. Enum 유형은 클래스 이름 없이 enum 리터럴을 사용하여 기본값을 설정할 수 있습니다(예:
app:defaultValue="READ"
). (b/111316353 참조) - Safe Args는 지원되는 모든 유형의 배열을 지원합니다. b/111487504
- Safe Args는 이제 리소스 디렉터리의 하위 폴더를 무시합니다. b/117893516
- Safe Args는 적절한 위치에
@Override
주석을 추가합니다. (b/117145301 참조)
버전 1.0.0-alpha07
2018년 10월 29일
새로운 기능
- 새로운 AppBarConfiguration 클래스를 사용하여 최상위 대상으로 고려할 대상을 맞춤설정할 수 있습니다. 자세한 내용은 업데이트된 문서를 참고하세요. b/117333663
- 이제 그래프의 시작 대상으로 인수를 전달할 수 있습니다. b/110300470
- 이제 딥 링크에서 마침표, 하이픈, 더하기 기호가 있는 맞춤 체계를 지원합니다. b/112806402
브레이킹 체인지
navigation-testing-ktx
모듈이navigation-testing artifact
에 포함되었으며 더 이상 게시되지 않습니다.navigation-testing
아티팩트가 이제 Kotlin 표준 라이브러리 종속 항목을 갖습니다. API가 Kotlin 규칙과 더욱 일관성 있게 변경되었지만 계속해서 자바로 작성된 테스트에 사용할 수 있습니다.- 메타데이터 매니페스트 등록 탐색 그래프가 더 이상 지원되지 않습니다. b/118355937
- 액션이 더 이상 <activity> 대상에 연결되지 않습니다. aosp/785539
버그 수정
- 이제 딥 링크가 쿼리 매개변수를 올바르게 파싱합니다. b/110057514
- 이제 Activity 대상이 모든 시작 및 종료 애니메이션을 올바르게 적용합니다. b/117145284
- 맞춤 Navigator를 사용할 때 구성을 변경한 이후에 발생하는 비정상 종료 문제가 수정되었습니다. b/110763345
Safe Args
- Safe args가 이제 Android Gradle 플러그인 3.2.1에 고정된 종속 항목을 갖습니다. b/113167627
- 이제 내부 클래스의 Direction을 생성할 수 있습니다. b/117407555
- <include> 그래프에 Direction을 생성하는 문제가 수정되었습니다. (b/116542123 참조)
버전 1.0.0-alpha06
2018년 9월 20일
새로운 기능
- 이제 Fragment 및 Activity 대상의 공유된 요소 전환이 지원됩니다. b/79665225. 자세한 내용은 탐색 아키텍처 구성요소를 통한 탐색 구현을 참고하세요.
NavigationView
의 항목을 선택하면 포함된 모든 하단 시트가 닫힙니다. b/112158843
API 변경사항
- 브레이킹 체인지: Navigator
navigate()
메서드가 이제Navigator.Extras
매개변수를 취합니다. - NavController의
getGraph()
메서드가 이제NonNull
입니다. b/112243286
버그 수정
- 개별 대상의 뷰와 함께 사용되는 경우 더 이상
NavigationUI.setupWithNavController()
에서 뷰를 누출하지 않습니다. b/111961977 - Navigator
onSaveState()
가 이제 한 번만 호출됩니다. b/112627079
Safe Args
- 탐색 대상 Direction 클래스에 상위 Direction 클래스가 있는 경우 이를 확장합니다. (b/79871405 참조)
- Directions 및 Args 클래스가 이제 유용하게
toString()
을 구현합니다. (b/111843389 참조)
버전 1.0.0-alpha05
2018년 8월 10일
버그 수정
- 잘못된 백스택 동작을 일으키는 버그가 수정되었습니다. (b/111907708 참조)
- Generated Args 클래스의
equals()
에 있는 버그가 수정되었습니다. b/111450897 - Safe Args의 빌드 실패가 해결되었습니다. (b/109409713 참조)
- 리소스 식별자에서 자바 이름으로의 변환이 수정되었습니다. b/111602491
- Safe Args 플러그인의 null 허용 여부 관련 오류 메시지가 수정되었습니다.
- 누락된 null 허용 여부 주석이 추가되었습니다.
버전 1.0.0-alpha04
2018년 7월 19일
Navigation 1.0.0-alpha04
및 관련 Safe Args Gradle 플러그인에는 다양한 API 변경사항, 동작 변경사항, 버그 수정이 포함되어 있습니다.
API/동작 변경사항
- NavHostFragment는 항상 현재 Fragment를 기본 탐색 fragment로 설정하여, 하위 fragment 관리자가 열린 후에야 외부 NavController가 열리도록 합니다. b/111345778
Safe Args
- 브레이킹 체인지: ConstraintLayout 2.0.0-alpha1과 같은 다른 라이브러리와의 충돌을 피하기 위해
app:type
이app:argType
으로 변경되었습니다. b/111110548 - 이제 Safe Args의 오류 메시지를 클릭할 수 있습니다. (b/111534438 참조)
- 이제 Args 클래스에서
NonNull
속성이 실제로 null이 아님을 확인합니다. b/111451769 - NavDirections 및 Args에서 생성한 클래스에
NonNull
주석이 추가되었습니다. (b/111455455 및 b/111455456 참조)
버그 수정
- fragment 대상으로 딥 링크 후 발생하는 시스템 뒤로 버튼의 문제가 해결되었습니다. b/111515685
버전 1.0.0-alpha03
2018년 7월 12일
Navigation 1.0.0-alpha03
및 관련 Safe Args Gradle 플러그인에는 다양한 API 변경사항, 동작 변경사항, 버그 수정이 포함되어 있습니다.
API/동작 변경사항
- 툴바에 NavigationUI.setupWithNavController 메서드가 추가되었습니다. b/109868820
- CollapsingToolbarLayout에 NavigationUI.setupWithNavController 메서드가 추가되었습니다. b/110887183
- 이제 백스택이 비어 있거나 지정된 대상 ID가 백스택에 없으면 popBackStack()에서 false를 반환합니다. b/110893637
- 이제 FragmentManager가 상태를 저장하고 나면 FragmentNavigator가 탐색 작업을 무시하여 'onSaveInstanceState 후 이 작업을 수행할 수 없음' 예외가 방지됩니다. b/110987825
Safe Args
- 브레이킹 체인지: 작업과 인수 이름에 포함된 영숫자 이외의 문자는 각각의 NavDirections 메서드 이름에서 카멜식 대소문자 표기로 대체됩니다.
- 예를 들어
DemoController.index
는setDemoControllerIndex
가 됩니다. (b/79995048 참조) - 예를 들어
action_show_settings
는actionShowSettings
가 됩니다. (b/79642240 참조)
- 예를 들어
- 브레이킹 체인지: 이제 인수는 기본적으로 null이 아닌 것으로 간주됩니다. 문자열과 Parcelable 인수에 null 값을 허용하려면
app:nullable="true"
를 추가합니다. (b/79642307 참조) - 이제
app:type="long"
을 defaultValues와 함께 '123L' 형태로 사용할 수 있습니다. (b/79563966 참조) - Parcelable 인수가 이제
app:type
의 정규화된 클래스 이름을 사용하여 지원됩니다. 지원되는 유일한 기본값은"@null"
입니다. (b/79563966 참조) - Args 클래스에서 이제
equals()
및hashCode()
를 구현합니다. (b/79642246 참조) - 이제 라이브러리 프로젝트에 Safe Args 플러그인을 적용할 수 있습니다. (b/80036553 참조)
- 이제 기능 프로젝트에 Safe Args 플러그인을 적용할 수 있습니다. b/110011752
버그 수정
- Fragment 수명 주기 메서드가 수행되는 동안 탐색할 때 발생하는 문제가 해결되었습니다. b/109916080
- 중첩된 그래프를 여러 번 탐색할 때 발생하는 문제가 해결되었습니다. (b/110178671 참조)
- 그래프에서 첫 번째 대상으로
setPopUpTo
를 사용할 때 발생하는 문제가 해결되었습니다. (b/109909461 참조) - 모든
app:defaultValue
값이 문자열로 전달되는 문제를 해결했습니다. (b/110710788 참조) - Android Gradle 플러그인 3.2 베타 01에 번들로 제공되는 aapt2에서 이제 Navigation XML 파일의 모든
android:name
속성에 Keep 규칙을 추가합니다. (b/79874119 참조) - 기본 FragmentNavigator를 대체할 때 발생하는 메모리 누수가 해결되었습니다. (b/110900142 참조)
버전 1.0.0-alpha02
2018년 6월 7일
동작 변경사항
FragmentNavigator
에서 이제setReorderingAllowed(true)
를 사용합니다. (b/109826220 참조)탐색이 이제 딥 링크 URL에서 파싱된 URLDecodes URL 인수를 디코딩합니다. (b/79982454 참조)
버그 수정
Fragment 수명 주기 메서드에서 탐색을 호출할 때 발생하는
IllegalStateException
을 수정했습니다. (b/79632233 참조)애니메이션 사용 시 깜박이는 문제를 해결하기 위해 탐색에서 이제 지원 라이브러리 27.1.1을 사용합니다. (b/80160903 참조)
하위 fragment로 defaultNavHost="true"를 사용할 때 발생하는
IllegalArgumentException
을 수정했습니다. (b/79656847 참조)NavDeepLinkBuilder를 사용할 때 발생하는
StackOverflowError
를 해결했습니다. (b/109653065 참조)중첩된 그래프로 다시 이동할 때 발생하는
IllegalArgumentException
을 수정했습니다. (b/80453447 참조)launchSingleTop
사용 시 Fragment가 중복되는 문제를 해결했습니다. (b/79407969 참조)탐색에서 이제 중첩된 그래프의 올바른 합성 백스택을 빌드합니다. (b/79734195 참조)
MenuItem
으로 중첩된 그래프를 사용할 때 NavigationUI는 올바른 항목을 강조표시합니다. (b/109675998 참조)
API 변경사항
NavOptions
에 포함된 작업 및 관련 API의clearTask
속성 지원을 중단했습니다. (b/80338878 참조)NavOptions
에 포함된 작업 및 관련 API의launchDocument
속성을 지원 중단했습니다. (b/109806636 참조)
버전 1.0.0-alpha01
2018년 5월 8일
탐색은 인앱 탐색 빌드를 위한 프레임워크를
제공합니다. 최초 출시는 1.0.0-alpha01
입니다.