Lưu trữ bản sửa đổi thư viện hỗ trợ

Trang này cung cấp thông tin chi tiết về các bản phát hành gói Thư viện hỗ trợ cũ. Đối với các bản phát hành Thư viện hỗ trợ gần đây nhất, hãy xem phần Các bản sửa đổi gần đây về Thư viện hỗ trợ.

Bản sửa đổi 26.0.0 Beta 2

(Tháng 6 năm 2017)

Vui lòng lưu ý rằng 26.0.0-beta2 là phiên bản phát hành trước. Giao diện API có thể thay đổi và không nhất thiết phải bao gồm các tính năng hoặc bản sửa lỗi từ các phiên bản Thư viện hỗ trợ ổn định mới nhất.

Lưu ý quan trọng: Các thư viện hỗ trợ hiện đã có trong kho lưu trữ Maven của Google. Bạn không cần tải kho lưu trữ hỗ trợ xuống từ Trình quản lý SDK. Để biết thêm thông tin, hãy xem phần Thiết lập thư viện hỗ trợ.

API mới

Điểm khác biệt về API

Sửa lỗi

  • Việc ngừng phát triển SDK Android O khiến văn bản in nghiêng trong TextView
  • Ngoại lệ về con trỏ rỗng khi kết nối với MediaBrowserServiceCompat
  • TextInputLayout phải đặt gợi ý về onProvideAutofillStructure()
  • Tràn ngăn xếp khi sử dụng tính năng tự động định kích thước của TextView trên O

Bản sửa đổi 26.0.0 Beta 1

(Tháng 5 năm 2017)

Xin lưu ý rằng 26.0.0-beta1 là phiên bản phát hành trước. Giao diện API có thể thay đổi và không nhất thiết phải bao gồm các tính năng hoặc bản sửa lỗi từ các phiên bản Thư viện hỗ trợ ổn định mới nhất.

Lưu ý quan trọng: Các thư viện hỗ trợ hiện đã có trong kho lưu trữ Maven của Google. Bạn không cần tải kho lưu trữ hỗ trợ xuống từ Trình quản lý SDK. Để biết thêm thông tin, hãy xem phần Thiết lập thư viện hỗ trợ.

Nội dung thay đổi quan trọng:

  • FragmentActivity.setSupportMediaController()FragmentActivity.getSupportMediaController() đã bị xoá. Vui lòng sử dụng các phương thức MediaControllerCompat.setMediaController()MediaControllerCompat.getMediaController() tĩnh mới.
  • BottomNavigationView nay gọi onNavigationItemReselected() khi một mục đã chọn được chọn, thay vì gọi onNavigationItemSelected().
  • Mọi thực thể của phương thức findViewById() hiện trả về <T extends View> T thay vì View. Thay đổi này sẽ có những tác động sau:
    • Điều này có thể dẫn đến việc mã hiện có hiện có loại dữ liệu trả về không rõ ràng, chẳng hạn như nếu có cả someMethod(View)someMethod(TextView) đều nhận kết quả của lệnh gọi đến findViewById().
    • Khi sử dụng ngôn ngữ nguồn Java 8, yêu cầu phải truyền rõ ràng tới View khi loại dữ liệu trả về không bị hạn chế (ví dụ: assertNotNull(findViewById(...)).someViewMethod())).
    • Bạn cần cập nhật loại dữ liệu trả về cho các trường hợp ghi đè các phương thức findViewById() không phải cuối cùng (ví dụ: Activity.findViewById()).

API mới

  • FragmentManagerFragment có một phương thức isStateSaved() cho phép truy vấn xem một giao dịch có được phép hay không mà không bị mất trạng thái. Điều này đặc biệt hữu ích khi cần kiểm tra khi xử lý sự kiện onClick() trước khi thực thi bất kỳ giao dịch nào.
  • Chuyển động đường dẫn được hỗ trợ trong AnimatedVectorDrawableCompat. Chuyển động trong đường dẫn cho phép một trình tạo ảnh động đối tượng thay đổi hai thuộc tính cùng lúc dựa trên một đường dẫn; đường dẫn được chỉ định là android:pathData trong XML của trình tạo ảnh động).
  • Ảnh động dựa trên vật lý:
    • FlingAnimation mới hỗ trợ tạo ảnh động với tốc độ ban đầu và giảm tốc độ mượt mà.
    • Các lớp con của DynamicAnimation hỗ trợ tạo ảnh động thuộc tính tuỳ chỉnh cho mọi đối tượng.
    • Cả SpringAnimationFlingAnimation hiện đều có thể tạo ảnh động cho một giá trị số thực mà không cần liên kết với View hoặc Object.

    Để biết thêm thông tin, hãy xem trang xem trước Ảnh động vào mùa xuânẢnh động nhanh.

  • Hỗ trợ phông chữ trong XML:
    • ResourcesCompat.getFont cho phép tải tài nguyên phông chữ (bao gồm cả XML bộ phông chữ) có thể được dùng với TextView.setTypeface().
    • Khi sử dụng AppCompat, TextView hỗ trợ chỉ định tài nguyên phông chữ hoặc XML họ phông chữ qua thuộc tính XML android:fontFamily.
    • Sử dụng bộ phông chữ XML để tạo bộ phông chữ với các biến thể về kiểu chữ và độ đậm. (Nếu bạn sử dụng các lớp thư viện hỗ trợ để thực hiện việc này, hãy dùng thuộc tính app: cũng như thuộc tính android:.)
  • Phông chữ có thể tải xuống:
    • FontsContractCompat mới cho phép bạn yêu cầu phông chữ từ trình cung cấp phông chữ thay vì nhóm các phông chữ đó trong ứng dụng của mình.
    • Bạn cũng có thể yêu cầu phông chữ trong XML và dùng trong bố cục.
  • Thư viện khả năng tương thích với biểu tượng cảm xúc:
    • EmojiCompat có thể xử lý một CharSequence nhất định và thêm EmojiSpans.
    • EmojiTextView và các tiện ích khác để hiển thị biểu tượng cảm xúc.
    • FontRequestEmojiCompatConfig để yêu cầu phông chữ biểu tượng cảm xúc từ trình cung cấp phông chữ.
  • Tự động định cỡ TextView:
    • Các phương thức mới trong TextViewCompat cũng như các thuộc tính XML để kiểm soát tính năng tự động định cỡ trong TextView.
  • Bộ điều khiển phát Leanback có hỗ trợ tìm kiếm:
    • PlaybackTransportRowPresenter mới hiển thị các nút điều khiển chế độ phát bằng thanh tua.
    • PlaybackTransportControlGlue mới hoạt động với PlaybackTransportRowPresenter và hỗ trợ tua.
    • Lớp cơ sở mới PlaybackSeekDataProvider cho ứng dụng để cung cấp hình thu nhỏ tua cho PlaybackTransportControlGlue.
  • Kho dữ liệu lựa chọn ưu tiên:
    • PreferenceDataStore nay cho phép bạn triển khai bộ nhớ lựa chọn ưu tiên của riêng mình, được thiết lập bằng các phương thức mới trong PreferencePreferenceManager.

Vấn đề đã biết

  • Khả năng tương thích với phông chữ và biểu tượng cảm xúc có thể tải xuống với Dịch vụ Google Play chỉ hoạt động trên Dịch vụ Google Play phiên bản 11 trở lên, hiện được cung cấp trong chương trình thử nghiệm của Dịch vụ Google Play.

Sửa lỗi

  • API MediaBrowserCompat.search() không hoạt động (Vấn đề AOSP) 262170)
  • ViewCompat.postInvalidateOnAnimation() gửi trường hợp ngoại lệ (Vấn đề AOSP 80146)
  • onActivityCreated() gọi các mảnh trong Hoạt động đã bị huỷ bỏ
  • RecyclerView.isComputingLayout() phải trả về giá trị true trong quá trình tìm nạp trước
  • Khi quá trình chuyển đổi Fade bị gián đoạn và đảo ngược, View sẽ bắt đầu tạo ảnh động từ đầu. (Đã chuyển bản sửa lỗi từ Khung Android.)
  • Transition.Fade bỏ qua phiên bản alpha ban đầu của View (vấn đề về AOSP (Dự án nguồn mở Android) 221820)

Bản sửa đổi 26.0.0 Alpha 1

(Tháng 3 năm 2017)

Vui lòng lưu ý rằng 26.0.0-alpha1 là phiên bản phát hành trước. Giao diện API có thể thay đổi và không nhất thiết phải bao gồm các tính năng hoặc bản sửa lỗi từ các phiên bản Thư viện hỗ trợ ổn định mới nhất.

Nội dung thay đổi quan trọng:

Lưu ý: Phiên bản SDK tối thiểu đã tăng lên 14. Do đó, nhiều API chỉ tồn tại cho khả năng tương thích API < 14 đã không được dùng nữa. Các ứng dụng của các API này cần chuyển sang các API tương đương với khung như đã nêu trên trang tham khảo cho từng API không dùng nữa.

  • Mô-đun support-percent không còn được dùng nữa. Các ứng dụng của mô-đun này nên di chuyển sang tiện ích ConstraintLayout mới (được cung cấp dưới dạng một cấu phần phần mềm riêng trong Trình quản lý SDK).
  • Mô-đun support-fragment không còn phần phụ thuộc trên mô-đun support-media-compat.

API mới

Nhiều lớp, phương thức và hằng số mới được thêm vào để hỗ trợ khả năng tương thích ngược cho các API nền tảng được thêm vào Bản xem trước O.

  • IME_FLAG_NO_PERSONALIZED_LEARNING: IME có thể theo dõi cờ "không học" cho các ứng dụng có chế độ riêng tư, chẳng hạn như trình duyệt. Tính năng này giúp các IME biết được liệu một ứng dụng có đang ở chế độ riêng tư hay không. Nhờ đó, chúng có thể vô hiệu hoá chức năng học tập hoặc chức năng thích ứng khi ứng dụng đang ở chế độ đó.

Để biết danh sách đầy đủ các thay đổi về API từ phiên bản 25.2.0 đến 26.0.0-alpha1, hãy xem báo cáo về sự khác biệt của API của thư viện hỗ trợ.

Sửa lỗi

  • Trong một số trường hợp, ảnh động AutoTransition đơn giản có thể bị gián đoạn do khung hiển thị "nhảy". (Vấn đề về AOSP (Dự án nguồn mở Android) 221816)

Bản sửa đổi 25.4.0

(Tháng 6 năm 2017)

Lưu ý quan trọng: Các thư viện hỗ trợ hiện đã có trong kho lưu trữ Maven của Google. Bạn không cần tải kho lưu trữ hỗ trợ xuống từ Trình quản lý SDK. Để biết thêm thông tin, hãy xem phần Thiết lập thư viện hỗ trợ.

Nội dung thay đổi quan trọng:

  • executePendingTransactions(), commitNow(), popBackStackImmediate() và các lệnh gọi giao dịch tương tự không được phép trong khi FragmentManager thay đổi trạng thái. Việc thực thi giao dịch của người đăng ký lại là không an toàn và FragmentManager hiện thực thi việc này trong khi trạng thái thay đổi.
  • Đồng thời với bản phát hành thư viện hỗ trợ này, chúng tôi cũng sẽ phát hành multidex phiên bản 1.0.2. Phiên bản này bao gồm những thay đổi quan trọng sau đây:
    • Cho phép multidex của tệp APK đo lường.
    • Ngừng sử dụng MultiDexTestRunner (nên dùng AndroidJUnitRunner).
    • Tăng cường khả năng bảo vệ trước một số hoạt động quản lý trích xuất tệp lưu trữ không hiệu quả của ứng dụng.
    • Sửa lỗi có thể khiến các tệp tạm thời bị bỏ qua.
    • Giúp cài đặt nhanh hơn khi được thực hiện trong quy trình đồng thời.
    • Sửa lỗi cài đặt trên API 19 và 20.

API mới và API đã sửa đổi

AnimatedVectorDrawableCompat hỗ trợ phương pháp biến đổi đường dẫn và nội suy đường dẫn. Việc biến đổi đường dẫn cho phép các hình dạng thay đổi từ một đường dẫn (được chỉ định là android:valueFrom) sang một đường dẫn khác (được chỉ định là android:valueTo), nhằm cung cấp các hiệu ứng hình ảnh phức tạp và hấp dẫn. Loại nội suy đường dẫn cho phép chỉ định bộ nội suy cho AnimatedVectorDrawableCompat dưới dạng đường dẫn (được chỉ định là android:pathData trong XML của bộ nội suy).

Điểm khác biệt về API

Vấn đề đã khắc phục

  • Ngoại lệ về con trỏ rỗng khi kết nối với MediaBrowserServiceCompat
  • API MediaBrowserCompat.search() không hoạt động (Vấn đề AOSP 262170)
  • Cuộc gọi lại BrowseFragment onItemClicked bị hỏng trong 25.3.0
  • NullPointerException khi cuộn lên và xuống trong VerticalGridView trong 25.3.1
  • ClassCastException trong SimpleArrayMap.allocArrays()

Bản sửa đổi 25.3.1

(Tháng 3 năm 2017)

Vấn đề đã khắc phục

  • SwitchCompat yêu cầu SDK tối thiểu là phiên bản 14 trở lên. (Vấn đề AOSP (Dự án nguồn mở Android) 251302)
  • Ảnh động dựa trên vật lý updateListener sẽ bỏ qua khung hình đầu tiên.
  • Ảnh động nhãn BottomNavigationView bị lỗi.

Bản sửa đổi 25.3.0

(Tháng 3 năm 2017)

Nội dung thay đổi quan trọng:

Siêu dữ liệu phiên bản của Thư viện hỗ trợ sẽ tự động được thêm vào AndroidManifest.xml khi tạo bản dựng từ Gradle. Điều này giúp đơn giản hoá việc theo dõi các phiên bản trong các bản dựng công khai. Ví dụ:

<meta-data android:name="android.support.VERSION" android:value="25.3.0" />

Ngừng sử dụng

Một số phương thức và lớp không còn được dùng trong bản phát hành này. Các API không dùng nữa này sẽ bị xoá trong phiên bản trong tương lai và nhà phát triển nên di chuyển khỏi chúng. Để biết thêm thông tin về cách di chuyển khỏi một API cụ thể, hãy tham khảo tài liệu của API đó.

ExifInterface
Phương thức boolean getLatLong(float[]) không được dùng nữa. Thay vào đó, hãy sử dụng phương thức mới getLatLong(). Phương thức này không nhận đối số và trả về double[].
mediacompat
PlaybackStateCompat.Builder.setErrorMessage(CharSequence) không được dùng nữa. Thay vào đó, hãy sử dụng phương thức mới setErrorMessage(int, CharSequence). Phương thức này được truyền một mã lỗi và một nội dung mô tả không bắt buộc.
EXTRA_SUGGESTION_KEYWORDS không được dùng nữa. Thay vào đó, hãy sử dụng chức năng tìm kiếm MediaBrowserCompat.
v7.recyclerview
LinearLayoutManager.getInitialItemPrefetchCount() đổi tên thành LinearLayoutManager.getInitialPrefetchItemCount(). Tên cũ vẫn được hỗ trợ nhưng sẽ bị xoá trong bản phát hành sau này.

API mới và API đã sửa đổi

appcompat-v7
Phương thức mới ActionBarDrawerToggle.setDrawerSlideAnimationEnabled(boolean) giúp đơn giản hoá việc tắt ảnh động của biểu tượng bật/tắt ngăn điều hướng.
customtabs
Bổ sung tính năng hỗ trợ cho các kênh nhắn tin. Hãy xem tài liệu tham khảo về CustomTabsService.requestPostMessageChannel()CustomTabsService.postMessage() để biết thông tin chi tiết.
dynamic-animation
Thư viện ảnh động mới dựa trên vật lý, cung cấp một bộ API để tạo ảnh động phản ứng linh hoạt với hoạt động đầu vào của người dùng.
leanback-v17
Thêm tính năng hỗ trợ cho nền thị sai. Hãy xem tài liệu tham khảo về Parallax để biết thông tin chi tiết.
Thêm tiện ích TimePicker để chọn thời gian trên giao diện TV.
mediacompat
Bổ sung chức năng tìm kiếm. Hãy xem tài liệu tham khảo về MediaBrowserCompat.search()MediaBrowserServiceCompat.onSearch() để biết thông tin chi tiết.
Bổ sung tính năng hỗ trợ các chế độ lặp lại và trộn bài. Hãy xem tài liệu tham khảo về MediaSessionCompat.setRepeatMode()setShuffleModeEnabled() để biết thông tin chi tiết.

Vấn đề đã khắc phục

Bản sửa đổi 25.2.0

(Tháng 2 năm 2017)

Những thay đổi quan trọng

Vấn đề đã khắc phục

  • Bản phát hành này khắc phục một vấn đề nghiêm trọng về trình định tuyến nội dung nghe nhìn, trong đó việc sử dụng thiết bị A2DP và các API định tuyến nội dung nghe nhìn có thể khiến thiết bị không phản hồi và cần phải khởi động lại.
  • Lớp FragmentManager.FragmentLifecycleCallbacks hiện ở dạng tĩnh.

Vấn đề đã khắc phục

  • Khi hiển thị bản trình bày bằng tính năng phản chiếu màn hình, thiết bị sẽ bị ngắt kết nối khỏi Wi-Fi
  • Nút nội dung đa phương tiện không xử lý đúng cách các ứng dụng đa phương tiện không tự đăng ký với setMediaButtonReceiver()
  • Lỗi VectorDrawable với tài nguyên chuỗi (vấn đề về AOSP (Dự án nguồn mở Android) 232407)
  • TextInputLayout phủ gợi ý và văn bản nếu văn bản được đặt bằng XML (vấn đề AOSP 230171)
  • Rò rỉ bộ nhớ trong MediaControllerCompat (vấn đề về AOSP (Dự án nguồn mở Android) 231441)
  • RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback() lỗi
  • RecyclerView gặp sự cố khi tái chế phần tử giữ khung hiển thị (vấn đề AOSP 225762)
  • getAllowGeneratedReplies() trả về giá trị sai (false) cho các hành động bên trong WearableExtender

Bản sửa đổi 25.1.1

(Tháng 1 năm 2017)

Quan trọng: Có một lỗi đã biết trong lớp android.support.v7.media.MediaRouter trong bản sửa đổi 25.1.1 và 25.1.0 của Thư viện hỗ trợ. Nếu ứng dụng của bạn sử dụng MediaRouter phiên bản 7, bạn nên cập nhật lên Bản sửa đổi Thư viện hỗ trợ 25.2.0 để khắc phục lỗi này.

Những thay đổi quan trọng

  • Giờ đây, các giao dịch mảnh có thể được tối ưu hoá trong và trên các giao dịch. Việc tối ưu hoá các hoạt động giao dịch mảnh có thể loại bỏ các thao tác huỷ. Ví dụ: giả sử hai giao dịch được thực thi cùng lúc, một giao dịch thêm một mảnh A và giao dịch thứ hai thay thế mảnh A bằng mảnh B. Trong trường hợp này, thao tác đầu tiên có thể bị huỷ và chỉ có mảnh B được thêm vào. Điều đó có nghĩa là mảnh A có thể không trải qua vòng đời tạo/phá huỷ.

    Tác dụng phụ của tính năng tối ưu hoá này là các mảnh có thể thay đổi trạng thái không theo thứ tự dự kiến. Ví dụ: giả sử một giao dịch thêm mảnh A, giao dịch thứ hai thêm mảnh B, sau đó giao dịch thứ ba xoá mảnh A. Nếu không tối ưu hoá, phân mảnh B có thể dự kiến trong khi đang được tạo, phân mảnh A cũng sẽ tồn tại vì phân mảnh A sẽ bị xoá sau khi phân mảnh B được thêm vào. Với tính năng tối ưu hoá, mảnh B không thể chắc chắn rằng mảnh A sẽ tồn tại khi B đang được tạo, vì tính năng tối ưu hoá có thể xoá và tạo mảnh A.

    Tính năng tối ưu hoá này bị tắt theo mặc định. Để bật tính năng tối ưu hoá, hãy gọi FragmentTransaction.setAllowOptimization(true).

  • Giờ đây, các mảnh có thể trì hoãn các hiệu ứng chuyển đổi và ảnh động cho đến khi sẵn sàng bằng cách sử dụng Fragment.postponeEnterTransition()Fragment.startPostponedEnterTransition(). API này tương tự như Activity.postponeEnterTransition()Activity.startPostponedEnterTransition() được dùng với tính năng Chuyển đổi hoạt động.

Vấn đề đã khắc phục

  • MediaSessionCompatTest không thành công với IllegalArgumentException
  • DetailsFragment.installTitleView() không được gọi trong phiên bản 25.1.0
  • Giao dịch mảnh duy trì chế độ xem ảo khi thoát (vấn đề AOSP 230679)
  • BottomNavigationView cần khoảng cách giữa biểu tượng mục và văn bản (vấn đề AOSP 230653)
  • Các trình nghe đã chọn bị thiếu trong PlaybackFragmentPlaybackSupportFragment mới
  • Tiêu điểm TextInputLayout không thay đổi đúng cách trong trình mô phỏng từ thư viện hỗ trợ phiên bản 25.1.0 (vấn đề AOSP) 230461)
  • Không thay thế được trình đơn của BottomNavigationView (vấn đề AOSP) 230343)
  • RecyclerViewStaggeredGridLayoutManager gặp sự cố với các mục trên toàn bộ trải nghiệm (vấn đề của AOSP (Dự án nguồn mở Android) 230295)
  • Sự cố trong MediaSessionCompat khi sử dụng setCallback(null)
  • PlaybackGlueHostOldPlaybackSupportGlueHostOld không thông báo các lệnh gọi lại khi hàng phát thay đổi
  • Ví dụ về PlaybackOverlayFragment /test không bắt đầu phát được
  • RecyclerViewFocusRecoveryTest không thành công trên API 15
  • Hàng "Ảnh chụp màn hình" được lấy tiêu điểm ở đầu màn hình
  • RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback() gặp sự cố trên API 15
  • setActions() trong onSubactionClicked() bị hỏng
  • RecyclerView gặp sự cố khi tái chế một số phần tử giữ khung hiển thị

Bản sửa đổi 25.1.0

(Tháng 12 năm 2016)

Quan trọng: Có một lỗi đã biết trong lớp android.support.v7.media.MediaRouter trong bản sửa đổi 25.1.1 và 25.1.0 của Thư viện hỗ trợ. Nếu ứng dụng của bạn sử dụng MediaRouter phiên bản 7, bạn nên cập nhật lên Bản sửa đổi Thư viện hỗ trợ 25.2.0 để khắc phục lỗi này.

Những thay đổi quan trọng

  • Ứng dụng của các tiện ích RecyclerView lồng nhau (ví dụ: danh sách cuộn theo chiều dọc của danh sách cuộn theo chiều ngang) có thể nhận được lợi ích đáng kể về hiệu suất bằng cách gợi ý cho trình quản lý bố cục của tiện ích RecyclerView bên trong số mục cần chuẩn bị trước khi cuộn trên màn hình. Gọi LinearLayoutManager.setInitialPrefetchItemCount(N), trong đó N là số khung hiển thị hiển thị của mỗi mục bên trong. Ví dụ: nếu các danh sách bên trong theo chiều ngang hiển thị tối thiểu 3,5 thành phần hiển thị cùng lúc, thì bạn có thể cải thiện hiệu suất bằng cách gọi LinearLayoutManager.setInitialPrefetchItemCount(4). Cách làm này cho phép RecyclerView tạo sớm tất cả các thành phần hiển thị phù hợp, trong khi RecyclerView bên ngoài đang cuộn, qua đó giúp giảm đáng kể tình trạng kết xuất gián đoạn trong quá trình cuộn.
  • Ngừng sử dụng FragmentActivity.setSupportMediaController()FragmentActivity.getSupportMediaController(). Vui lòng sử dụng các phương thức MediaControllerCompat.setMediaController()MediaControllerCompat.getMediaController() tĩnh mới.
  • Khi ứng dụng chỉ định sắc thái màu của tiện ích thông qua tính năng phủ màu của ứng dụng (ví dụ: appcompat:buttonTint), ứng dụng có trách nhiệm cung cấp tất cả các trạng thái cần thiết (chẳng hạn như "đã tắt", "đã nhấn", v.v.). Điều này nhất quán với cách chỉ định sắc thái màu của tiện ích khi sử dụng tính năng phủ màu khung.

API mới và API đã sửa đổi

Vấn đề đã khắc phục

  • Nút bật/tắt chế độ hiển thị mật khẩu không vượt qua quy trình kiểm tra khả năng hỗ trợ tiếp cận.
  • Appcompat không tuân theo state_enabled trên các thiết bị chạy phiên bản trước L.
  • Thêm cơ chế khôi phục tiêu điểm vào RecyclerView. Việc này cũng giúp khắc phục việc hỗ trợ các mảnh trước bị hỏng tiêu điểm khi sử dụng thao tác DPAD, chẳng hạn như trên các thiết bị Android TV.
  • Leanback: BrowseFragment gặp sự cố với tiêu đề bị tắt và bộ chuyển đổi trống.
  • Appcompat: AlertDialog quá rộng.
  • InputContentInfoCompat gọi requestPermission() khi cần gọi releasePermission().
  • MediaBrowserCompat lỗi.
  • CoordinatorLayout đo lường/bố trí các khung hiển thị khi chế độ hiển thị được đặt thành GONE.
  • Không thể phủ màu AnimatedVectorDrawableCompat ở API cấp 24 trở xuống
  • Thư viện Leanback gây ra các lỗi tìm lỗi mã nguồn giả
  • Thư viện Palette (Bảng khung hiển thị) đã gây ra thất bại trong kiểm thử ở mọi cấp độ API
  • RecyclerView lượt kiểm thử không thành công trên Leanback
  • RecyclerView gặp sự cố khi tái chế phần tử giữ khung hiển thị (vấn đề AOSP 225762)
  • Fragment.onDestroy() không được gọi cho mảnh trong ngăn xếp lui
  • Màn nền CollapsingToolbarLayout không được vẽ khi thu gọn
  • CoordinatorLayout.offsetChildByInset() gửi IllegalArgumentException
  • Tạo ảnh động cho các mục RecyclerView sẽ tách ra RecyclerView bên trong, ngăn các lượt tìm nạp trước trong tương lai
  • Không thể tìm nạp trước lồng nhau RecyclerView mục đã đính kèm
  • Dữ liệu tìm nạp trước cho các mục RecyclerView lồng nhau sẽ bị loại bỏ trong bố cục đầu tiên
  • Quá trình tìm nạp trước RecyclerView sẽ không thành công nếu 2 sự kiện kéo đến ở cùng một vị trí
  • RecyclerView nên tạo bố cục theo suy đoán trong khi RenderThread đang kết xuất
  • Các tài nguyên màu được định cấu hình vào ban đêm được chuyển đổi thành Đối tượng có thể vẽ không phải lúc nào cũng được xoá đúng cách khỏi bộ nhớ đệm Tài nguyên
  • FloatingActionButton: Việc thiết lập NềnTintList theo phương thức lập trình không hoạt động đúng cách (vấn đề AOSP 227428)
  • TextInputLayout: Phông chữ chưa được đặt cho ErrorView (vấn đề AOSP) 227803)
  • TextInputLayout luôn quay về màu lỗi sáng dưới API 23 (Vấn đề AOSP 221992)
  • FloatingActionButton hiển thị khi được nhấn khi con trỏ rời khỏi

Danh sách đầy đủ các bản sửa lỗi công khai có trên Công cụ theo dõi lỗi của AOSP (Dự án nguồn mở Android).

Ngừng sử dụng

Một số phương thức và lớp không còn được dùng trong bản phát hành này. Những API không dùng nữa này sẽ bị xoá trong phiên bản sau này và nhà phát triển nên di chuyển khỏi chúng. Để biết thêm thông tin về cách di chuyển khỏi một API cụ thể, hãy tham khảo tài liệu của API đó.

Bản sửa đổi 25.0.1

(Tháng 11 năm 2016)

Vấn đề đã khắc phục

  • Theo mặc định, nút bật/tắt mật khẩu TextInputLayout sẽ bị tắt theo mặc định để tránh ghi đè một cách không cần thiết các đối tượng có thể vẽ cuối do nhà phát triển chỉ định. Bạn có thể bật tính năng này theo cách thủ công qua thuộc tính XML passwordToggleEnabled.
  • Các mục BottomNavigationView hiện là một dòng để phù hợp với thông số kỹ thuật của Material.
  • RecyclerView gặp sự cố trong quá trình tìm nạp trước nếu trình quản lý bố cục rỗng.
  • Độ cao BottomNavigationView hiện đã được đặt đúng cách. (Vấn đề về AOSP (Dự án nguồn mở Android) 226182)
  • BottomNavigationView gặp sự cố khi thêm các mục trong trình đơn theo phương thức lập trình. (Vấn đề về AOSP (Dự án nguồn mở Android) 225731)
  • Sửa lỗi thành phần kết hợp TextInputLayout có thể vẽ trái + phải. (Vấn đề AOSP 225836)
  • RecyclerView gặp sự cố khi tái chế phần tử giữ khung hiển thị. (Vấn đề về AOSP (Dự án nguồn mở Android) 225762)
  • Leanback: TalkBack thường nói từ "null" (rỗng) trong chế độ xem chia đôi màn hình.
  • RecyclerView: Các vấn đề về kết xuất trong Android Studio. (Vấn đề về AOSP (Dự án nguồn mở Android) 225753)
  • BottomNavigationView vẫn hiện mục trong trình đơn như đã chọn sau khi onNavigationItemSelected() trả về giá trị false. (Vấn đề về AOSP (Dự án nguồn mở Android) 225898)
  • ForwardListener sẽ gửi NoSuchMethodError. (Vấn đề AOSP) 225647)
  • TextInputEditText không hiển thị gợi ý trong chế độ trích xuất IME. (Vấn đề về AOSP (Dự án nguồn mở Android) 221880)

Danh sách đầy đủ các bản sửa lỗi công khai có trên Công cụ theo dõi lỗi của AOSP (Dự án nguồn mở Android).

Bản sửa đổi 25.0.0

(Tháng 10 năm 2016)

Nội dung thay đổi quan trọng:

  • Hàm khởi tạo ContextCompat đã được bảo vệ. Lớp này không được tạo thực thể công khai nhưng có thể được mở rộng bằng cách thư viện hỗ trợ nhắm đến các cấp độ API mới hơn.
  • Hàm khởi tạo ActivityCompat đã được bảo vệ. Lớp này không được tạo thực thể công khai nhưng có thể được mở rộng bằng cách thư viện hỗ trợ nhắm đến các cấp độ API mới hơn.
  • getReferrer(Activity) đã được đặt tĩnh.
  • Xoá android.support.design.widget.CoordinatorLayout.Behavior.isDirty(CoordinatorLayout, V). Bạn phải xoá mọi hoạt động triển khai ứng dụng của phương thức này.
  • Xoá android.support.v4.media.session.MediaSessionCompat.obtain(Context, Object). Bạn nên thay thế các trường hợp sử dụng bằng phương thức có tên phù hợp hơn fromMediaSession().
  • Xoá android.support.v4.media.session.MediaSessionCompat.QueueItem.obtain(Object). Bạn nên thay thế các trường hợp sử dụng bằng phương thức có tên phù hợp hơn MediaSessionCompat.QueueItem#fromQueueItem.
  • Xoá android.support.v7.widget.Space. Bạn nên thay thế các trường hợp sử dụng bằng android.support.v4.widget.Space.

API mới

  • Lớp android.support.design.widget.BottomNavigationView triển khai mẫu thanh điều hướng dưới cùng theo quy cách của Material Design.
  • Gói android.support.v13.view.inputmethod mới bao gồm các lớp để truy cập vào các tính năng của android.view.inputmethod.InputConnection được giới thiệu sau API cấp 13.
  • Lớp android.v7.widget.RecyclerView.DividerItemDecoration cung cấp phương thức triển khai cơ sở cho phần phân chia theo chiều dọc hoặc chiều ngang giữa các mục.
  • Các kiểu trang trí mới trong android.support.v7.app.NotificationCompat, DecoratedCustomViewStyleDecoratedMediaCustomViewStyle, các lớp phản chiếu được thêm vào API nền tảng 24.

Vấn đề đã khắc phục

Danh sách đầy đủ các bản sửa lỗi công khai có trên Công cụ theo dõi lỗi của AOSP (Dự án nguồn mở Android).

Bản sửa đổi 24.2.1

Tháng 9 năm 2016

Sửa các vấn đề:

Danh sách đầy đủ các bản sửa lỗi công khai có trên Công cụ theo dõi lỗi của AOSP (Dự án nguồn mở Android).

Bản sửa đổi 24.2.0

Tháng 8 năm 2016

Bản phát hành 24.2.0 có các thay đổi sau:

Lưu ý: Bản phát hành 24.2.0 sẽ loại bỏ khả năng hỗ trợ Android 2.2 (API cấp 8) trở xuống. Những lớp và phương thức chỉ tồn tại để phân phát các phiên bản hệ thống đó hiện được đánh dấu là không dùng nữa và không nên dùng nữa. Các lớp và phương thức không dùng nữa này có thể bị xoá trong bản phát hành sau này.

Phân tách Thư viện hỗ trợ v4

Với bản phát hành này, Thư viện hỗ trợ phiên bản 4 đã được chia thành nhiều mô-đun nhỏ hơn:

support-compat
Cung cấp trình bao bọc khả năng tương thích cho các API khung mới, chẳng hạn như Context.getDrawable()View.performAccessibilityAction().
support-core-utils
Cung cấp một số lớp tiện ích, chẳng hạn như AsyncTaskLoaderPermissionChecker.
support-core-ui
Triển khai nhiều thành phần liên quan đến giao diện người dùng, chẳng hạn như ViewPager, NestedScrollViewExploreByTouchHelper.
support-media-compat
Điều chỉnh cho phiên bản cũ các phần của khung nội dung đa phương tiện, bao gồm cả MediaBrowserMediaSession.
support-fragment
Điều chỉnh cho phiên bản cũ khung fragment (mảnh). Mô-đun này có các phần phụ thuộc trên support-compat, support-core-utils, support-core-uisupport-media-compat.

Để có khả năng tương thích ngược, nếu bạn liệt kê support-v4 trong tập lệnh Gradle, APK của bạn sẽ bao gồm tất cả các mô-đun này. Tuy nhiên, để giảm kích thước APK, bạn chỉ nên liệt kê các mô-đun cụ thể mà ứng dụng của bạn cần.

Bản cập nhật API

  • Các ứng dụng sử dụng Thẻ tuỳ chỉnh có thể kiểm soát việc có nên mở Ứng dụng tức thì hay không. (Lưu ý rằng Ứng dụng tức thì chưa được phát hành rộng rãi.) Để bật hoặc tắt Ứng dụng tức thì, hãy gọi CustomTabsIntent.Builder.setInstantAppsEnabled() hoặc chỉ định EXTRA_ENABLE_INSTANT_APPS. Theo mặc định, Thẻ tuỳ chỉnh sẽ bật Ứng dụng tức thì theo mặc định khi tính năng đó ra mắt.
  • TextInputLayout thêm tính năng hỗ trợ cho nút bật/tắt chế độ hiển thị mật khẩu từ thông số kỹ thuật của Material Design.
  • Gói android.support.transition mới điều chỉnh khung Transitions cho phiên bản cũ sang API cấp 14 trở lên. Để biết thêm thông tin, hãy xem tài liệu tham khảo về android.support.transition.
  • Thư viện hỗ trợ Thẻ tuỳ chỉnh hỗ trợ thêm việc sử dụng RemoteViews trong thanh công cụ phụ. Phương thức setToolbarItem() hiện có không được dùng nữa.
  • AppCompatResources thêm khả năng tải <vector> (trên API cấp 9 trở lên) hoặc <animated-vector> (trên API cấp 11 trở lên) từ một mã nhận dạng tài nguyên bằng cách sử dụng phương thức getDrawable() mới.
  • CoordinatorLayout hiện hỗ trợ xác định các khung hiển thị phần lồng ghép và chỉ định rằng các khung hiển thị khác sẽ né tránh các khung hiển thị phần lồng ghép. Điều này cho phép các ứng dụng sao chép các mẫu hành vi tương tự như cách FloatingActionButton di chuyển ra khỏi Snackbar, nhưng đối với mọi khung hiển thị con tuỳ ý. Để biết thêm thông tin, hãy xem tài liệu tham khảo về LayoutParams.insetEdge LayoutParams.dodgeInsetEdges.
  • Lớp DiffUtil mới có thể tính toán sự chênh lệch giữa hai tập hợp, đồng thời có thể gửi danh sách hoạt động cập nhật phù hợp để RecyclerView.Adapter sử dụng.
  • Thêm RecyclerView.OnFlingListener để hỗ trợ hành vi tuỳ chỉnh nhằm phản hồi các cử chỉ hất. Lớp SnapHelper cung cấp phương thức triển khai dành riêng cho chụp nhanh khung hiển thị con, còn lớp LinearSnapHelper mở rộng phương thức triển khai này để cung cấp hành vi chụp nhanh căn giữa tương tự như ViewPager.
  • Thư viện Thẻ tuỳ chỉnh hiện cho phép ứng dụng yêu cầu giao diện người dùng của trình duyệt chuẩn thay vì giao diện người dùng thẻ tuỳ chỉnh bằng cách gọi CustomTabsIntent.setAlwaysUseBrowserUI(). Hành vi này hữu ích trong trường hợp trình duyệt mặc định sử dụng giao diện người dùng thẻ tuỳ chỉnh nhưng người dùng đã bày tỏ sự ưu tiên đối với giao diện người dùng chuẩn của trình duyệt.

Thay đổi về hành vi

  • Nếu bạn sử dụng chức năng ngày/đêm của thư viện Appcompat, thì giờ đây, hệ thống sẽ tự động tạo lại hoạt động của bạn mỗi khi chế độ ngày/đêm thay đổi (do thời gian trong ngày hoặc do có lệnh gọi đến AppCompatDelegate.setLocalNightMode()).
  • Giờ đây, Snackbar sẽ vẽ phía sau thanh điều hướng nếu thanh trạng thái là trong suốt.

Thư viện MediaRouter

Thiết bị Bluetooth không còn được liệt kê là tuyến nội dung nghe nhìn nữa. Việc định tuyến âm thanh đến thiết bị Bluetooth hiện chỉ được kiểm soát ở cấp hệ thống Android.

Ngừng sử dụng

Các lớp và phương thức không dùng nữa sẽ bị xoá trong bản phát hành sau này. Bạn nên di chuyển khỏi các API này càng sớm càng tốt.

  • Một số phương thức trên các lớp sau chỉ bắt buộc đối với API 8 trở xuống và không nên dùng nữa. Thay vào đó, hãy sử dụng các phương thức triển khai khung.
    • android.support.v4.view.KeyEventCompat: Thay thế bằng KeyEvent
    • android.support.v4.view.MotionEventCompat: Sử dụng MotionEvent
    • android.support.v4.view.ViewCompat: Sử dụng View
    • android.support.v4.view.ViewConfigurationCompat: Sử dụng ViewConfiguration
  • Ngừng sử dụng AccessibilityServiceInfoCompat.getDescription() và thay bằng AccessibilityServiceInfoCompat.loadDescription() (trả về nội dung mô tả được bản địa hoá chính xác).
  • Bạn không nên tạo trực tiếp thực thể cho lớp ActivityCompat. Phương thức getReferrer(Activity) không tĩnh sẽ được chuyển thành tĩnh trong bản phát hành sắp tới.
  • Ngừng sử dụng CoordinatorLayout.Behavior.isDirty() và không còn được CoordinatorLayout gọi. Mọi cách triển khai, cũng như mọi lệnh gọi đến phương thức này, đều phải bị xoá.
  • Ngừng sử dụng MediaSessionCompat.obtain() và thay thế bằng phương thức fromMediaSession() được đặt tên phù hợp hơn.
  • Ngừng sử dụng MediaSessionCompat.QueueItem.obtain() và thay thế bằng phương thức fromQueueItem() được đặt tên phù hợp hơn.
  • Một số lớp trừu tượng đã ngừng hoạt động và được thay thế bằng các giao diện phản ánh sát hơn các lớp tương đương của khung.
  • Ngừng sử dụng CustomTabsSession.setToolbarItem() và thay thế bằng setSecondaryToolbarViews() dựa trên RemoteViews.

Sửa lỗi

Các vấn đề đã biết sau đây đã được khắc phục trong bản phát hành 24.2.0:

  • Đảm bảo chỉ báo SwipeRefreshLayout hiển thị khi setRefreshing(true) được gọi trước khi lượt đo lường đầu tiên (Vấn đề AOSP 77712)
  • Ngăn TabLayout nhấp nháy khi thay đổi trang (Vấn đề AOSP 180454)
  • Tránh ClassNotFoundException khi huỷ cấu trúc SavedState trên API cấp 11 trở xuống (Vấn đề AOSP 196430)

Danh sách đầy đủ các bản sửa lỗi công khai có trên Công cụ theo dõi lỗi của AOSP (Dự án nguồn mở Android).

Bản sửa đổi 24.1.1

Tháng 7 năm 2016

Sửa các vấn đề:

  • Khắc phục một vấn đề trong bản phát hành 24.1.0 làm ảnh hưởng đến các mã nhận dạng tài nguyên được chia sẻ giữa các thư viện hỗ trợ. Vấn đề này khiến các ứng dụng dựa vào thư viện hỗ trợ có tài nguyên (chẳng hạn như thiết kế và Appcompat) gặp phải vấn đề do mã nhận dạng tài nguyên không khớp.

Bản sửa đổi 24.1.0

Tháng 7 năm 2016

Các thay đổi đối với Thư viện hỗ trợ v4:

Sửa các vấn đề:

Bản sửa đổi 24.0.0

Tháng 6 năm 2016

Các thay đổi đối với Thư viện hỗ trợ v4:
  • Thêm Fragment.commitNow() cho lệnh xác nhận đồng bộ
  • Thêm NotificationCompat.MessagingStyle cho các cuộc trò chuyện nhiều bên
  • Thêm NotificationManagerCompat.areNotificationsEnabled()getImportance()
  • MediaSessionCompat nay phản ánh chức năng của MediaSession và không còn tự động gọi setMediaButtonReceiver() nữa

Lưu ý: Chỉ MediaBrowserServiceCompat trong phiên bản 24.0.0 mới tương thích chuyển tiếp với các phiên bản Android sau này ngoài API 24. Nếu bạn đang sử dụng các phiên bản trước, hãy cập nhật lên phiên bản này để đảm bảo khả năng tương thích.

Các thay đổi đối với thư viện Appcompat v7:
  • Hỗ trợ thêm tính năng tham chiếu các đối tượng ColorStateList theo chủ đề từ XML
Các thay đổi đối với Thư viện hỗ trợ thiết kế:
Các thay đổi đối với thư viện Leanback phiên bản 17:
  • Thêm OnboardingFragment để cung cấp lời chào mừng trong lần chạy đầu tiên và quy trình thiết lập
Các thay đổi cho thẻ tuỳ chỉnh:
  • Thêm tính năng hỗ trợ cung cấp hệ phân cấp RemoteViews cho thanh công cụ phụ
  • Thêm CustomTabsClient.connectAndInitialize() để khởi động một dòng

Bản sửa đổi 23.4.0

Tháng 5 năm 2016

Các thay đổi đối với Thư viện hỗ trợ v4:
  • Khắc phục vấn đề thêm các mảnh theo thứ tự không chính xác. (Vấn đề 206901)
  • Khắc phục vấn đề thanh ứng dụng không được vẽ sau khi cuộn ra ngoài màn hình. (Vấn đề 178037)
Các thay đổi đối với thư viện Appcompat v7:
Các thay đổi đối với Thư viện hỗ trợ thiết kế:
Các thay đổi đối với thư viện Vectơ vẽ được:

Bản sửa đổi 23.3.0

Tháng 4 năm 2016

Các thay đổi đối với Thư viện hỗ trợ v4:
  • Thêm AppLaunchChecker để giúp theo dõi cách người dùng chạy ứng dụng của bạn trước đây. hasStartedFromLauncher() cho bạn biết liệu người dùng đã khởi chạy ứng dụng của bạn từ màn hình chính trước đó hay chưa, hay ứng dụng chỉ mới được khởi động bằng cách khác (ví dụ: để xem các URL web cụ thể).
  • Khắc phục vấn đề rò rỉ bộ nhớ trong MediaBrowserServiceCompat.mConnections. (Vấn đề 205220)
  • Khắc phục vấn đề ViewPager không tính đến lề trang khi lật trang. (Vấn đề 203816)
  • Fragment.onRequestPermissionsResult() hiện được phân phối đến các mảnh con.
Các thay đổi đối với thư viện Appcompat v7:
Các thay đổi đối với thư viện mediarouter v7:
Các thay đổi đối với thư viện Lựa chọn ưu tiên phiên bản 7:
Các thay đổi đối với thư viện recyclerview phiên bản 7:
Các thay đổi đối với Thư viện hỗ trợ thiết kế:

Bản sửa đổi 23.2.1

Tháng 3 năm 2016

Các thay đổi đối với Thư viện hỗ trợ v4:
Các thay đổi đối với thư viện Appcompat v7:
  • Huỷ bỏ phần phụ thuộc trên thành phần vectơ để các nhà phát triển sử dụng thư viện appcompat không bị buộc phải sử dụng VectorDrawable và các cờ bản dựng liên kết với thư viện này.
  • Khắc phục vấn đề tương thích với Chế độ ban đêm và API cấp 23. (Lỗi 201910)
  • Khắc phục vấn đề tương thích với SwitchCompat và API cấp 7. (Lỗi 201942)
  • Khắc phục vấn đề lan truyền giá trị cấu hình trong các đối tượng Tài nguyên Vấn đề 201928
  • Khắc phục vấn đề về khả năng tương thích khiến nút huỷ android.support.v7.app.NotificationCompat.MediaStyle không xuất hiện trên API cấp 21 trở xuống. (Vấn đề 202156)
  • Khắc phục sự cố tương thích với AppCompatSpinner ở API cấp 21 trở xuống. (Vấn đề 202246)
  • Khắc phục vấn đề kiểu app:textAllCaps = "false" không hoạt động. (Vấn đề 202117)
  • Khắc phục sự cố khi khôi phục SearchView. (Vấn đề 201836)
  • Khắc phục sự cố rò rỉ bộ nhớ xảy ra khi phủ màu các tài nguyên có thể vẽ bằng AppCompat. (Vấn đề 202379)
  • Khắc phục vấn đề với KeyEvent ở API cấp 11 trở xuống. (Vấn đề 202939)
Các thay đổi đối với thư viện chế độ xem thẻ phiên bản 7:
Các thay đổi đối với thư viện recyclerview phiên bản 7:
Các thay đổi đối với thư viện mediarouter v7:
Các thay đổi đối với Thư viện Leanback phiên bản 17:
  • Khắc phục vấn đề với GridLayout.onAddFocusables() khiến bạn chọn sai mục.
  • Khắc phục vấn đề về việc các hành động GuidedStepFragment biến mất sau khi một hành động bị thu gọn.
Các thay đổi đối với Thư viện hỗ trợ thiết kế:
Các thay đổi đối với VectorDrawableCompat:
  • Khắc phục lỗi khi đọc sai biến cho android:tintMode. (Lỗi 201907)

Bản sửa đổi 23.2.0

Tháng 2 năm 2016

Các thay đổi đối với Thư viện hỗ trợ phiên bản 4:
  • Thêm MediaBrowserCompat để hỗ trợ MediaBrowserMediaBrowserServiceCompat để hỗ trợ MediaBrowserService. Tính năng này rất hữu ích khi kết nối dịch vụ nền của ứng dụng đa phương tiện với các thành phần giao diện người dùng, đồng thời tích hợp với Android Auto và Android Wear mà không yêu cầu API cấp 21 trở lên.
  • Hệ thống hiện gọi onActivityResult() cho một FragmentActivity lồng.
Các thay đổi đối với thư viện AppCompat phiên bản 7:
  • Thêm chức năng Chế độ ban đêm vào API cấp 14 trở lên. Chuyển đổi giữa Giao diện sáng Material và Giao diện tối của Material dựa trên thời gian trong ngày hoặc chế độ cài đặt dành riêng cho ứng dụng.
    • Bạn có thể tìm thấy chủ đề về ngày và đêm tại đây: <sdk>/extras/android/support/v7/appcompat/res/values/themes_daynight.xml
    • AppCompatDelegate.setDefaultNightMode(): đặt chế độ mặc định của ứng dụng bằng cách truyền một trong các hằng số sau:
      • MODE_NIGHT_AUTO
      • MODE_NIGHT_NO
      • MODE_NIGHT_YES
      • MODE_NIGHT_FOLLOW_SYSTEM
    • AppCompatDelegate.setLocalNightMode(): ghi đè chế độ cài đặt chế độ ban đêm cho thành phần ứng dụng cục bộ.
    • AppCompatDelegate.getDefaultNightMode(): trả về chế độ ban đêm mặc định.
Các thay đổi đối với thư viện mediarouter v7:
Các thay đổi đối với Thư viện hỗ trợ thiết kế:
  • Thêm tính năng hỗ trợ cho bảng dưới cùng. Trình bổ trợ tương tác BottomSheetBehavior cho phép khung hiển thị con của CoordinatorLayout hoạt động như một bảng dưới cùng. Lớp cơ sở BottomSheetCallback cung cấp các lệnh gọi lại để theo dõi các sự kiện của bảng dưới cùng.
Các thay đổi đối với thư viện hỗ trợ CustomTabs:
  • Giờ đây, Thẻ tuỳ chỉnh của Chrome cho phép các ứng dụng thêm thanh dưới cùng với các nút hành động ngoài nút hành động trên cùng hiện có.
  • CustomTabsIntent.Builder.addToolBarItem(): thêm nút hành động vào một thẻ tuỳ chỉnh. Bạn có thể dùng nút này để thêm nhiều nút.
  • CustomTabsSession.setToolBarItem(): cập nhật hình ảnh cho các mục trên thanh công cụ. Phương thức này sẽ chỉ thành công nếu được cung cấp một mã nhận dạng hợp lệ và phiên trình duyệt đang chạy ở nền trước.
Thêm thư viện hỗ trợ VectorDrawable:
  • Các lớp đã thêm:
    • VectorDrawableCompat
    • AnimatedVectorDrawableCompat
  • Bổ sung tính năng hỗ trợ cho các thành phần VectorDrawable vào các ứng dụng chạy trên API cấp 7 trở lên. Các thành phần AnimatedVectorDrawable cũng được hỗ trợ trên API cấp 11 trở lên. Thành phần vectơ có thể nhỏ hơn đáng kể so với thành phần hình ảnh và sẽ giúp giảm kích thước ứng dụng bằng cách giảm số lượng thành phần cần thiết để hỗ trợ nhiều màn hình thiết bị.
  • Thư viện này hiện là phần phụ thuộc của thư viện AppCompat phiên bản 7, cho phép các nhà phát triển và AppCompat dễ dàng sử dụng các vectơ vẽ được. Để sử dụng VectorDrawableCompat trong ImageButton hoặc ImageView, hãy dùng thuộc tính XML app:srcCompat hoặc phương thức setImageResource().
  • Để tiếp tục tham chiếu mã thuộc tính ở API cấp 20 trở xuống, hãy thêm cờ appt sau đây vào tệp build,gradle:
    • Nếu bạn đang dùng Trình bổ trợ Android cho Gradle 1.5.0 trở xuống, hãy thêm đoạn mã sau vào tệp build.gradle:
    • android {
        defaultConfig {
          // Stops the Gradle’s automatic rasterization of vectors
          generatedDensities = []
        }
         // Flag that tells aapt to keep the attribute ids
        aaptOptions {
          additionalParameters "--no-version-vectors"
        }
      }
      
    • Nếu bạn đang dùng Trình bổ trợ Android cho Gradle 2.0.0 trở lên, hãy thêm đoạn mã sau vào tệp build.gradle:
    • android {
        defaultConfig {
          vectorDrawables.useSupportLibrary = true
        }
      }
      
Các thay đổi đối với Thư viện Leanback phiên bản 17:
  • Thêm các tính năng mới vào GuidedStepFragment (một thành phần hướng dẫn người dùng về một quyết định hoặc một loạt các quyết định):
    • Đã thêm các thao tác của nút vào GuidedAction:
      • GuidedStepFragment.setButtonActions(): thiết lập một danh sách các nút GuidedAction mà người dùng có thể chọn trong khung hiển thị Thao tác.
    • Giờ đây, bạn có thể chỉnh sửa các trường nội dung mô tả:
      • GuidedAction.Builder.descriptionEditable(): khi chuyển true, đặt nội dung mô tả hành động thành có thể chỉnh sửa.
      • GuidedAction.getEditDescription(): trả về nội dung mô tả có thể chỉnh sửa dưới dạng CharSequence.
    • Thêm danh sách thả xuống gồm các hành động phụ:
      • GuidedAction.setSubActions(): đặt danh sách GuidedAction ở dạng trình đơn thả xuống gồm các hành động phụ.
  • Thêm tiện ích GuidedDatePickerAction cho chức năng DatePicker:
    • Ngày được chọn bằng cách sử dụng các cột năm, tháng và ngày, đồng thời có một phạm vi có thể tuỳ chỉnh.
    • GuidedDatePickerAction.Builder: lớp trình tạo cho đối tượng GuidedDatePickerAction.
    • GuidedDatePickerAction.Builder.datePickerFormat(String datePickerFormat): đặt định dạng ngày mong muốn bằng cách truyền String gồm ba ký tự thích hợp, ví dụ: “YMD” hoặc “MDY”. Ngoài ra, hãy dùng thuộc tính XML datePickerFormat.
Các thay đổi đối với thư viện RecyclerView phiên bản 7:
  • RecyclerView hiện có một tính năng chọn sử dụng có tên là AutoMeasure, cho phép RecyclerView.LayoutManager dễ dàng bao bọc nội dung hoặc xử lý các thông số kỹ thuật đo lường khác nhau do thành phần mẹ của RecyclerView cung cấp. API này hỗ trợ mọi chức năng ảnh động hiện có của RecyclerView.
    • Nếu bạn có RecyclerView.LayoutManager tuỳ chỉnh, hãy gọi setAutoMeasureEnabled(true) để bắt đầu sử dụng API Auto Measure mới. Tất cả các đối tượng RecyclerView.LayoutManager tích hợp sẵn đều bật tính năng tự động đo lường theo mặc định.
    • RecyclerView.LayoutManager không còn bỏ qua một số chế độ cài đặt RecyclerView.LayoutParams, chẳng hạn như MATCH_PARENT theo hướng cuộn.

      Lưu ý: Những hạn chế gia tăng này có thể gây ra hành vi không mong muốn trong bố cục của bạn. Hãy đảm bảo bạn chỉ định đúng thông số bố cục.

  • Khi cập nhật RecyclerView.ViewHolder bằng thông tin về tải trọng, DefaultItemAnimator hiện sẽ tắt ảnh động thay đổi.
  • Giờ đây, bạn có thể điều chỉnh tốc độ thoát ItemTouchHelper để kiểm soát độ nhạy của thao tác vuốt. Để việc vuốt dễ hoặc khó hơn, hãy ghi đè getSwipeEscapeVelocity(float defaultValue) và sửa đổi defaultValue.

Bản sửa đổi 23.1.1

Tháng 11 năm 2015

Các thay đổi đối với thư viện recyclerview phiên bản 7:
  • Khắc phục sự cố xảy ra khi bạn thực hiện thao tác vuốt để đóng mà lớp tiện ích ItemTouchHelper cung cấp, sau đó thêm một mục. (Vấn đề 190500)
Các thay đổi đối với thư viện lựa chọn ưu tiên phiên bản 7:
Các thay đổi đối với Thư viện hỗ trợ Leanback phiên bản 17:
  • Đã khắc phục một số vấn đề nội bộ trong thư viện này.
Các thay đổi đối với Thư viện hỗ trợ thiết kế:
  • Thêm phương thức getHeaderView vào lớp NavigationView.
  • Khắc phục vấn đề nền trong suốt cho đối tượng FloatingActionButton trên các thiết bị chạy Android 4.0 (API cấp 15) trở xuống. (Vấn đề 183315)

Bản sửa đổi 23.1.0

Tháng 10 năm 2015

Các thay đổi đối với Thư viện hỗ trợ phiên bản 4:
  • Thêm tính năng hỗ trợ giao diện OnScrollChangedListener vào tiện ích NestedScrollView. API này cho phép bạn nhận lệnh gọi lại khi vị trí cuộn X hoặc Y thay đổi.
  • Thêm một lớp MediaButtonReceiver để chuyển tiếp các bộ điều khiển chế độ phát đã nhận được sang dịch vụ đang quản lý lớp MediaSessionCompat. Lớp MediaSessionCompat có một hàm khởi tạo có thể tự động tìm trình nhận nút nội dung đa phương tiện trong tệp kê khai. Trình thu nhận nút đa phương tiện là phần quan trọng để xử lý bộ điều khiển chế độ phát từ bộ điều khiển phần cứng hoặc Bluetooth.
Các thay đổi đối với thư viện Appcompat v7:
  • Thêm các tiện ích Material Design SeekbarImageButton.
  • Cập nhật tiện ích ImageView để hỗ trợ tính năng phủ màu.
  • Cập nhật giao diện của tiện ích SwitchCompat.
Các thay đổi đối với thư viện mediarouter v7:
  • Thêm các tính năng sau vào lớp MediaRouteChooserDialog:
    • Hiển thị trang đang tải trong khi khám phá các nhà cung cấp định tuyến nội dung nghe nhìn.
    • Bao gồm biểu tượng loại thiết bị để nhận dạng thiết bị dễ dàng hơn.
    • Sắp xếp các tuyến theo tần suất sử dụng trong ứng dụng hiện tại.
    • Hỗ trợ chế độ ngang.
  • Thêm các tính năng sau vào lớp MediaRouteControllerDialog:
    • Nhận biết tính năng truyền màn hình và cung cấp nội dung mô tả phù hợp.
    • Hỗ trợ nhiều kích thước và tỷ lệ khung hình cho ảnh bìa đĩa nhạc, đồng thời tải ảnh không đồng bộ.
    • Tự động chọn màu nội dung dựa trên màu chính của ứng dụng.
    • Điều chỉnh bố cục hộp thoại dựa vào không gian màn hình có sẵn trên thiết bị.
    • Hỗ trợ chế độ ngang.
Các thay đổi đối với thư viện bảng khung hiển thị phiên bản 7:
  • Thêm phương thức setRegion() để hỗ trợ trích xuất màu từ một vùng cụ thể của đối tượng Bitmap.
Các thay đổi đối với thư viện recyclerview phiên bản 7:
  • Thêm API ảnh động đã cải tiến vào lớp ItemAnimator để tuỳ chỉnh tốt hơn:
    • Ảnh động thay đổi không còn thực thi 2 bản sao của đối tượng ViewHolder nữa, điều này sẽ bật ảnh động nội dung mục. Ngoài ra, đối tượng ItemAnimator sẽ quyết định việc sử dụng lại cùng một đối tượng ViewHolder hay tạo một đối tượng mới.
    • API bản ghi thông tin mới cho phép lớp ItemAnimator linh hoạt thu thập dữ liệu vào đúng thời điểm trong vòng đời bố cục. Sau đó, thông tin này được chuyển vào các lệnh gọi lại tạo ảnh động.
  • Cung cấp kế hoạch chuyển đổi đơn giản cho sự thay đổi về API không tương thích ngược này:
    • Nếu trước đây đã mở rộng lớp ItemAnimator, thì bạn có thể thay đổi lớp cơ sở thành SimpleItemAnimator và mã của bạn sẽ hoạt động như trước. Lớp SimpleItemAnimator cung cấp API cũ bằng cách gói API mới.
    • Một số phương thức đã bị xoá khỏi lớp ItemAnimator. Mã sau đây sẽ không được biên dịch nữa:
    • Kotlin

      recyclerView.itemAnimator.supportsChangeAnimations = false
      

      Java

      recyclerView.getItemAnimator().setSupportsChangeAnimations(false)
      

      Bạn có thể thay thế bằng:

      Kotlin

      val animator: SimpleItemAnimator? = recyclerView.itemAnimator as? SimpleItemAnimator
      animator?.supportsChangeAnimations = false
      

      Java

      ItemAnimator animator = recyclerView.getItemAnimator();
      if (animator instanceof SimpleItemAnimator) {
         ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
      }
      
Các thay đổi đối với thư viện Hỗ trợ lựa chọn ưu tiên v7, v14v17:
  • Xoá các API để kiểm soát hộp thoại EditText.
Các thay đổi đối với Thư viện hỗ trợ Leanback phiên bản 17:
  • Thêm một phiên bản lớp GuidedStepFragment cho Thư viện hỗ trợ (mở rộng android.support.v4.app.Fragment) cũng như cải thiện các ảnh động và hiệu ứng chuyển tiếp.
  • Cập nhật lớp GuidedStepFragment để có thể đặt lớp này lên trên nội dung hiện có.
  • Thêm tính năng chú thích nhiều kiểu hoàn thành nội dung tìm kiếm vào lớp SearchFragment.
  • Thêm tính năng hỗ trợ chuyển đổi trang trình bày so le vào lớp VerticalGridFragment.
Các thay đổi đối với Thư viện hỗ trợ thiết kế:
  • Thêm tính năng hỗ trợ tính năng Đếm ký tự vào tiện ích TextInputLayout.
  • Thêm tính năng hỗ trợ chụp nhanh cạnh cho lớp AppBarLayout bằng cách thêm hằng số SCROLL_FLAG_SNAP. Khi cuộn kết thúc, nếu chỉ nhìn thấy một phần khung hiển thị, thì khung hiển thị đó sẽ được điều chỉnh nhanh và cuộn đến cạnh gần nhất.
  • Thêm tính năng hỗ trợ khung hiển thị tuỳ chỉnh vào lớp NavigationView bằng cách sử dụng thuộc tính app:actionLayout hoặc phương thức MenuItemCompat.setActionView().
Các thay đổi đối với Thư viện hỗ trợ thẻ tuỳ chỉnh:
  • Thêm phương thức enableUrlBarHiding() vào lớp CustomTabsIntent. Tệp này cho phép ứng dụng tuỳ chỉnh xem có tự động ẩn thanh URL khi cuộn xuống hay không.
  • Thêm phương thức setActionButton() vào lớp CustomTabsSession. API này cho phép ứng dụng thay đổi biểu tượng cho nút hành động tuỳ chỉnh trong một thẻ tuỳ chỉnh đã chạy.
  • Thêm các hằng số TAB_SHOWNTAB_HIDDEN dưới dạng sự kiện mới cho phương thức onNavigationEvent của lớp CustomTabsCallback.

Bản sửa đổi 23.0.1

Tháng 9 năm 2015

Các thay đổi đối với Thư viện hỗ trợ lựa chọn ưu tiên v7v14:
Các thay đổi đối với thư viện Appcompat v7:
  • Khắc phục các vấn đề sự cố cho lớp Fragment bằng cách giới hạn việc sử dụng các lớp phần cứng ở Android 4.1 (API cấp 16) trở lên. (Vấn đề 183896)
  • Khắc phục vấn đề các nút phần cứng không hoạt động khi một hoạt động đặt lớp Toolbar để hoạt động như ActionBar bằng cách sử dụng phương thức setSupportActionBar(). (Vấn đề 183334)
  • Cập nhật lớp AppCompatDialogFragment để lớp này không còn gửi lỗi Windows feature must be requested before adding content nữa. (Vấn đề 183186)
Các thay đổi đối với Thư viện hỗ trợ thiết kế:
Các thay đổi đối với Thư viện hỗ trợ thẻ tuỳ chỉnh:

Bản sửa đổi 23

Tháng 8 năm 2015

Thêm thư viện hỗ trợ mới:

Để xem danh sách đầy đủ các thay đổi đối với Thư viện hỗ trợ, hãy xem Báo cáo về sự khác biệt giữa API của Thư viện hỗ trợ.

Bản sửa đổi 22.2.1

Tháng 7 năm 2015

Các thay đổi đối với Thư viện hỗ trợ thiết kế:
  • Thêm các phương thức hide()show() vào lớp FloatingActionButton để kích hoạt ảnh động có lập trình.
  • Thêm hằng số LENGTH_INDEFINITE vào lớp Snackbar để hiển thị một thanh thông báo nhanh cho đến khi thanh này bị đóng hoặc một thanh thông báo nhanh khác xuất hiện. Ngoài ra, chúng tôi đã thêm các phương thức setActionTextColor(int)setActionTextColor(ColorStateList).
  • Thêm phương thức getSelectedTabPosition() vào lớp TabLayout để truy xuất thẻ hiện được chọn.
  • Cung cấp một API hoàn toàn thông thạo cho lớp android.support.v7.app.NotificationCompat.MediaStyle để tạo chuỗi phương thức.
  • Thêm các phương thức tiện lợi vào RecyclerView để chèn hàng loạt các mục.

Để xem danh sách đầy đủ các thay đổi đối với Thư viện hỗ trợ, hãy xem Báo cáo về sự khác biệt giữa API của Thư viện hỗ trợ.

Bản sửa đổi 22.2.0

Tháng 5 năm 2015

Thêm Thư viện hỗ trợ thiết kế:
  • Thêm TextInputLayout để hiển thị văn bản gợi ý và văn bản lỗi về EditText dưới dạng nhãn nổi.
  • Thêm FloatingActionButton để triển khai hành động chính trên giao diện dưới dạng nút hành động nổi, hỗ trợ kích thước mặc định hoặc kích thước thu nhỏ.
  • Thêm Snackbar để đưa ra ý kiến phản hồi gọn nhẹ bằng một thao tác không bắt buộc trong thanh thông báo nhanh dạng ảnh động.
  • Thêm TabLayout để triển khai các thẻ cố định và có thể cuộn, cũng như dễ dàng tích hợp với ViewPager.
  • Thêm NavigationView để triển khai nội dung ngăn điều hướng, bao gồm cả khả năng tăng cường các mục trong trình đơn thông qua Tài nguyên của trình đơn.
  • Thêm CoordinatorLayout (một bố cục dùng cho mục đích chung), dùng để xây dựng các phần phụ thuộc giữa các thành phần hiển thị đồng cấp và cho phép dễ dàng cuộn các phản ứng giữa các thành phần thông qua CoordinatorLayout.Behavior. Nhiều thành phần Thư viện thiết kế dựa vào phần tử con của CoordinatorLayout.
  • Thêm AppBarLayout, một vùng chứa cho Toolbar và các thành phần hiển thị khác (chẳng hạn như TabLayout) để phản ứng với các sự kiện cuộn bằng cách cuộn ra khỏi màn hình, hiển thị khi người dùng cuộn xuống hoặc thu gọn/huỷ thu gọn trước khi cuộn ra khỏi màn hình.
  • Thêm CollapsingToolbarLayout để kiểm soát cách Toolbar thu gọn. Thanh công cụ có thể thu gọn bằng cách: ghim các thành phần lên đầu màn hình trong khi thanh này thu gọn, ra mắt tính năng cuộn thị sai của các thành phần như ImageView hoặc thêm màu màn hình nội dung khi khung hiển thị được thu gọn một phần.
Các thay đổi đối với thư viện hỗ trợ phiên bản 4:
Các thay đổi đối với thư viện Appcompat v7:

Để xem danh sách đầy đủ các thay đổi đối với Thư viện hỗ trợ, hãy xem Báo cáo về sự khác biệt giữa API của Thư viện hỗ trợ.

Bản sửa đổi 22.1.0

Tháng 4 năm 2015

Các thay đổi đối với thư viện chú thích:
  • Thêm thư viện Chú giải để hỗ trợ việc kiểm tra mã nâng cao. Các chú giải này được thêm dưới dạng thẻ siêu dữ liệu đính kèm vào các biến, tham số và giá trị trả về để kiểm tra các giá trị trả về của phương thức, các tham số đã truyền, cũng như các biến và trường cục bộ.
Các thay đổi đối với thư viện hỗ trợ phiên bản 4:
Các thay đổi đối với thư viện Appcompat v7:
Các thay đổi đối với thư viện leanback phiên bản 17:
Các thay đổi đối với thư viện recyclerview phiên bản 7:
  • Thêm các lớp SortedList để hiển thị các mục theo thứ tự trong danh sách và đưa ra thông báo về các thay đổi đối với danh sách.
  • Thêm lớp SortedListAdapterCallback có thể liên kết danh sách đã sắp xếp với lớp RecyclerView.Adapter.
Các thay đổi đối với thư viện RenderScript v8:

Bản sửa đổi 22

Tháng 3 năm 2015

Các thay đổi đối với thư viện hỗ trợ phiên bản 4:
  • Cập nhật phương thức getDrawable() để trả về một đối tượng có thể vẽ cho một mã tài nguyên, mật độ màn hình và giao diện cụ thể đã chỉ định.
  • Thêm phương thức setImportantForAccessibility() để bạn có thể cho biết liệu một khung hiển thị có kích hoạt các sự kiện hỗ trợ tiếp cận hay không.
  • Thêm phương thức getStatusBarBackgroundDrawable() để bạn có thể lấy đối tượng có thể vẽ trên nền của thanh trạng thái.
  • Thêm các phương thức vào lớp NotificationCompat.CarExtender.UnreadConversation để các ứng dụng nhắn tin trên Android Auto có thể truy xuất thêm dữ liệu thông báo.
  • Thêm phương thức getProgressCircleDiameter() để trả về đường kính của bố cục hình tròn.
  • Đã thay đổi màu mặc định của thanh trạng thái DrawerLayout thành colorPrimaryDark.
Các thay đổi đối với thư viện Appcompat v7:
Các thay đổi đối với thư viện leanback phiên bản 17:
  • Thêm các phương thức getRecycledPoolSize()setRecycledPoolSize() để cho phép tuỳ chỉnh kích thước nhóm tái chế.
  • Thêm thuộc tính WRAP_CONTENT vào chế độ cài đặt chiều rộng bố cục để hỗ trợ nội dung được bao bọc cho các biểu tượng tiêu đề.
  • Đã xác định R.transition trong XML để cải thiện thông tin cập nhật về quá trình chuyển đổi.
  • Bật tính năng hỗ trợ cho bố cục từ phải sang trái.
  • Thêm tính năng hỗ trợ các sự kiện phím phát và tạm dừng nội dung đa phương tiện vào lớp PlaybackOverlayFragment.
  • Thêm các hiệu ứng chuyển đổi nhập và trả về vào lớp BrowseFragment và lớp DetailsFragment.
  • Thêm phương thức replace() để thay thế các mục trong mảng trình chuyển đổi của một đối tượng.
Các thay đổi đối với thư viện mediarouter v7:
  • Cập nhật các biểu tượng Google Cast để sử dụng kiểu Material Design.
  • Cập nhật tất cả biểu tượng dùng trong hộp thoại MediaRouter để sử dụng kiểu Material Design.
Các thay đổi đối với thư viện recyclerview phiên bản 7:

Bản sửa đổi 21.0.3

Tháng 12 năm 2014

Các thay đổi đối với thư viện hỗ trợ phiên bản 4:

Bản sửa đổi 21.0.2

Tháng 11 năm 2014

Các thay đổi đối với thư viện hỗ trợ phiên bản 4:
Các thay đổi đối với thư viện Appcompat v7:
  • Thêm hàm khởi tạo PopupMenu để hỗ trợ trình đơn bật lên mới.
  • Thêm tính năng hỗ trợ cho phần mô tả biểu tượng Thu gọn trong lớp Toolbar.
  • Cập nhật tiện ích SearchView để hỗ trợ hiển thị commitIcon.
  • Xoá thuộc tính buttonGravity khỏi lớp Toolbar.
Các thay đổi đối với thư viện chế độ xem thẻ phiên bản 7:
Các thay đổi đối với thư viện recyclerview phiên bản 7:
Các thay đổi đối với thư viện leanback phiên bản 17:
  • Thêm tính năng hỗ trợ tạo các mảnh mã v4.
  • Đã thay đổi màu văn bản phụ vào CardView.

Bản sửa đổi 21.0.1

Tháng 11 năm 2014

Thêm thư viện hỗ trợ multidex để hỗ trợ nhiều tệp có thể thực thi Dalvik (DEX) nhằm hỗ trợ tệp nhiều dex trước Android 5.0.

Bản sửa đổi 21

Tháng 10 năm 2014

Các thay đổi đối với thư viện hỗ trợ phiên bản 4:
  • Thêm tính năng hỗ trợ chuyển đổi Fragment cho các thiết bị chạy Android 5.0 (API cấp 21). Lưu ý rằng hiệu ứng chuyển đổi không ảnh hưởng đến các thiết bị chạy Android 4.4 trở xuống.
  • Thêm DocumentFile để dễ dàng chuyển đổi từ File trong khi làm việc với các cây tài liệu. Tuy nhiên, lớp này đòi hỏi chi phí xử lý cao hơn so với API DocumentsContract của nền tảng được thêm vào Android 4.4 (API cấp 19). Vì vậy, bạn nên chuyển sang sử dụng DocumentsContract khi chạy trên Android 4.4 trở lên.
Các thay đổi đối với thư viện Appcompat v7:
  • Thêm tính năng hỗ trợ cho giao diện người dùng Material Design.
  • Thêm Toolbar để khái quát chức năng của ActionBar để sử dụng trong bố cục ứng dụng.
  • Cập nhật ActionBarDrawerToggle để chứa ảnh động thao tác từ trình đơn đến mũi tên
  • Cập nhật các tiện ích phổ biến trong giao diện người dùng để cho phép phủ màu qua các thuộc tính giao diện khi chạy trên thiết bị chạy phiên bản trước Android 5.0
  • Thêm SwitchCompat, một phiên bản cũ của tiện ích Switch đã được thêm vào Android 4.0 (API cấp 14).
Thư viện chế độ xem thẻ phiên bản 7 mới:
  • Thêm tiện ích CardView. Tiện ích này cung cấp phương thức triển khai tương thích với Material Design để hiển thị các mục dữ liệu.
Thư viện recyclerview phiên bản 7 mới:
  • Thêm tiện ích RecyclerView, tiện ích này cung cấp chế độ xem danh sách linh hoạt để cung cấp một cửa sổ giới hạn vào một tập dữ liệu lớn.
Thư viện bảng khung hiển thị phiên bản 7 mới:
  • Thêm lớp Palette, cho phép bạn trích xuất các màu nổi bật từ hình ảnh.
Thư viện leanback phiên bản 17 mới:

Bản sửa đổi 20

Tháng 7 năm 2014

Các thay đổi đối với thư viện hỗ trợ v4:
  • Thêm tính năng hỗ trợ mở rộng cho thông báo cho Android Wear trong NotificationCompat.WearableExtender, cho phép bạn chỉ định các tính năng dành riêng cho thiết bị đeo trong thông báo.
  • Thêm NotificationCompat.Action.WearableExtender, cho phép thêm hành động trên thông báo trên thiết bị đeo.
  • Thêm NotificationManagerCompat cho phép bạn đưa ra thông báo hỗ trợ đúng cách các tính năng cho thiết bị đeo.
  • Thêm RemoteInput cho phép một thiết bị cầm tay nhận dữ liệu nhập bằng giọng nói từ thông báo xuất hiện trên thiết bị đeo.
  • Cải thiện khả năng xử lý phản hồi chạm trong SwipeRefreshLayout.

Bản sửa đổi 19.1.0

Tháng 3 năm 2014

Các thay đổi đối với thư viện hỗ trợ v4:
  • Thêm lớp SwipeRefreshLayout, cho phép người dùng làm mới nội dung của khung hiển thị bằng cử chỉ vuốt dọc.
  • Khắc phục sự cố hỗ trợ tiếp cận với ngăn điều hướng.
Các thay đổi đối với thư viện Appcompat v7:
  • Khắc phục các vấn đề về nền với thanh thao tác.

Bản sửa đổi 19.0.1

Tháng 12 năm 2013

Các thay đổi đối với thư viện hỗ trợ v4:
  • Cải thiện PrintHelper bằng cách thêm chức năng xử lý in không đồng bộ.
  • Sửa cách ước tính lớp DrawerLayout của phương thức addChildrenForAccessibility().
  • Khắc phục lỗi phản chiếu trang trình bày có thể vẽ trong ActionBarDrawerToggle.
  • Khắc phục lỗi từng mục riêng lẻ khi xoá một mục khỏi trình lặp của bộ sưu tập.
Các thay đổi đối với thư viện mediarouter v7:
Các thay đổi đối với thư viện RenderScript v8
  • Thêm thông báo lỗi cho lớp thu hồi RenderScript.

Bản sửa đổi 19

Tháng 10 năm 2013

Các thay đổi đối với thư viện hỗ trợ v4:
  • Thêm tính năng hỗ trợ cho các API Bộ nhớ ngoài bằng getObbDirs(), getExternalFilesDirs(), getExternalCacheDirs()getStorageState(). Các phương thức trợ giúp này luôn trả về một đối tượng tệp duy nhất trên các thiết bị chạy Android 4.3 (API cấp 18) trở xuống. Khi chạy trên Android 4.4 (API cấp 19) trở lên, các phương thức này có thể trả về nhiều đối tượng tệp.
  • Thêm lớp PrintHelper hoạt động với API in để in hình ảnh với số lượng mã tối thiểu.
  • Thêm tính năng hỗ trợ giao diện người dùng kéo để mở cho các trình đơn bật lên. Để biết thêm thông tin, hãy xem PopupMenuCompatListPopupWindowCompat.
  • Cải thiện tính năng hỗ trợ tiếp cận bằng cách bổ sung một phương thức findFocus() trong AccessibilityNodeProviderCompatgetLiveRegion() trong AccessibilityNodeInfoCompat.
  • Thêm lớp trợ giúp ScaleGestureDetectorCompat để truy cập vào các phương thức cử chỉ điều chỉnh theo tỷ lệ mới.
  • Khắc phục sự cố với ActionBarDrawerToggle trong chế độ hiển thị ngôn ngữ từ phải sang trái.
  • Sửa đổi tuỳ chọn AutoScrollHelper để sử dụng các sự kiện chạm hoặc cho phép truyền các sự kiện đó sang các thành phần hiển thị khác.
Các thay đổi đối với thư viện mediarouter v7:
  • Bổ sung tính năng hỗ trợ việc xếp hàng phát nội dung nghe nhìn, đặt giá trị tiêu đề HTTP và thời lượng phát nội dung nghe nhìn.
  • Thêm các thao tác bắt đầu, nhận và kết thúc phiên rõ ràng để quản lý rõ ràng các phiên phát nội dung nghe nhìn bằng bộ định tuyến nội dung nghe nhìn.

Bản sửa đổi 18

Tháng 7 năm 2013

Các thay đổi đối với thư viện hỗ trợ v4:
  • Giao diện người dùng
    • Thêm BidiFormatter để xử lý các chuỗi văn bản kết hợp văn bản theo định dạng từ phải sang trái và từ trái sang phải.
    • Sửa đổi ViewPager để xử lý tốt hơn các trường hợp phân trang có chiều rộng đo được bằng 0 trong quá trình xử lý bố cục ban đầu.
    • Sửa đổi DrawerLayoutSlidingPaneLayout để không gửi trường hợp ngoại lệ cho hoạt động đo lường trong khi chỉnh sửa mã dự án.
  • Hỗ trợ tiếp cận
    • Thêm ExploreByTouchHelper để đơn giản hoá việc triển khai chức năng hỗ trợ tiếp cận cho khung hiển thị tuỳ chỉnh.
    • Khắc phục vấn đề về việc ViewPager điền không chính xác các sự kiện hỗ trợ tiếp cận TYPE_VIEW_SCROLLED.
    • Khắc phục một ngoại lệ về con trỏ rỗng trong ViewPager khi điền sẵn một sự kiện hỗ trợ tiếp cận.
    • Đơn giản hoá AccessibilityNodeInfoCompat bằng cách thay đổi dữ liệu đầu vào CharSequence thành các đối tượng String.
    • Ngừng sử dụng hàm khởi tạo AccessibilityRecordCompat sử dụng Object làm dữ liệu đầu vào.
  • Nội dung nghe nhìn
    • Thêm lớp trợ giúp TransportMediator để quản lý chức năng điều khiển truyền tải nội dung nghe nhìn, chẳng hạn như phát, tạm dừng, bỏ qua và các thao tác khác đối với nội dung nghe nhìn.
    • Thêm DisplayManagerCompat để quản lý kết quả hiển thị vào một hoặc nhiều màn hình thiết bị.
  • Nội dung thay đổi khác
    • Thêm lớp trợ giúp WakefulBroadcastReceiver để triển khai một mẫu chung giúp phát hiện sự kiện đánh thức thiết bị và chuyển công việc sang Service trong khi vẫn đảm bảo rằng thiết bị không quay lại chế độ ngủ trước khi quá trình chuyển giao hoàn tất.
    • Thêm hai API mới, commitContentChanged()rollbackContentChanged(), vào AsyncTaskLoader để giúp xử lý các bản cập nhật nền cho những thay đổi về dữ liệu sau đó bị huỷ.
Thư viện Appcompat v7 mới:
  • Thêm ActionBar để cho phép triển khai mẫu thiết kế giao diện người dùng của thanh thao tác trên Android 2.1 (API cấp 7) trở lên. Để sử dụng lớp này, bạn phải triển khai hoạt động bằng cách mở rộng lớp ActionBarActivity mới.
Thư viện mediarouter v7 mới:

Thêm thư viện mediarouter mới hỗ trợ bản xem trước dành cho nhà phát triển Google Cast. API thư viện mediarouter v7 cung cấp một phương thức để kiểm soát việc định tuyến các kênh và luồng nội dung nghe nhìn từ thiết bị hiện tại đến màn hình bên ngoài, loa và các thiết bị đích khác, có khả năng tương thích với Android 2.1 (API cấp 7). Hãy xem thư viện mediarouter V7 để biết thêm thông tin.

Các API thư viện mediarouter v7 ra mắt trong Thư viện hỗ trợ r18 có thể thay đổi trong các bản sửa đổi sau này của Thư viện hỗ trợ. Tại thời điểm này, bạn chỉ nên sử dụng thư viện cùng với bản xem trước dành cho nhà phát triển Google Cast.

Bản sửa đổi 13

Tháng 5 năm 2013

Các thay đổi đối với thư viện hỗ trợ v4:
Thư việngridlayout phiên bản 7 mới:
  • Thêm GridLayout để hỗ trợ đối tượng bố cục GridLayout.
  • Thêm android.support.v7.widget.Space có thể dùng để tạo các vùng trống trong đối tượng bố cục GridLayout.

Bản sửa đổi 12

Tháng 2 năm 2013

Các thay đổi đối với thư viện hỗ trợ v4:
  • Cải thiện hành vi tương tác cho ViewPager.
  • Khắc phục lỗi có thể khiến ViewPager chọn sai trang.
  • Khắc phục việc sử dụng phương thức removeView() trong quá trình bố cục cho ViewPager.
  • Khắc phục vấn đề về SearchViewCompat, trong đó việc sử dụng nút quay lại để đóng sẽ không xoá văn bản tìm kiếm. Bản sửa lỗi này chỉ áp dụng cho API máy chủ cấp 14 trở lên.

Bản sửa đổi 11

Tháng 11 năm 2012

Các thay đổi đối với thư viện hỗ trợ v4:
  • Giao diện người dùng
    • Thêm tính năng hỗ trợ cho các lớp Fragment lồng nhau.
    • Bổ sung các điểm cải tiến đối với tính năng gỡ lỗi FragmentManager.
    • Khắc phục sự cố trong FragmentTabHost, trong đó việc tương tác với mảnh và thẻ có thể dẫn đến việc mất trạng thái ListView.
    • Khắc phục vấn đề về gợi ý mà người dùng thấy trong FragmentStatePagerAdapter.
    • Thêm giao diện PageTransformer vào ViewPager để cho phép các ứng dụng cung cấp hành vi chuyển đổi tuỳ chỉnh để cuộn.
    • Đã thêm các tính năng và bản sửa lỗi mới cho TaskStackBuilder trong bản phát hành hiện tại.
    • Sửa PagerTitleStrip để theo dõi chính xác PagerAdapter hiện đang được sử dụng.
    • Khắc phục các sự cố nhấp nháy, định vị và cắt văn bản trên màn hình với PagerTitleStrip.
    • Sửa PagerTabStrip để tôn trọng khoảng đệm đúng cách khi vẽ đường gạch chân.
  • Hỗ trợ tiếp cận
  • Thêm tính năng hỗ trợ cho các cử chỉ bằng GestureDetectorCompat.
  • Thêm tính năng hỗ trợ thực hiện các phép toán nguyên tử trên các tệp bằng cách sử dụng một lớp AtomicFile mới.
  • Thêm tính năng hỗ trợ cho tập hợp đầy đủ các phương thức make trong IntentCompat.
  • Thêm phương thức trimToSize() trong lớp tiện ích LruCache.
  • Cập nhật ConnectivityManagerCompat để lấy NetworkInfo từ một thông báo CONNECTIVITY_ACTION.

Bản sửa đổi 10

Tháng 8 năm 2012

Các thay đổi đối với thư viện hỗ trợ v4:
  • Thêm tính năng hỗ trợ cho các tính năng thông báo ra mắt trong Android 4.1 (API cấp 16) với các điểm bổ sung cho NotificationCompat.

Bản sửa đổi 9

Tháng 6 năm 2012

Các thay đổi đối với thư viện hỗ trợ v4:
  • Hỗ trợ giao diện người dùng
    • Thêm tính năng hỗ trợ PagerTabStrip, cung cấp chức năng nâng cao ngoài PagerTitleStrip.
    • Sửa nhiều lỗi cho PagerTitleStripPagerTabStrip, trong đó có tuỳ chọn setAllCaps, căn chỉnh tiêu đề, cải thiện giao diện, giới hạn chiều rộng tối thiểu và các vấn đề về thao tác bằng cách chạm.
    • Thêm tính năng hỗ trợ cho rãnh trang ViewPager, giúp lớp ViewPager hỗ trợ phân trang cho nội dung có phạm vi cuộn ngang lớn, chẳng hạn như bản đồ.
    • Khắc phục nhiều lỗi cho ViewPager, bao gồm các vấn đề về thay đổi kích thước và tập dữ liệu, vị trí trang, hoạt động tương tác của người dùng, hoạt động theo dõi thao tác cuộn và điều hướng bằng bàn phím.
    • Khắc phục nhiều lỗi cho Fragment, bao gồm việc xử lý onActivityResult() đúng cách khi mảnh mục tiêu không còn tồn tại, gửi sự kiện lựa chọn đến các mảnh vô hình, cải thiện hành vi FragmentTransaction.replace() và thêm khả năng xử lý trạng thái tốt hơn cho các mảnh bị chuyển ra khỏi khung hiển thị.
    • Thêm tính năng hỗ trợ cho phương thức postOnAnimation() trong ViewCompat.
    • Cập nhật NavUtils để sử dụng chức năng chỉ đường Up (Lên) trên Android 4.1 (API cấp 16) khi có sẵn.
  • Hỗ trợ tiếp cận
    • Cập nhật các lớp hỗ trợ hỗ trợ tiếp cận, bao gồm cả AccessibilityNodeInfoCompat, để tuân theo các bản sửa lỗi được thực hiện trong Android 4.1 (API cấp 16).
    • Thêm tính năng hỗ trợ cho các thao tác cuộn hỗ trợ tiếp cận trong ViewPager.
  • Cải tiến chung

Bản sửa đổi 8

Tháng 4 năm 2012

Các thay đổi đối với thư viện hỗ trợ v4:
  • Sửa cờ ý định cho các đối tượng PendingIntent do TaskStackBuilder tạo.
  • Xoá các thuộc tính không dùng đến khỏi dự án thư việngridlayout để đảm bảo có thể xây dựng thư viện bằng API cấp 7 trở lên.
  • Thêm các tệp .classpath.project cho dự án thư viện networklayout.

Bản sửa đổi 7

Tháng 3 năm 2012

Các thay đổi đối với thư viện hỗ trợ v4:
  • Thêm ShareCompat, cung cấp các lớp trợ giúp để gửi và nhận nội dung cho ứng dụng chia sẻ qua mạng xã hội, bao gồm cả siêu dữ liệu mới để phân bổ dữ liệu được chia sẻ cho ứng dụng nguồn. Lớp này cũng cung cấp khả năng tích hợp tương thích với ShareActionProvider mới trong Android 4.0.
  • Thêm NavUtilsTaskStackBuilder để hỗ trợ triển khai các nguyên tắc Thiết kế Android cho hoạt động điều hướng. Những nội dung bổ sung này bao gồm cách triển khai nút Up (Lên) của thanh thao tác trên các phiên bản. Để biết ví dụ về cách triển khai mẫu này, hãy xem mẫu AppNavigation trong (<em><sdk></em>/samples/<em><platform></em>/AppNavigation).
  • Thêm NotificationCompat.Builder để cung cấp cách triển khai khả năng tương thích của lớp trình trợ giúp Notification.Builder của Android 3.0 nhằm tạo các thông báo hệ thống chuẩn.

Bản sửa đổi 6

Tháng 12 năm 2011

Lưu ý: Tài liệu tham khảo cho API thư viện hỗ trợ hiện đã có sẵn cùng với các giá trị tham chiếu khung, ví dụ: android.support.v4.app.

Các thay đổi đối với thư viện hỗ trợ v4:
  • Các thay đổi đối với ViewPager:
    • Thêm tính năng hỗ trợ khung hiển thị trang trí bổ sung cho ViewPager. Bạn có thể cung cấp thành phần hiển thị trang trí dưới dạng thành phần hiển thị con của một chế độ phân trang trong bố cục XML.
    • Thêm PagerAdapter.getPageTitle() để cung cấp chuỗi tiêu đề cho các trang, mặc định không có tiêu đề cho mỗi trang.
    • Thêm PagerTitleStrip, một dải tiêu đề không tương tác, có thể được thêm dưới dạng phần tử con của ViewPager. Nhà phát triển có thể cung cấp giao diện và màu sắc văn bản, cũng như thông tin về kích thước bố cục và trọng lực.
    • Cập nhật các phương thức PagerAdapter để lấy các đối tượng ViewGroup, thay vì Khung hiển thị nhằm tránh truyền lớp trong quá trình triển khai bộ chuyển đổi.
    • Cập nhật ViewPager để sử dụng hành vi hất kiểu Trình chạy.
    • Sửa lỗi để tương tác trên giao diện người dùng và kiểm tra tự động.
  • Hỗ trợ các Mảnh:
    • Đã thay đổi phương thức setStartDeferred() thành setUserVisibleHint(boolean).
    • Thêm tính năng bắt đầu trì hoãn cho các trang ngoài màn hình để cải thiện hiệu suất.
  • Hỗ trợ API Hỗ trợ tiếp cận:
    • Cập nhật các phương thức AccessibilityDelegateCompat để trả về danh sách trống thay vì giá trị rỗng.
    • Thêm các API mới cần thiết cho các mẫu phiên bản 4.

Bản sửa đổi 5

Tháng 12 năm 2011

Các thay đổi đối với thư viện hỗ trợ v4:

Bản sửa đổi 4

Tháng 11 năm 2011

Các thay đổi đối với thư viện hỗ trợ v4:
  • Thêm EdgeEffectCompat để hỗ trợ EdgeEffect.
  • Thêm LocalBroadcastManager để cho phép các ứng dụng dễ dàng đăng ký và nhận ý định trong một ứng dụng duy nhất mà không cần truyền phát các ý định đó trên toàn hệ thống.
  • Thêm tính năng hỗ trợ trong ViewCompat để kiểm tra và thiết lập chế độ cuộn quá mức cho View trên Android 2.3 trở lên.
  • Các thay đổi đối với Fragment API (API Mảnh):
    • Thêm các API mới để kiểm soát chế độ hiển thị của trình đơn mới.
    • Thêm API ảnh động tuỳ chỉnh.
    • Thêm các API trong FragmentActivity để giữ lại dữ liệu thực thể tuỳ chỉnh, không cần cấu hình.
    • Nhiều bản sửa lỗi.
  • Khắc phục lỗi Loader gây ra vấn đề huỷ AsyncTask khi chạy trên Froyo và các phiên bản cũ hơn của nền tảng này. Mã hỗ trợ hiện sử dụng phiên bản AsyncTask riêng để giữ nguyên hành vi trên tất cả phiên bản nền tảng.

Bản sửa đổi 3

Tháng 7 ngày 2011

Các thay đổi đối với thư viện hỗ trợ v4:
  • Thêm hỗ trợ cho Fragment.SavedState
  • Thêm MotionEventCompat để hỗ trợ các API MotionEvent mới hơn
  • Thêm VelocityTrackerCompat để hỗ trợ các API VelocityTracker mới hơn
  • Thêm ViewConfigurationCompat để hỗ trợ các API ViewConfiguration mới hơn
  • Tất cả API mới (chỉ có trong thư viện hỗ trợ) cho phép bạn tạo giao diện người dùng với chế độ phân trang theo chiều ngang, cho phép người dùng vuốt sang trái và sang phải giữa các khung hiển thị nội dung. Các lớp hỗ trợ việc này bao gồm:
    • ViewPager: Một ViewGroup quản lý bố cục cho các thành phần hiển thị con mà người dùng có thể vuốt qua lại.
    • PagerAdapter: Bộ chuyển đổi sẽ điền sẵn ViewPager bằng các chế độ xem đại diện cho từng trang.
    • FragmentPagerAdapter: Một phần mở rộng của PagerAdapter để lật giữa các mảnh.
    • FragmentStatePagerAdapter: Một phần mở rộng của PagerAdapter để lật giữa các mảnh sử dụng tính năng hỗ trợ của thư viện cho Fragment.SavedState.
Thư viện hỗ trợ phiên bản 13 mới:
  • Bao gồm FragmentPagerAdapterFragmentStatePagerAdapter để hỗ trợ tính năng phân trang theo chiều ngang.

    Các API này giống hệt như các API được thêm vào thư viện hỗ trợ v4, nhưng dựa vào các thành phần nền tảng khác trong Android 3.2. Hãy sử dụng thư viện này thay vì phiên bản 4 nếu bạn đang phát triển cho Android 3.2 trở lên (tất cả API khác trong thư viện v4 đều có sẵn với API cấp 13).

Bản sửa đổi 2

Tháng 5 năm 2011

Các thay đổi đối với thư viện v4:

Bản sửa đổi 1

Tháng 3 năm 2011

Bản phát hành đầu tiên với thư viện v4.