Tin tức về sản phẩm

Bản thử nghiệm đầu tiên của Android 17

7 phút đọc
Xem hồ sơ của Matthew McCullough
Matthew McCullough Phó chủ tịch, Bộ phận Quản lý sản phẩm, Nhà phát triển Android

Hôm nay, chúng tôi sẽ phát hành phiên bản thử nghiệm đầu tiên của Android 17, tiếp tục nỗ lực xây dựng một nền tảng ưu tiên quyền riêng tư, bảo mật và hiệu suất tinh tế. Bản dựng này tiếp tục nỗ lực của chúng tôi trong việc giúp các ứng dụng Android dễ thích ứng hơn, đồng thời mang đến những điểm cải tiến đáng kể cho chức năng của máy ảnh và nội dung nghe nhìn, các công cụ mới để tối ưu hoá khả năng kết nối và hồ sơ mở rộng cho thiết bị đồng hành. Bản phát hành này cũng đánh dấu một sự thay đổi cơ bản trong cách chúng tôi cung cấp các bản phát hành mới cho cộng đồng nhà phát triển, từ mô hình Bản dùng trước cho nhà phát triển truyền thống sang chương trình Android Canary

Ngoài Bản dùng trước cho nhà phát triển

Android đã thay thế "Bản dùng trước cho nhà phát triển" truyền thống bằng kênh Canary liên tục. Mô hình "luôn bật" mới này mang lại 3 lợi ích chính:

  • Truy cập nhanh hơn: Các tính năng và API sẽ xuất hiện trong Canary ngay khi vượt qua quy trình kiểm thử nội bộ, thay vì phải đợi đến bản phát hành hằng quý.
  • Ổn định hơn: Việc "thử nghiệm thực tế" sớm trong Canary mang lại trải nghiệm Beta hoàn thiện hơn với các API mới và các thay đổi về hành vi gần như hoàn tất.
  • Thử nghiệm dễ dàng hơn: Canary hỗ trợ cập nhật qua mạng không dây (không cần cài đặt ROM theo cách thủ công nữa) và là một kênh cập nhật riêng biệt, dễ dàng tích hợp với quy trình CI và cung cấp cho bạn khoảng thời gian sớm nhất để đưa ra ý kiến phản hồi ngay lập tức về những thay đổi tiềm năng sắp tới.

Lịch trình của Android 17

Chúng tôi sẽ nhanh chóng chuyển từ bản thử nghiệm này sang cột mốc Ổn định nền tảng, dự kiến vào tháng 3. Tại cột mốc này, chúng tôi sẽ cung cấp các API SDK/NDK hoàn chỉnh và phần lớn các hành vi hoàn chỉnh liên quan trực tiếp đến ứng dụng. Kể từ thời điểm đó, bạn sẽ có vài tháng để hoàn tất quá trình kiểm thử trước khi có bản phát hành chính thức.

timeline1.png

Một năm phát hành

Chúng tôi dự định tiếp tục cập nhật Android 17 thông qua một loạt bản phát hành hằng quý. Bản phát hành sắp tới trong quý 2 là bản phát hành duy nhất mà chúng tôi sẽ giới thiệu những thay đổi dự kiến về hành vi có thể gây lỗi cho ứng dụng. Chúng tôi dự định phát hành một bản SDK nhỏ vào quý 4, trong đó có thêm các API và tính năng.

timeline2.png

Các quy định hạn chế về hướng và khả năng đổi kích thước

Khi phát hành Android 17 Beta, chúng tôi sẽ chuyển sang giai đoạn tiếp theo trong lộ trình thích ứng: Android 17 (cấp độ API 37) loại bỏ lựa chọn không tham gia của nhà phát triển đối với các quy tắc hạn chế về hướng và khả năng đổi kích thước trên thiết bị có màn hình lớn (sw > 600 dp).

Khi nhắm đến SDK 37, ứng dụng của bạn phải sẵn sàng thích ứng. Người dùng mong đợi ứng dụng của họ hoạt động ở mọi nơi, cho dù là khi làm nhiều việc cùng lúc trên máy tính bảng, mở thiết bị hay sử dụng môi trường cửa sổ kiểu máy tính, đồng thời họ cũng mong đợi giao diện người dùng lấp đầy không gian và phù hợp với tư thế của thiết bị.

Những thay đổi quan trọng đối với SDK 37

Các ứng dụng nhắm đến Android 17 phải đảm bảo khả năng tương thích với việc loại bỏ dần các thuộc tính tệp kê khai và API thời gian chạy được giới thiệu trong Android 16. Khi chạy trên màn hình lớn (kích thước nhỏ hơn ≥ 600dp), các thuộc tính và API sau đây sẽ bị bỏ qua:

Thuộc tính/API tệp kê khaiGiá trị bị bỏ qua
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivitytất cả
minAspectRatiotất cả
maxAspectRatiotất cả

Trường hợp miễn trừ và quyền kiểm soát của người dùng

Những thay đổi này chỉ dành riêng cho màn hình lớn; không áp dụng cho màn hình nhỏ hơn sw600dp (bao gồm cả điện thoại có kiểu dáng phiến truyền thống). Ngoài ra, các ứng dụng được phân loại là trò chơi (dựa trên cờ android:appCategory) sẽ được miễn trừ khỏi các quy định hạn chế này.

Điều quan trọng cần lưu ý là người dùng vẫn có quyền kiểm soát. Họ có thể chọn sử dụng hoặc không sử dụng hành vi mặc định của ứng dụng thông qua chế độ cài đặt tỷ lệ khung hình của hệ thống.

Nội dung cập nhật về các thay đổi đối với cấu hình

Để cải thiện khả năng tương thích của ứng dụng và giúp giảm thiểu tình trạng gián đoạn khi phát video, mất dữ liệu đầu vào và các loại mất trạng thái gây gián đoạn khác, chúng tôi sẽ cập nhật hành vi mặc định cho việc tạo lại Hoạt động. Kể từ Android 17, theo mặc định, hệ thống sẽ không khởi động lại các hoạt động đối với những thay đổi cụ thể về cấu hình thường không yêu cầu tạo lại giao diện người dùng, bao gồm cả CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_UI_MODE (khi chỉ thay đổi UI_MODE_TYPE_DESK), CONFIG_TOUCHSCREEN và CONFIG_COLOR_MODE. Thay vào đó, các hoạt động đang chạy sẽ chỉ nhận được những thông tin cập nhật này thông qua onConfigurationChanged.Nếu ứng dụng của bạn dựa vào việc khởi động lại hoàn toàn để tải lại tài nguyên cho những thay đổi này, thì giờ đây, bạn phải chọn sử dụng một cách rõ ràng bằng thuộc tính tệp kê khai android:recreateOnConfigChanges mới. Thuộc tính này cho phép bạn chỉ định những thay đổi về cấu hình sẽ kích hoạt một vòng đời của activity hoàn chỉnh (từ dừng, hủy bỏ đến tạo lại), cùng với các hằng số liên quan mcc, mnc và các hằng số mới keyboard, keyboardHidden, navigation, touchscreen và colorMode.

Chuẩn bị ứng dụng

Chúng tôi đã phát hành các công cụ và tài liệu để giúp bạn dễ dàng thực hiện việc này. Bài đăng trên blog chuyên sâu của chúng tôi có thêm hướng dẫn, cùng với các chiến lược để giải quyết những vấn đề thường gặp. Ứng dụng sẽ cần hỗ trợ bố cục ngang và dọc cho các kích thước cửa sổ trên toàn bộ phạm vi tỷ lệ khung hình, vì việc hạn chế hướng hoặc tỷ lệ khung hình sẽ không còn là một lựa chọn. Bạn nên thử nghiệm ứng dụng bằng Android 17 Beta 1 với trình mô phỏng Pixel Tablet hoặc Pixel Fold (được định cấu hình thành targetSdkPreview = "CinnamonBun") hoặc bằng cách sử dụng khung tương thích của ứng dụng để bật UNIVERSAL_RESIZABLE_BY_DEFAULT trên thiết bị Android 16.

Hiệu suất

MessageQueue không khoá

Trong Android 17, các ứng dụng nhắm đến SDK 37 trở lên sẽ nhận được một cách triển khai mới của android.os.MessageQueue, trong đó cách triển khai này không có khoá. Cách triển khai mới giúp cải thiện hiệu suất và giảm số khung hình bị bỏ lỡ, nhưng có thể làm hỏng các ứng dụng khách phản ánh các trường và phương thức riêng tư của MessageQueue.

Bộ thu gom rác theo thế hệ

Android 17 ra mắt tính năng thu gom rác theo thế hệ cho trình thu gom Concurrent Mark-Compact của ART. Tính năng tối ưu hoá này giúp thu thập thế hệ trẻ thường xuyên hơn, ít tốn tài nguyên hơn cùng với việc thu thập toàn bộ vùng nhớ khối xếp, nhằm giảm tổng chi phí CPU và thời gian thu thập rác. Các điểm cải tiến của ART cũng được cung cấp cho hơn một tỷ thiết bị chạy Android 12 (cấp độ API 31) trở lên thông qua Bản cập nhật hệ thống Google Play.

Các trường tĩnh cuối cùng hiện đã thực sự hoàn thiện

Kể từ Android 17, các ứng dụng nhắm đến Android 17 trở lên sẽ không thể sửa đổi các trường "static final", cho phép thời gian chạy áp dụng các tính năng tối ưu hoá hiệu suất một cách linh hoạt hơn. Việc cố gắng thực hiện việc này thông qua phản chiếu (và phản chiếu sâu) sẽ luôn dẫn đến việc IllegalAccessException bị gửi đi. Nếu bạn sửa đổi các trường này thông qua nhóm phương thức SetStatic<Type>Field của JNI, thì ứng dụng sẽ gặp sự cố ngay lập tức.

Các hạn chế về chế độ xem thông báo tuỳ chỉnh

Để giảm mức sử dụng bộ nhớ, chúng tôi sẽ hạn chế kích thước của chế độ xem thông báo tuỳ chỉnh. Bản cập nhật này khắc phục một lỗ hổng cho phép các ứng dụng bỏ qua các giới hạn hiện có bằng cách sử dụng URI. Hành vi này được kiểm soát theo phiên bản SDK mục tiêu và có hiệu lực đối với các ứng dụng nhắm đến API 37 trở lên.

Trình kích hoạt ProfilingManager mới để gỡ lỗi hiệu suất

Chúng tôi đã ra mắt một số trình kích hoạt hệ thống mới cho ProfilingManager để giúp bạn thu thập dữ liệu chuyên sâu nhằm gỡ lỗi về hiệu suất. Các điều kiện kích hoạt này là TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM, và TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

Để tìm hiểu cách thiết lập trình kích hoạt hệ thống mới, hãy xem tài liệu về phân tích dựa trên trình kích hoạt và truy xuất cũng như phân tích dữ liệu phân tích.

Nội dung nghe nhìn và máy ảnh

Android 17 mang đến các công cụ chuyên nghiệp cho ứng dụng đa phương tiện và máy ảnh, với các tính năng như chuyển đổi liền mạch và chuẩn hoá âm lượng.

Thông tin cập nhật về phiên máy ảnh linh động

Chúng tôi đã ra mắt updateOutputConfigurations() cho CameraCaptureSession. Điều này cho phép bạn tự động đính kèm và tách các nền tảng đầu ra mà không cần định cấu hình lại toàn bộ phiên chụp ảnh của camera. Thay đổi này giúp chuyển đổi liền mạch giữa các trường hợp sử dụng và chế độ của máy ảnh (chẳng hạn như chụp ảnh tĩnh so với quay video) mà không tốn bộ nhớ và không làm tăng độ phức tạp của mã khi định cấu hình và giữ lại tất cả các nền tảng đầu ra của máy ảnh mà ứng dụng của bạn có thể cần trong quá trình khởi động máy ảnh. Điều này giúp loại bỏ các lỗi hoặc hiện tượng treo mà người dùng có thể thấy trong quá trình hoạt động.

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

Siêu dữ liệu của thiết bị có nhiều máy ảnh logic

Khi làm việc với camera logic kết hợp nhiều cảm biến camera vật lý, giờ đây, bạn có thể yêu cầu siêu dữ liệu bổ sung từ tất cả camera vật lý đang hoạt động tham gia vào quá trình chụp, chứ không chỉ camera chính. Trước đây, bạn phải triển khai các giải pháp, đôi khi phân bổ các luồng vật lý không cần thiết, để lấy siêu dữ liệu từ các camera phụ đang hoạt động (ví dụ: trong quá trình chuyển đổi ống kính để thu phóng khi camera phụ đang hoạt động). Tính năng này giới thiệu một khoá mới, LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS, trong CaptureRequest và CaptureResult. Bằng cách đặt khoá này thành BẬT trong CaptureRequest, TotalCaptureResult sẽ bao gồm siêu dữ liệu từ các camera vật lý đang hoạt động bổ sung này. Bạn có thể truy cập vào siêu dữ liệu toàn diện này bằng cách sử dụng TotalCaptureResult.getPhysicalCameraTotalResults() để biết thêm thông tin chi tiết có thể giúp bạn tối ưu hoá việc sử dụng tài nguyên trong các ứng dụng máy ảnh.

Hỗ trợ chuẩn nén video đa năng (VVC)

Android 17 bổ sung tính năng hỗ trợ cho tiêu chuẩn Mã hoá video đa năng (VVC). Việc này bao gồm việc xác định loại MIME video/vvc trong MediaFormat, thêm hồ sơ VVC mới trong MediaCodecInfo và tích hợp tính năng hỗ trợ vào MediaExtractor. Tính năng này sẽ được cung cấp cho các thiết bị có hỗ trợ giải mã phần cứng và trình điều khiển tương thích.

Chất lượng không đổi khi quay video

Chúng tôi đã thêm setVideoEncodingQuality() vào MediaRecorder. Điều này cho phép bạn định cấu hình chế độ chất lượng không đổi (CQ) cho bộ mã hoá video, giúp bạn kiểm soát chất lượng video chi tiết hơn ngoài chế độ cài đặt tốc độ bit đơn giản.

Tăng cường bảo mật âm thanh nền

Kể từ Android 17, khung âm thanh sẽ thực thi các quy định hạn chế đối với hoạt động tương tác âm thanh trong nền, bao gồm cả việc phát âm thanh, yêu cầu về tiêu điểm âm thanh và API thay đổi âm lượng để đảm bảo rằng những thay đổi này là do người dùng chủ ý thực hiện. 

Nếu ứng dụng cố gắng gọi API âm thanh khi ứng dụng không ở trong một vòng đời hợp lệ, thì API phát âm thanh và thay đổi âm lượng sẽ không hoạt động mà không có ngoại lệ nào được gửi hoặc thông báo lỗi nào được cung cấp. API tâm điểm âm thanh sẽ không thành công và trả về mã kết quả AUDIOFOCUS_REQUEST_FAILED.

Quyền riêng tư và bảo mật

Ngừng sử dụng thuộc tính lưu lượng truy cập qua văn bản thô

Thuộc tính android:usesCleartextTraffic hiện không còn được dùng nữa. Nếu ứng dụng của bạn nhắm đến (Android 17) trở lên và dựa vào usesCleartextTraffic="true" mà không có Cấu hình bảo mật mạng tương ứng, thì ứng dụng sẽ mặc định không cho phép lưu lượng truy cập văn bản thô. Bạn nên di chuyển sang tệp Cấu hình bảo mật mạng để kiểm soát chi tiết.

Mật mã kết hợp HPKE

Chúng tôi sẽ ra mắt một Giao diện nhà cung cấp dịch vụ (SPI) công khai để triển khai mật mã kết hợp HPKE, cho phép giao tiếp an toàn bằng cách kết hợp khoá công khai và mã hoá đối xứng (AEAD).

Khả năng kết nối và viễn thông

Nhật ký cuộc gọi VoIP nâng cao

Chúng tôi sẽ ra mắt tính năng quản lý lựa chọn ưu tiên của người dùng đối với việc tích hợp nhật ký cuộc gọi VoIP của ứng dụng. Điều này bao gồm việc hỗ trợ URI hình đại diện của người gọi và người tham gia trong trình quay số hệ thống, cho phép người dùng kiểm soát chi tiết quyền riêng tư của nhật ký cuộc gọi và làm phong phú thêm màn hình hiển thị hình ảnh của nhật ký cuộc gọi VoIP tích hợp.

Đo khoảng cách và độ gần bằng Wi-Fi

Đo khoảng cách qua Wi-Fi đã được cải tiến bằng các tính năng Phát hiện khoảng cách mới, hỗ trợ đo khoảng cách liên tục và khám phá ngang hàng an toàn. Nội dung cập nhật về tính năng đo khoảng cách bằng Wi-Fi Aware bao gồm các API mới cho tay điều khiển ngang hàng và lưu PMKID vào bộ nhớ đệm để đo khoảng cách an toàn theo chuẩn 11az.

Công cụ và năng suất của nhà phát triển

Nội dung cập nhật cho ứng dụng quản lý thiết bị đồng hành

Chúng tôi đã giới thiệu hai hồ sơ mới cho CompanionDeviceManager để cải thiện khả năng phân biệt thiết bị và xử lý quyền:

  • Thiết bị y tế: Hồ sơ này cho phép các ứng dụng di động của thiết bị y tế yêu cầu tất cả các quyền cần thiết chỉ bằng một lần nhấn, giúp đơn giản hoá quy trình thiết lập.
  • Thiết bị theo dõi thể chất: Hồ sơ DEVICE_PROFILE_FITNESS_TRACKER cho phép các ứng dụng đồng hành cho biết rõ ràng rằng chúng đang quản lý một thiết bị theo dõi thể chất. Điều này đảm bảo trải nghiệm người dùng chính xác với các biểu tượng riêng biệt trong khi sử dụng lại các quyền hiện có của vai trò xem.

Ngoài ra, CompanionDeviceManager hiện cung cấp một hộp thoại hợp nhất cho các yêu cầu liên kết thiết bị và yêu cầu cấp quyền truy cập thiết bị ở gần. Bạn có thể tận dụng phương thức setExtraPermissions mới trong AssociationRequest.Builder để gộp các lời nhắc cấp quyền ở gần trong quy trình liên kết hiện có, giúp giảm số lượng hộp thoại hiển thị cho người dùng.

Làm quen với Android 17

Bạn có thể đăng ký bất kỳ thiết bị Pixel nào được hỗ trợ để nhận bản cập nhật này và các bản cập nhật Android Beta trong tương lai qua mạng không dây. Nếu không có thiết bị Pixel, bạn có thể sử dụng ảnh hệ thống 64 bit với Trình mô phỏng Android trong Android Studio.

Nếu đang tham gia chương trình Thử nghiệm Android, bạn sẽ được cung cấp bản cập nhật qua mạng không dây lên Beta 1.

Nếu đang dùng Android 26Q1 Beta và muốn chuyển sang bản phát hành chính thức cuối cùng của 26Q1 và thoát khỏi chương trình Beta, bạn cần bỏ qua bản cập nhật qua mạng không dây lên 26Q2 Beta 1 và đợi bản phát hành 26Q1.

Chúng tôi rất mong nhận được ý kiến phản hồi của bạn, vì vậy, vui lòng báo cáo vấn đề và gửi yêu cầu về tính năng trên trang phản hồi. Chúng tôi nhận được ý kiến phản hồi của bạn càng sớm thì càng có thể đưa nhiều ý kiến vào bản phát hành chính thức.

Để có trải nghiệm phát triển tốt nhất với Android 17, bạn nên dùng bản xem trước mới nhất của Android Studio (Panda). Sau khi thiết lập, bạn nên làm một số việc sau:

  • Biên dịch dựa trên SDK mới, thử nghiệm trong môi trường CI và báo cáo mọi vấn đề trong công cụ theo dõi của chúng tôi trên trang ý kiến phản hồi.
  • Kiểm thử khả năng tương thích của ứng dụng hiện tại, tìm hiểu xem ứng dụng của bạn có chịu ảnh hưởng của các thay đổi trong Android 17 hay không, đồng thời cài đặt ứng dụng vào một thiết bị hoặc trình mô phỏng chạy Android 17 rồi kiểm thử kỹ lưỡng.

Chúng tôi sẽ thường xuyên cập nhật hình ảnh hệ thống xem trước/thử nghiệm và SDK trong suốt chu kỳ phát hành Android 17. Sau khi cài đặt bản dựng thử nghiệm, bạn sẽ tự động nhận được các bản cập nhật qua mạng không dây cho tất cả các bản dùng thử và bản thử nghiệm sau này.

Để biết thông tin đầy đủ, hãy truy cập trang web dành cho nhà phát triển Android 17.

Tham gia cuộc trò chuyện

Khi chúng tôi tiến tới giai đoạn Ổn định nền tảng và bản phát hành chính thức cuối cùng của Android 17 vào cuối năm nay, ý kiến phản hồi của bạn vẫn là tài sản quý giá nhất của chúng tôi. Cho dù bạn là người sử dụng sớm trên kênh Canary hay nhà phát triển ứng dụng đang thử nghiệm trên bản Beta 1, hãy cân nhắc tham gia cộng đồng của chúng tôi và gửi ý kiến phản hồi. Chúng tôi luôn lắng nghe.

Tác giả:
Tiếp tục đọc