หน้านี้ให้รายละเอียดเกี่ยวกับการเปิดตัวแพ็กเกจไลบรารีการสนับสนุน ล่าสุด สำหรับรุ่นก่อนหน้า โปรดดู ที่เก็บถาวรการแก้ไขไลบรารีการสนับสนุน
เวอร์ชันที่ใช้งานจริง 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 ดูข้อมูลเพิ่มเติมได้ที่บันทึกประจำรุ่นของ สถาปัตยกรรม คอมโพเนนต์
การเปลี่ยนแปลงที่สำคัญ
Fragment
และFragmentActivity
(คลาสฐานสำหรับAppCompatActivity
) จะใช้LifecycleOwner
อินเทอร์เฟซจาก Architecture Components แล้ว
การเปิดตัวการแก้ไข 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 เมื่ออัปเดตเลย์เอาต์