6월 3일의 ⁠#Android11: 베타 버전 출시 행사에 참여하세요.

Navigation

Navigation은 Android 애플리케이션 내에서 '대상' 사이를 탐색하는 프레임워크로, 대상이 Fragment, Activity 또는 기타 구성요소로 구현되었는지에 관계없이 일관된 API를 제공합니다.

최근 업데이트 현재 안정화 버전 다음 출시 후보 베타 출시 알파 출시
2020년 4월 29일 2.2.2 - - 2.3.0-alpha06

종속 항목 선언

Navigation의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

    dependencies {
      def nav_version = "2.3.0-alpha05"

      // 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"

      // Dynamic Feature Module Support
      implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

      // Testing Navigation
      androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"
    }
    

Safe Args

프로젝트에 Safe Args를 추가하려면 최상위 build.gradle 파일에 다음과 같은 classpath를 포함합니다.

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.3.0-alpha06"
        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 문서를 참조하세요.

버전 2.3.0

버전 2.3.0-alpha06

2020년 4월 29일

androidx.navigation:navigation-*:2.3.0-alpha06이 출시되었습니다. 버전 2.3.0-alpha06에 포함된 커밋을 확인하세요.

새로운 기능

  • 이전에 사용 가능한 app:uri 외에 app:actionapp: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를 지정할 필요가 없으며 기본적으로 점 다음에 applicationIdmoduleName 접미사를 추가하여 사용합니다. graphPackage를 맞춤설정해야 하는 경우 ${applicationId} 자리표시자가 지원됩니다. (b/152696768)
  • 탐색 그래프 Kotlin DSL은 이제 작업에 defaultArguments Map을 노출하여 탐색 XML 파일의 <action> 요소에 기본값을 설정하는 기능을 미러링합니다. (b/150345605)

버그 수정

  • Navigation 2.2.2에서: 활동에 여러 NavHostFragment 인스턴스가 있을 때 그래프의 시작 대상으로 딥 링크를 생성할 때 발생하는 IllegalStateException이 수정되었습니다. (b/147378752)

종속 항목 업데이트

버전 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에서는 이제 CustomView 1.1.0-alpha02에서 도입된 Openable 인터페이스(DrawerLayout에서 DrawerLayout 1.1.0-alpha04로 구현)를 사용하여 개발자가 NavigationUI가 있는 맞춤 Openable 구현을 사용할 수 있습니다. (b/129030452 참조)

버그 수정

  • 이제 navigation-common-ktx ProGuard 규칙이 모든 NavArgs 인스턴스가 아닌 사용되는 NavArgs 클래스만 올바르게 유지합니다. (b/150213558)

종속 항목 변경사항

  • Navigation이 Core 1.2.0에 대한 의존성을 되돌려 이제는 Core 1.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)

종속 항목 업데이트

버전 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

종속 항목 업데이트

버전 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)

종속 항목 업데이트

버전 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을 허용하는 인수는 선택사항입니다.
  • 개선된 애니메이션 지원: 이제 NavHostFragmentFragment 1.2.0에서 FragmentContainerView를 사용하여 애니메이션 z-순서 문제 및 Fragment로 창 인셋 전달 문제를 해결했습니다.

버전 2.2.0-rc04

2019년 12월 18일

androidx.navigation:navigation-*:2.2.0-rc04가 출시되었습니다. 버전 2.2.0-rc04에 포함된 커밋을 확인하세요.

버그 수정

  • Fragment1.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 참조)
  • 이제 NavHostFragmentFragmentContainerView와 함께 사용될 경우 구성 변경 후 그래프를 올바르게 복원합니다. (b/143752103 참조)

종속 항목 변경사항

  • Navigation이 이제 Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03, Activity 1.1.0-rc03 및 Fragment 1.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-rc012.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 참조)
  • 이제 ActivitynavArgs() 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 참조)

버그 수정

  • ViewPager2NavHostFragment를 추가할 때 실패하고 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 참조)

버그 수정

  • 이제 NavHostFragmentFragmentContainerView를 사용하여 애니메이션 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 관련 데이터 공유를 참조하세요.
  • 대화상자 대상: 이제 navigateDialogFragment를 표시하는 <dialog> 대상을 만들 수 있습니다. NavHostFragment는 기본적으로 대화상자 대상을 지원합니다. 자세한 내용은 DialogFragment에서 대상 만들기를 참조하세요.
  • URI로 탐색: 이제 Uri를 사용한 navigate가 가능하며 이 경우 대상에 추가한 <deepLink>를 사용하여 탐색합니다. 자세한 내용은 URI를 사용하여 이동을 참조하세요.
  • NavHostController: 특히 맞춤 NavHost를 생성하는 데 사용되는 API를 NavHostController로 이동했으므로 호스팅 LifecycleOwner, OnBackPressedDispatcher, ViewModelStoreNavController를 연결하도록 구현할 수 있습니다.

버전 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 변경사항

  • NavControllergetViewModelStore() 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() 메서드를 NavHostControllersetOnBackPressedDispatcher() 메서드로 대체했으며 이제 이 메서드를 호출하기 전에 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를 올바르게 적용하도록 하여 Navigation 2.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 변경사항

  • NavHostFragmentcreateFragmentNavigator() 메서드를 지원 중단하고 기능을 새 onCreateNavController() 메서드로 이동했으며 이로써 NavHostFragment를 서브클래스로 분류할 때 맞춤 Navigator 추가의 올바른 진입점이라는 것을 더 명확하게 나타냈습니다. (b/122802849 참조)
  • NavDestinationhasDeepLink() 메서드를 추가했습니다. 따라서 제공된 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.1androidx.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.02.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.01.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 클래스와 연결된 패키지 이름의 infun과 같은 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일

이 릴리스에는 다양한 소규모 변경사항 및 중요한 버그 수정이 포함되어 있습니다.

새로운 기능

  • 이제 0reference 인수의 android:defaultValue로 사용할 수 있습니다. (b/124248602 참조)

동작 변경사항

  • 이제 정확한 딥 링크 일치가 .* 또는 인수 일치가 있는 딥 링크보다 높은 우선순위를 차지합니다. (b/123969518 참조)

버그 수정

  • 백 스택에서 마지막 대상을 표시할 때 이제 popBackStack()navigateUpfalse를 올바르게 반환하도록 하여 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 참조)
  • NavDirectionsgetArguments()에서 반환된 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 참조)
  • NavHostFragmentFragmentManager에서 맞춤 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"가 포함된 MenuItemNavigationUI 메서드와 함께 사용될 때 더 이상 백 스택을 표시하지 않습니다. (b/120104424 참조)
  • 이제 AppBarConfiguration을 사용하여 navController.navigateUp()에서 false를 반환할 때 호출되는 대체 OnNavigateUpListener 인스턴스를 설정할 수 있습니다. (b/79993862, b/120690961 참조)

브레이킹 체인지

  • argType="reference"<argument>를 사용할 때 Navigation에서 더 이상 참조를 파싱하지 않는 대신 원시 리소스 ID 자체를 제공합니다. (b/111736515 참조)
  • onNavDestinationSelected()가 이제 기본적으로 탐색 그래프의 시작 대상으로 돌아가서 setup 메서드와 일치하도록 만듭니다. MenuItemmenuCategory="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/118670572 참조)
  • OnDestinationChangedListener에서 이제 인수의 Bundle도 전달합니다. (aosp/837142 참조)
  • app:clearTask, app:launchDocument 속성 및 관련 메서드가 삭제되었습니다. 그래프의 루트와 함께 app:popUpTo를 사용하여 백 스택의 모든 대상을 삭제하세요. (b/119628354 참조)
  • ActivityNavigator.Extras가 이제 Builder 패턴을 사용하며 임의의 Intent.FLAG_ACTIVITY_ 플래그를 설정하는 기능을 추가합니다. (aosp/828140 참조)
  • NavController.onHandleDeepLink에서 handleDeepLink로 이름이 변경되었습니다. (aosp/836063 참조)
  • NavOptions, 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일

새로운 기능

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:typeapp:argType으로 변경되었습니다. (b/111110548 참조)
  • 이제 Safe Args의 오류 메시지를 클릭할 수 있습니다. (b/111534438 참조)
  • 이제 Args 클래스에서 NonNull 속성이 실제로 null이 아님을 확인합니다. (b/111451769 참조)
  • NavDirections 및 Args에서 생성한 클래스에 NonNull 주석이 추가되었습니다. (b/111455455b/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.indexsetDemoControllerIndex가 됩니다. (b/79995048 참조)
    • 예를 들어 action_show_settingsactionShowSettings가 됩니다. (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 참조)

  • Navigation이 이제 딥 링크 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일

Navigation은 인앱 탐색 빌드를 위한 프레임워크를 제공합니다. 최초 출시는 1.0.0-alpha01입니다.