การแก้ไขล่าสุดในไลบรารีการสนับสนุน

หน้านี้ให้รายละเอียดเกี่ยวกับการเปิดตัวแพ็กเกจไลบรารีการสนับสนุน ล่าสุด สำหรับรุ่นก่อนหน้า โปรดดู ที่เก็บถาวรการแก้ไขไลบรารีการสนับสนุน

เวอร์ชันที่ใช้งานจริง 28.0.0

(21 กันยายน 2018)

นี่คือการเปิดตัว Support Library 28.0.0 เวอร์ชันเสถียรและเหมาะสำหรับการใช้งาน ในเวอร์ชันที่ใช้งานจริง การเปิดตัวฟีเจอร์นี้จะเป็นการเปิดตัวฟีเจอร์สุดท้ายภายใต้android.supportแพ็กเกจ และเราขอแนะนำให้นักพัฒนาซอฟต์แวร์ ย้ายข้อมูลไปยัง AndroidX

ฟีเจอร์ใหม่

  • AnimatedStateListDrawableCompat มีการเปลี่ยนภาพเคลื่อนไหว ระหว่างสถานะ Drawable
  • VectorDrawableCompat รองรับการไล่ระดับสีและ ColorStateList การเติมสีและเส้นขอบ

การแก้ไข 28.0.0 RC 2

(27 สิงหาคม 2018)

รุ่นทดสอบของไลบรารีการสนับสนุนนี้ถือว่ามีฟีเจอร์ครบถ้วนและ API สาธารณะของไลบรารีนี้มีความเสถียร รุ่นนี้จะจัดส่งเป็นเวอร์ชันเสถียรสุดท้าย หากไม่มีปัญหาร้ายแรงเกิดขึ้น รุ่นนี้ควรปลอดภัย ที่จะใช้ในเวอร์ชันที่ใช้งานจริง โปรดรายงานปัญหาที่พบไปยัง เครื่องมือติดตามปัญหา สาธารณะ

ปัญหาที่แก้ไขแล้ว

  • Proguard จะนำตัวสร้างแอปพลิเคชัน View Model ออก (ปัญหาแบบสาธารณะ 112230489)
  • แก้ไขสถานะคงที่ของค่าคงที่ `AnimatedStateListDrawableCompat`
  • นำการอ้างอิง media2 ออกจาก mediarouter 1.0.0
  • `Fragment.getViewLifecycleOwner()` ไม่หยุดทำงานเมื่อกดปุ่มหน้าแรก (ปัญหาที่เปิดเผยต่อสาธารณะ 113070421) ([ปัญหาที่เปิดเผยต่อสาธารณะ 113070421](https://issuetracker.google.com/issues/113070421))

การแก้ไข 28.0.0 RC 1

(6 สิงหาคม 2018)

รุ่นทดสอบของไลบรารีการสนับสนุนนี้ถือว่ามีฟีเจอร์ครบถ้วนและ API สาธารณะของไลบรารีนี้มีความเสถียร รุ่นนี้จะจัดส่งเป็นเวอร์ชันเสถียรสุดท้าย หากไม่มีปัญหาร้ายแรงเกิดขึ้น รุ่นนี้ควรปลอดภัย ที่จะใช้ในเวอร์ชันที่ใช้งานจริง โปรดรายงานปัญหาที่พบไปยัง เครื่องมือติดตามปัญหา สาธารณะ

หมายเหตุ: ไลบรารีบางรายการ เช่น media2 ยังคงอยู่ในเวอร์ชันอัลฟ่าเนื่องจาก API ยังไม่เสร็จสมบูรณ์ เราไม่แนะนำให้ใช้ไลบรารีเวอร์ชันอัลฟ่าใน การใช้งานจริง ไลบรารีควรหลีกเลี่ยงการใช้ไลบรารีเวอร์ชันอัลฟ่าในสภาพแวดล้อมการผลิตอย่างเคร่งครัด เนื่องจาก API อาจมีการเปลี่ยนแปลงในลักษณะที่ไม่เข้ากันกับซอร์สและไบนารี

ปัญหาที่แก้ไขแล้ว

  • เมนู BottomNavigationView ไม่ได้เริ่มต้นอย่างถูกต้องในไลบรารีการรองรับการออกแบบ
  • PositionalDataSource จัดการการแทรกรายการที่เพิ่มไว้ล่วงหน้าลงในฐานข้อมูลไม่ถูกต้อง
  • แถบเลื่อนไม่ราบรื่นและไม่ตอบสนอง
  • `SlicesProviderCompat.getPinnedSpecs()` ไม่ได้เพิ่มรหัสผู้ใช้ลงใน URI
  • RoutePlayer2: การเล่นจากระยะไกลไม่เปลี่ยนกลับไปเป็นการเล่นในเครื่อง
  • การแยกวิเคราะห์สไลซ์ที่แคชไว้ขัดข้องเมื่อดำเนินการ
  • แอป Google Search ขัดข้องในการแสดงผล Slice แบบคงที่
  • ConcurrentModificationException ในไลบรารีการเลือก RecyclerView เมื่อมีการเปลี่ยนแปลงชุดข้อมูล โดยการนำการเลือกออก
  • PreferenceThemeOverlay ได้รับการอัปเดตเป็นธีม Material ล่าสุดแล้ว หากไม่ได้ระบุธีมที่กำหนดเอง ระบบจะใช้ PreferenceThemeOverlay เป็นธีมเริ่มต้น
  • ธีม PreferenceThemeOverlay.v14 และ PreferenceThemeOverlay.v14.Material ถูกเลิกใช้งานแล้วเพื่อเปลี่ยนไปใช้ PreferenceThemeOverlay แทน
  • ตอนนี้การแสดงผล PreferenceGroup จะเชื่อมโยงกับกลุ่มย่อยแล้ว โดยการซ่อนกลุ่มหลัก จะป้องกันไม่ให้แสดงกลุ่มย่อยในลำดับชั้นด้วย ใช้ Preference.isShown() เพื่อดูว่ามีการแสดง Preference ต่อผู้ใช้ในลำดับชั้นจริงหรือไม่
  • เลิกใช้งาน Preference.onSetInitialValue(boolean, Object) แล้วและแทนที่ ด้วย onSetInitialValue(Object) ตอนนี้ PreferenceDataStore จะคืนค่าเริ่มต้นได้อย่างถูกต้องด้วย

การแก้ไข 28.0.0 เบต้า 1

(กรกฎาคม 2018)

ไลบรารีการสนับสนุนเวอร์ชันเบต้านี้ถือว่ามีฟีเจอร์ครบถ้วนและ API สาธารณะของไลบรารีมีความเสถียร ยกเว้นปัญหาที่ร้ายแรงที่อาจเกิดขึ้น แม้ว่ารุ่นนี้จะปลอดภัยต่อการใช้งานจริง แต่ก็อาจยังมีข้อบกพร่องอยู่ โปรดรายงานปัญหาที่พบไปยังเครื่องมือติดตามปัญหาแบบสาธารณะ

ปัญหาที่แก้ไขแล้ว

  • เหตุการณ์ GestureSelectionHelper ที่เกิดขึ้นกับรายการที่เลือกไม่ได้
  • ชิ้นแถบเลื่อนอาจมีไอคอนนิ้วโป้งที่ซ้ำกันเมื่อมีการอัปเดตค่าแถบเลื่อน
  • IconCompat ทำให้ไอคอน TYPE_URI เสียหาย
  • แอปขัดข้องเมื่อใช้ค่ากำหนดโดยใช้แถบเลื่อน
  • เกิดข้อขัดข้องใน Slice.toString()
  • OffsettingListUpdateCallback.onMoved() เรียกใช้ mCallback.onRemoved() แทน mCallback.onMoved() (ปัญหา 110711937)

การแก้ไข 27.1.1

(เมษายน 2018)

ปัญหาที่แก้ไขแล้ว

  • AsyncListDiffer ไม่เรียกใช้ getChangePayload (ปัญหา AOSP 73961809)
  • ไม่ได้เรียกใช้ onCleared ของ Fragment ViewModel (ปัญหา AOSP 74139250)
  • RecyclerView.setRecycledViewPool() จะเพิ่ม attachCount แม้ว่าอะแดปเตอร์จะเป็น null ก็ตาม
  • RecyclerView NPE หาก SmoothScroller.onStop เรียก stop() หรือ startSmoothScroller()
  • ธุรกรรมการแทนที่ Fragment ทำให้ Fragment ก่อนหน้ากะพริบหลังจากแสดง Fragment ใหม่ (ปัญหา AOSP 74051124)
  • การเปลี่ยนแปลงที่ไม่รองรับการทำงานร่วมกันของ Loader Callback ใน 27.1.0 (ปัญหา AOSP 74135998)
  • เลย์เอาต์ RTL จะไม่ทํางานเมื่อมุมมองตารางกริดแนวตั้งตั้งค่าคอลัมน์ > 1
  • มีการเรียก onLoadFinished หลายครั้งใน ViewPager ด้วย FragmentPagerAdapter
  • AsyncListDiffer ควรส่งการอัปเดตหลังจากตั้งค่ารายการปัจจุบัน (ปัญหา AOSP 74003309)
  • ShareActionProvider จะแสดง ClassCastException ใน 27.1.0
  • การเปลี่ยนแปลงวงจรของ Fragment ด้วย ViewPager (ปัญหา AOSP 73976255)

การแก้ไข 28.0.0 อัลฟ่า 1

(มีนาคม 2018)

หมายเหตุ: 28.0.0-alpha1 เป็นเวอร์ชันก่อนเปิดตัวเพื่อรองรับตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ Android P API ของไลบรารีนี้อาจมีการเปลี่ยนแปลง และไม่จำเป็นต้องมีฟีเจอร์หรือการแก้ไขข้อบกพร่องจากไลบรารีการสนับสนุนเวอร์ชันเสถียรล่าสุด

การเปลี่ยนแปลงที่สำคัญ

  • ตามที่ได้กล่าวไว้ก่อนหน้านี้ในประกาศเกี่ยวกับ Android KTX เราจะยังคงใช้คำนำหน้าแพ็กเกจ androidx ในไลบรารีของเราต่อไป เราได้คัดสรรไลบรารีใหม่ล่าสุด ซึ่งรวมถึง heifwriter และ recyclerview-selection มาไว้ในแพ็กเกจใหม่นี้ เราหวังว่าการแบ่งระหว่าง android.* และ androidx.* จะช่วยให้เห็นได้ชัดเจนยิ่งขึ้นว่า API ใดที่มาพร้อมกับแพลตฟอร์ม และ API ใดเป็น ไลบรารีแบบคงที่สำหรับนักพัฒนาแอปที่ทำงานใน Android เวอร์ชันต่างๆ
  • เราได้แยกส่วนต่างๆ ของ support-core-ui, support-core-utils และ support-compat ออกเป็นไลบรารีขนาดเล็กลง การเปลี่ยนแปลงนี้จะช่วยให้เราแยกการพึ่งพาไลบรารี การสนับสนุนในอนาคตได้ ตอนนี้เรามีคลังใหม่ดังต่อไปนี้
    • asynclayoutinflater (จาก support-core-ui)
    • คอลเล็กชัน (จาก support-compat)
    • coordinatorlayout (จากการออกแบบ)
    • cursoradapter (จาก support-core-ui)
    • customview (จาก support-core-ui)
    • documentfile (จาก support-core-utils)
    • drawerlayout (จาก support-core-ui)
    • ตัวกำหนดอัตราการเปลี่ยนแปลง (จาก support-core-ui)
    • ตัวโหลด (จาก support-fragments และ core-utils)
    • localbroadcastmanager (จาก support-core-utils)
    • print (จาก support-core-utils)
    • slidingpanelayout (จาก support-core-ui)
    • swiperefreshlayout (จาก support-core-ui)
    • viewpager (จาก support-core-ui)

API ใหม่

  • recyclerview-selection ให้การสนับสนุนการเลือกรายการสำหรับ RecyclerView แพ็กเกจนี้มีบริการต่อไปนี้
    • รองรับการสร้าง แก้ไข ตรวจสอบ และติดตามการเปลี่ยนแปลงชุด ของรายการที่เลือกในรายการ RecyclerView
    • รองรับการดำเนินการแบบเลือกหลายรายการที่ใช้งานง่าย ดังนี้
      • การเลือกที่ขับเคลื่อนด้วยการสัมผัสช่วยให้ผู้ใช้เลือกช่วงของรายการได้ด้วย ท่าทางสัมผัสกดค้างแล้วลากที่ใช้งานง่าย
      • การเลือกแถบที่ขับเคลื่อนด้วยเมาส์ช่วยให้ผู้ใช้เลือกกลุ่มรายการในรายการ RecyclerView ได้โดยใช้การดำเนินการแถบ/บ่วงแบบดั้งเดิมของตัวชี้เมาส์
    • รองรับอุปกรณ์ที่เน้นการสัมผัส ซึ่งรวมถึงโทรศัพท์และแล็ปท็อปที่เปิดใช้ระบบสัมผัส รวมถึงอุปกรณ์ที่เน้นการใช้เคอร์เซอร์
  • HEIF Writer รองรับการเขียนภาพนิ่งในรูปแบบ HEIF
  • คลังการออกแบบ
    • เราได้เปิดตัวธีมแอปพลิเคชันใหม่ Theme.MaterialComponents พร้อมแอตทริบิวต์ใหม่และสไตล์ที่อัปเดตแล้ว สำหรับคอมโพเนนต์
    • เราได้เพิ่มคอมโพเนนต์ต่อไปนี้
      • BottomAppBar
      • ชิป
      • ChipGroup
      • MaterialButton
      • MaterialCardView
  • Slice มีเฟรมเวิร์กให้แอปฝังเนื้อหาที่สร้างจากเทมเพลตจาก แอปอื่นๆ
    • slices-builders มีเมธอดในการสร้างเนื้อหาในรูปแบบเทมเพลต
    • slices-view มีเมธอดในการนำเสนอเนื้อหานั้น
  • การดำเนินการของเบราว์เซอร์มีโปรโตคอลสำหรับนักพัฒนาแอปในการเปิดเมนูบริบทที่สอดคล้องกัน (แต่ปรับแต่งได้) สำหรับ URL ฟีเจอร์นี้ขึ้นอยู่กับการมีแอปเบราว์เซอร์ (เช่น Chrome ซึ่งฟีเจอร์นี้ยังอยู่ระหว่างการพัฒนา) ที่รองรับการดำเนินการของเบราว์เซอร์
  • ContextCompat.getSystemService() และ getSystemServiceName() อนุญาตให้ค้นหาบริการของระบบตามประเภทใน API ทุกระดับ

การแก้ไขข้อบกพร่อง

  • ไม่ได้เรียกใช้ onCleared ของ Fragment ViewModel (ปัญหา AOSP 74139250)
  • มีการเรียก onLoadFinished() หลายครั้งใน ViewPager ด้วย FragmentPagerAdapter (ปัญหา AOSP 74182171)
  • smoothScrollToPosition() ของ LinearLayoutManager ของ RecyclerView แสดงการเคลื่อนไหวที่ผิดปกติ (ไปมา) ภายใต้สถานการณ์บางอย่าง (ปัญหา AOSP 71567765)

การเปิดตัวการแก้ไข 27.1.0

(กุมภาพันธ์ 2018)

การเปลี่ยนแปลงที่สำคัญ

  • เราได้เขียนการใช้งานพื้นฐานของ Loaders ใหม่เพื่อใช้ Lifecycle แม้ว่า API จะไม่มีการเปลี่ยนแปลง แต่ก็มีการเปลี่ยนแปลงลักษณะการทำงานหลายอย่าง ดังนี้
    • ตอนนี้จะเรียกใช้ initLoader(), restartLoader() และ destroyLoader() ได้ในเทรดหลักเท่านั้น
    • ตอนนี้ระบบจะเรียกใช้ onStartLoading() และ onStopLoading() ของ Loader เมื่อ FragmentActivity/Fragment ที่มีอยู่เริ่มและหยุดทำงานตามลำดับ
    • ระบบจะเรียกใช้ onLoadFinished() ระหว่าง onStart() ถึง onStop เท่านั้น ด้วยเหตุนี้ ตอนนี้คุณจึงทำธุรกรรม Fragment ได้อย่างปลอดภัยใน onLoadFinished()
    • ตอนนี้เมธอด FragmentController ที่เกี่ยวข้องกับ Loader ได้ เลิกใช้งานแล้ว
  • ตอนนี้ getDialog() ของ DialogFragment จะไม่เป็น Null จนถึง onDestroyView() แทนที่จะเป็น Null ใน dismiss() ตอนนี้คุณสามารถพิจารณาได้ว่ามีการปิดกล่องโต้ตอบด้วยตนเองใน onStop() หรือไม่โดยตรวจสอบว่า getDialog().isShowing() แสดงผลเป็นเท็จหรือไม่

API ใหม่

  • ListAdapter สำหรับ RecyclerView (พร้อมกับ AsyncListDiffer) ทำให้การคำนวณความแตกต่างของรายการใน เธรดเบื้องหลังง่ายขึ้น ซึ่งจะช่วยให้ RecyclerView เคลื่อนไหวการเปลี่ยนแปลงเนื้อหาโดยอัตโนมัติได้ โดยใช้การทำงานใน UI Thread น้อยที่สุด โดยใช้ DiffUtil ภายใน
  • SortedList.ReplaceAll ช่วยให้อัปเดตข้อมูลทั้งหมดใน SortedList ซึ่งจะเรียกใช้ภาพเคลื่อนไหวที่เหมาะสมทั้งหมดสำหรับการแทรก การนำออก การเปลี่ยนแปลง และการย้าย (การย้ายจะถือเป็นการนำออกและการแทรก)
  • ตอนนี้ FragmentActivity และ Fragment ได้ใช้ ViewModelStoreOwner แล้ว และสามารถใช้กับตัวสร้าง ViewModelProvider แทนการใช้ ViewModelProviders.of() ได้
  • ตอนนี้ Fragment มีเมธอด requireContext(), requireActivity(), requireHost() และ requireFragmentManager() ซึ่งจะแสดงผลออบเจ็กต์ NonNull ของเมธอด get ที่เทียบเท่า หรือส่ง IllegalStateException
  • requireViewById() เราได้เพิ่ม@NonNullเวอร์ชันที่เข้ากันได้ ของ findViewById() ลงใน WindowCompat, ActivityCompat และ ViewCompat ซึ่งจะแสดง IllegalArgumentException เมื่อไม่พบเป้าหมาย
  • LoaderCallbacks ตอนนี้เมธอดมีคำอธิบายประกอบ @Nullable และ @NonNull ที่เหมาะสมแล้ว
  • FileProvider ตอนนี้รองรับ getExternalMediaDirs() ในอุปกรณ์ที่ใช้ API 21 ขึ้นไปผ่าน องค์ประกอบ <external-media-path> ใหม่

การแก้ไขข้อบกพร่อง

  • Fragment ที่เริ่มต้น Loader ใน onCreate มีวงจรที่ขาดหายไป ภายใน ViewPager
  • LoaderManager จะส่ง IllegalStateException ใน onLoadFinished
  • LoaderViewModel ไม่ล้าง Loader ใน onCleared
  • ไม่พบไฟล์ Class สำหรับ android.arch.lifecycle.ViewModelStoreOwner
  • DialogFragment onDismiss ไม่ได้เรียกใช้ทันทีหลังจาก dismiss()
  • อีโมจิธงประเทศจะใช้ไม่ได้ในอุปกรณ์ที่ใช้คีย์รุ่นเมื่อใช้ แบบอักษรที่ดาวน์โหลดได้
  • ไลบรารีการตั้งค่าใช้แอตทริบิวต์ที่จะไม่ทำงานใน Android เวอร์ชันเก่า
  • ประเภทอาร์ติแฟกต์ testlib ของ MediaCompat มีเอกสารประกอบที่ไม่ถูกต้อง (ปัญหา AOSP 71559905)
  • Google Sans ขัดข้องใน TypefaceCompatUtil
  • เปิดเผยตัวสร้าง ArraySet ที่รับ Collection
  • updateApi จะนำไฟล์ .ignore ที่ควรเก็บไว้
  • MainFragments ที่ซ้ำกันซึ่งสร้างใน BrowseFragment
  • นำการใช้การสะท้อนออกจาก CarRecyclerView
  • java.lang.IllegalStateException at FragmentManagerImpl.checkStateLoss
  • ได้รับ (ไม่มีเอกสาร) java.lang.SecurityException เมื่อใช้ android.support.v4.content.PermissionChecker.checkSelfPermission
  • RecyclerView IndexOutOfBoundsException เนื่องจากไม่ได้ล้าง State.mPreviousLayoutItemCount ใน setAdapter (ปัญหา AOSP 37657125)
  • Fragment ที่เริ่มต้น Loader ใน onCreate มีวงจรที่เสียอยู่ภายใน ViewPager (ปัญหา AOSP 34831613)
  • FragmentManagerImpl.execSingleAction ขัดข้อง

การเปิดตัวการแก้ไข 27.0.2

(พฤศจิกายน 2017)

การแก้ไขข้อบกพร่อง

  • EmojiEditTextHelper ขว้าง NullPointerException
  • IllegalStateException: ยังไม่ได้แนบ Fragment
  • ปิดป๊อปอัปไอคอน "แคสต์" ไม่ได้โดยการแตะที่ใดก็ได้บนหน้าจอ
  • MediaMetadataCompat ขว้าง BadParcelableException

การเผยแพร่การแก้ไข 27.0.1

(พฤศจิกายน 2017)

การแก้ไขข้อบกพร่อง

  • LifecycleRegistry อยู่ในสถานะที่ไม่ถูกต้องหลังจากเรียกใช้ startActivityForResult() (ปัญหา 65665621)
  • สีของปุ่มที่ปิดใช้สว่างเกินไปใน API ระดับเก่า
  • หลังจากเลื่อนแล้ว ผู้ใช้จะคลิกรายการใน RecyclerViewไม่ได้ (ปัญหา AOSP 66996774)
  • ใน Talkback การคลิกตัวเลือกเพิ่มเติมจะไม่ทำให้ ระบบประกาศป๊อปอัปใหม่หรือเพิ่มโฟกัสไปยังตัวเลือกใหม่

การเปิดตัวการแก้ไข 27.0.0

(ตุลาคม 2017)

ความแตกต่างของ API

การเปลี่ยนแปลง API

  • เพิ่มคำอธิบายประกอบการยอมรับค่า Null ใน API ต่างๆ รวมถึง API ต่อไปนี้ ซึ่งอาจทำให้เกิดข้อผิดพลาดในการคอมไพล์ Kotlin เมื่อไม่ได้จัดการประเภทการคืนค่าที่ยอมรับค่าว่างอย่างถูกต้อง
  • Fragment สามารถใช้ไลบรารีการสนับสนุนเวอร์ชัน Transition สำหรับการเปลี่ยนภาพ Fragment รวมถึงการเปลี่ยนภาพ องค์ประกอบที่ใช้ร่วมกัน
  • ไลบรารีการแบ่งหน้าเนื้อหา (android.support.content.ContentPager) รองรับการแบ่งหน้าเนื้อหาที่แสดงผ่าน ContentProvider การใช้ไลบรารีนี้ช่วยให้ไคลเอ็นต์ หลีกเลี่ยง "การสลับหน้าต่างเคอร์เซอร์" ระหว่างกระบวนการที่ใช้ทรัพยากรมากในเทรด UI และมีไลบรารีความเข้ากันได้สำหรับฟีเจอร์ Android 8.0
  • ViewCompat ตอนนี้ได้เพิ่ม Wrapper สำหรับวิธีการป้อนข้อความอัตโนมัติ ซึ่งรวมถึง getImportantForAutofill(), isImportantForAutofill(), setAutofillHints() และ setImportantForAutofill()
  • Leanback จะได้รับฟีเจอร์ใหม่ๆ และการปรับปรุง รวมถึงจะไม่มีคลาสที่เลิกใช้งานแล้วบางคลาส เช่น
    • Picker สามารถใช้ตัวคั่นที่แตกต่างกันระหว่างแต่ละคอลัมน์ได้แล้ว โดยใช้วิธี setSeparators()
    • เพิ่ม DiffCallback เพื่ออนุญาตให้ ArrayObjectAdapter ใช้ประโยชน์จากเอาต์พุต ที่ DiffUtil จัดหาให้
    • เพิ่มโครงสร้างพื้นฐานเพื่อรองรับมีเดียเพลเยอร์ที่มีการควบคุมแบบแปรผัน เพิ่มการควบคุมที่ไม่บังคับสำหรับการกรอไปข้างหน้า เล่นซ้ำ สุ่ม ถัดไป ก่อนหน้า และกรอกลับ
    • การนำ MediaControllerGlue, PlaybackControlGlue, PlaybackControlSupportGlue และ PlaybackOverlayFragment ออก
  • สำหรับการทดสอบ ระบบจะพอร์ตยูทิลิตี PollingCheck จาก CTS ของ AOSP โดยจะสำรวจ เพื่อให้เงื่อนไขเกิดขึ้นภายในกรอบเวลาที่กำหนด
  • เพิ่มโครงสร้างพื้นฐานเพื่อรองรับสิทธิ์รันไทม์ใน Instant App สำหรับ Android 5.0 โดยใช้ PermissionCompatDelegate
  • ตอนนี้รองรับแท็บที่กำหนดเองที่เชื่อถือได้แล้ว พร้อมด้วยความสามารถในการกำหนดความสัมพันธ์ระหว่างแอปพลิเคชันกับ URI ต้นทาง
  • การรองรับโหมดแอมเบียนท์ของ Android Wear จะง่ายขึ้นเมื่อใช้ AmbientMode headless fragment ซึ่งยังทำให้การรองรับโหมดแอมเบียนท์ ใช้ได้กับส่วนประกอบของสถาปัตยกรรมด้วย
  • ทีม Wear ต้องการทราบความคิดเห็นของนักพัฒนาแอปเกี่ยวกับการเปลี่ยนแปลงที่สำคัญนี้ ดูข้อมูลเพิ่มเติมได้ที่บันทึกประจำรุ่นของ Android Wear
  • เราได้นำคลาสที่เลิกใช้งานแล้วบางคลาสออกเนื่องจากเราจะเลิกใช้ API เก่าก่อนเวอร์ชัน 14 เช่น android.support.v7.NotificationCompat (ใช้ NotificationCompat เวอร์ชัน 4 แทน) KeyEventCompat, ParallelExecutorCompat และ SearchViewCompat
  • ตอนนี้ค่าคงที่ของข้อมูลเมตาของไฟล์ Manifest ของ Wear ที่ย้ายข้อมูลพร้อมใช้งานแล้วผ่าน android.support.wear.utils.MetadataConstants
  • ตอนนี้การรองรับโหมดแอมเบียนท์พร้อมใช้งานสำหรับกิจกรรมทั้งหมดแล้ว ไม่ใช่แค่ WearableActivity ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิง AmbientMode
  • RoundedDrawable รองรับ XML inflation แล้ว

การแก้ไขข้อบกพร่อง

  • แอปพลิเคชันขัดข้องกับไลบรารีการสนับสนุน 27 และแบบอักษรที่ดาวน์โหลดได้
  • แบบอักษรที่ดาวน์โหลดไม่ได้ใช้งานกับโปรเจ็กต์ใหม่ที่สร้างขึ้นหลังจากอัปเดต SDK
  • API ของ SpeechRecognizer ใช้งานไม่ได้ในการอัปเกรดล่าสุด
  • ข้อขัดข้องที่เกี่ยวข้องกับ Fragment ระหว่างการวาดหลังจากนำ View ที่เคลื่อนไหวออก
  • การเล่นสื่อของ support-leanback-demos ใช้ไม่ได้
  • Android Support Library จะเพิ่ม <meta-data> ลงในไฟล์ Manifest
  • FontResourcesParserCompat ควรเข้าใจแอตทริบิวต์ android:
  • Leanback Glue ไม่รองรับปุ่มหยุดชั่วคราว
  • สัญลักษณ์ที่ยังไม่ได้รับการแก้ไขใน IDE เมื่อหลายแพ็กเกจใช้ รหัสอาร์ติแฟกต์เดียวกัน
  • Null Pointer Exception ใน CarExtender
  • ตั้งค่า PlaybackState ในโหมดสุ่ม / เล่นซ้ำไม่ถูกต้องหลังจากสร้าง MediaController
  • โปสเตอร์เริ่มต้นของคลัสเตอร์ห้องสมุดจะเลื่อนไปยังคลัสเตอร์ถัดไปขณะนำทาง
  • ข้อมูลเมตาของการ์ดวิดีโอแนะนำถูกตัดออก
  • IllegalArgumentException ที่ RecyclerView.attachViewToParent()
  • ClassNotFoundException เมื่อเลิกมาร์กเชลล์ SavedState (ปัญหา AOSP 37133281)
  • โฟกัสติดอยู่ใน RecyclerView
  • แก้ไข ANR ใน Leanback LayoutManager

การเปิดตัวการแก้ไข 26.1.0

(กันยายน 2017)

รุ่นนี้เป็นรุ่นพิเศษที่ผสานรวม Support Library กับ Lifecycles จาก Architecture Components หากไม่ได้ใช้ไลบรารี Lifecycle คุณไม่จำเป็นต้องอัปเดตจากเวอร์ชัน 26.0.2 ดูข้อมูลเพิ่มเติมได้ที่บันทึกประจำรุ่นของ สถาปัตยกรรม คอมโพเนนต์

การเปลี่ยนแปลงที่สำคัญ

การเปิดตัวการแก้ไข 26.0.2

(สิงหาคม 2017)

การแก้ไขข้อบกพร่อง

  • ไอคอนเมนูจะแบนใน Support Library 26.0.0
  • GuidedAction.multilineDescription ทำงานไม่ถูกต้องกับ Leanback

การเปิดตัวการแก้ไข 26.0.1

(สิงหาคม 2017)

การแก้ไขข้อบกพร่อง

  • FontCompat 26.0.0 ขัดข้องในอุปกรณ์ O-MR1
  • 26.0.0 Design Support Library ไม่ควรรวมการรองรับ multidex (ปัญหา 63999442)
  • ตอนนี้ AppBarLayout มีระยะเว้นด้านซ้าย 300 พิกเซลตั้งแต่เวอร์ชัน 26.0.0
  • การนำทาง PlaybackTransportControl ไม่ทำงาน
  • Fragment.onCreateView จะเรียกใช้ก่อนที่ onCreate จะเสร็จสิ้น
  • android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v4.media.MediaMetadataCompat

การเปิดตัวการแก้ไข 26.0.0

(กรกฎาคม 2017)

สำคัญ: ตอนนี้ไลบรารีการสนับสนุนพร้อมให้บริการแล้ว ผ่านที่เก็บ Maven ของ Google คุณไม่จำเป็นต้องดาวน์โหลดที่เก็บข้อมูล support จาก SDK Manager ดูข้อมูลเพิ่มเติมได้ที่ การตั้งค่าไลบรารีการสนับสนุน

การเปลี่ยนแปลงที่สำคัญ

  • เราได้เพิ่มเวอร์ชัน SDK ขั้นต่ำเป็น 14 ด้วยเหตุนี้ API หลายรายการ ที่มีไว้เพื่อความเข้ากันได้กับ API ระดับก่อน 14 เท่านั้นจึงถูก เลิกใช้งาน ไคลเอ็นต์ของ API เหล่านี้ควรย้ายข้อมูลไปยังเฟรมเวิร์กที่เทียบเท่า ตามที่ระบุไว้ในหน้าอ้างอิงของ API ที่เลิกใช้แล้วแต่ละรายการ
  • ไลบรารี UI ของ Wear มีคลาสที่จะช่วยคุณใช้รูปแบบและเลย์เอาต์ที่ทำงานบนอุปกรณ์ Wear ได้ ดูข้อมูลเพิ่มเติมได้ที่ การใช้ไลบรารี UI ของ Wear
  • เราเลิกใช้งานโมดูลเปอร์เซ็นต์การสนับสนุนแล้ว ไคลเอ็นต์ของโมดูลนี้ควรย้ายข้อมูลไปยัง วิดเจ็ตConstraintLayoutใหม่ ซึ่งมีให้ใช้งานเป็นอาร์ติแฟกต์แยกต่างหากใน SDK Manager
  • android.support.v7.app.NotificationCompat และคลาสที่เกี่ยวข้อง เลิกใช้งานแล้วและจะถูกนำออกในรุ่นต่อๆ ไป
    • โปรดใช้ NotificationCompat.Builder แทน v7.app.NotificationCompat.Builder ฟังก์ชันที่ ก่อนหน้านี้ต้องใช้ตัวสร้าง AppCompat v7 ตอนนี้ได้รวม เข้ากับตัวสร้าง Compat v4 แล้ว
    • DecoratedCustomViewStyle ได้ย้ายไปอยู่ในแพ็กเกจ android.support.v4.app แล้ว
    • MediaStyle และ DecoratedMediaCustomViewStyle ตอนนี้เป็นส่วนหนึ่งของไลบรารี media-compat และอยู่ในแพ็กเกจ android.support.v4.media.app

API ใหม่

  • แฟล็กบูลีนใหม่ fastScrollEnabled สำหรับ RecyclerView หากเปิดใช้ คุณต้องตั้งค่า fastScrollHorizontalThumbDrawable, fastScrollHorizontalTrackDrawable, fastScrollVerticalThumbDrawable และ fastScrollVerticalTrackDrawable

ความแตกต่างของ API

การแก้ไขข้อบกพร่อง

  • วนซ้ำไปเรื่อยๆ ใน RecyclerView.toString()
  • ResourceNotFoundException เมื่อเรียกใช้โปรเจ็กต์ Kotlin ใน AVD ของ API 16 หลังจาก อัปเกรดเป็น Canary 6
  • java.lang.AssertionError ในมุมมองการออกแบบที่มี Support Library 26.0.0-beta2
  • ตัวอย่างเลย์เอาต์ของ Android Studio ใช้งานไม่ได้สำหรับวิดเจ็ตไลบรารีการสนับสนุน
  • ระบบจะละเว้น Preference.setSingleLineTitle() หากไม่ได้สร้าง Preference ด้วยแอตทริบิวต์
  • คำอธิบายประกอบ "ตั้งแต่" ของ DAC ไม่ถูกต้องสำหรับการแก้ไข 25.3.0 / 25.4.0 ของ Support Library
  • ResourcesCompat.getFont() ส่งข้อยกเว้น
  • ชื่อแถบเครื่องมือไม่ได้อยู่ในแบบอักษรตัวหนา
  • การปรับขนาดอัตโนมัติด้วย maxLines ทำให้เกิดผลลัพธ์ที่ไม่คาดคิด
  • NullPointerException ใน TextView.checkForRelayout()
  • AppCompatTextViewAutoSizeHelper.setRawTextSize() เรียกใช้ requestLayout() ระหว่างเลย์เอาต์
  • EmojiAppCompatTextView ขัดข้อง
  • TextView ที่ปรับขนาดอัตโนมัติจะไม่ปรับโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงข้อความ
  • หน้าจอเสียหายใน Instacart
  • UnsupportedOperationException ใน MenuItemCompat
  • NotificationCompat ไม่ได้แยกการดำเนินการใน API 24 ขึ้นไปอย่างสมบูรณ์
  • ปัญหาการยึด CoordinatorLayout เมื่ออัปเดตเลย์เอาต์