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

Phiên bản Beta đầu tiên của Android 17

Đọc trong 7 phút
Matthew McCullough
Phó chủ tịch phụ trách bộ phận Quản lý sản phẩm, Nhà phát triển Android

Hôm nay, chúng tôi phát hành phiên bản beta đầ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 được cải thiện. Bản dựng này tiếp tục nỗ lực của chúng tôi nhằm tạo ra các ứng dụng Android có khả năng thích ứng cao hơn, giới thiệu những cải tiến đáng kể cho các tính năng của camera 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à mở rộng hồ sơ cho các thiết bị đồng hành. Bản phát hành này cũng nêu bật sự thay đổi cơ bản trong cách chúng tôi mang đến 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 một 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ẽ có trong Canary ngay sau khi vượt qua quá trình kiểm thử nội bộ, thay vì phải đợi bản phát hành hằng quý.
  • Tính ổn định cao hơn: Việc "kiểm thử thực tế" sớm trong Canary giúp mang lại trải nghiệm Beta hoàn thiện hơn với các API mới và những thay đổi về hành vi gần như đã hoàn tất.
  • Kiểm thử dễ dàng hơn: Canary hỗ trợ các bản cập nhật OTA (không cần cài đặt ROM theo cách thủ công) và là một kênh cập nhật riêng biệt, dễ dàng tích hợp hơn với quy trình làm việc CI, đồng thời 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 phát hành Android 17

Chúng tôi sẽ nhanh chóng chuyển từ phiên bản Beta 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 cuối cùng và các hành vi liên quan trực tiếp đến ứng dụng gần như đã hoàn tất. Kể từ thời điểm đó, bạn sẽ có vài tháng trước khi bản phát hành chính thức hoàn tất quá trình kiểm thử.

timeline1.png

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

Chúng tôi dự định Android 17 sẽ tiếp tục nhận các bản cập nhật trong 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 giới thiệu những thay đổi về hành vi dự kiến có thể gây lỗi cho ứng dụng. Chúng tôi dự định phát hành một SDK nhỏ trong Quý 4 với các API và tính năng bổ sung.

timeline2.png

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

Với việc phát hành Android 17 Beta, chúng tôi đang chuyển sang giai đoạn tiếp theo của 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 hạn chế về hướng và khả năng thay đổi kích thước trên thiết bị 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à đa nhiệm 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 – và họ mong đợi giao diện người dùng sẽ lấp đầy không gian và tôn trọng tư thế của thiết bị.

Các thay đổi chính đố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ỏ 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 ≥ 600 dp), 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ả

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; chúng không áp dụng cho màn hình nhỏ hơn sw600dp (bao gồm cả điện thoại có hệ số hình dạng bảng 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) được miễn các 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 tham gia/không tham gia một cách rõ rà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.

Thông tin cập nhật về các thay đổ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 phát video bị gián đoạn, 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 đang cập nhật hành vi mặc định cho việc tạo lại Hoạt động. Kể từ Android 17, hệ thống sẽ không còn khởi động lại các hoạt động theo mặc định đối với những thay đổi cấu hình cụ thể thường không yêu cầu tạo lại giao diện người dùng, bao gồm CONFIG_KEYBOARDCONFIG_KEYBOARD_HIDDENCONFIG_NAVIGATIONCONFIG_UI_MODE (khi chỉ thay đổi UI_MODE_TYPE_DESK được thay đổi), CONFIG_TOUCHSCREEN, và CONFIG_COLOR_MODE. Thay vào đó, các hoạt động đang chạy sẽ chỉ nhận được những bản 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 tham gia 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 cấu hình sẽ kích hoạt vòng đời của activity hoàn chỉnh (từ dừng đến hủy bỏ và 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, touchscreencolorMode.

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. Bài đăng trên blog tập trung của chúng tôi có thêm hướng dẫn, với các chiến lược giải quyết các vấn đề thường gặp. Các ứng dụng sẽ cần hỗ trợ bố cục ngang và dọc cho 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 kiểm thử ứng dụng của mình 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 khả năng tương thích của ứng dụng để bật UNIVERSAL_RESIZABLE_BY_DEFAULT trên các 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 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 phản ánh các trường và phương thức riêng tư của MessageQueue.

Thu gom rác theo thế hệ

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

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

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 "cuối cùng tĩnh", cho phép thời gian chạy áp dụng các biện pháp tối ưu hoá hiệu suất một cách tích cực hơn. Việc cố gắng thực hiện việc này thông qua phản ánh (và phản ánh sâu) sẽ luôn dẫn đến việc IllegalAccessException bị gửi. Việc sửa đổi các trường này thông qua họ phương thức SetStatic<Type>Field của JNI sẽ khiến ứng dụng 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 đang 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 đóng 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 URI. Hành vi này được kiểm soát bởi 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 gỡ lỗi hiệu suất mới

Chúng tôi đã giới thiệu 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 các vấn đề về hiệu suất. Các trình kích hoạt này là TRIGGER_TYPE_COLD_STARTTRIGGER_TYPE_OOMvà TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

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

Nội dung nghe nhìn và Camera

Android 17 mang đến các công cụ cấp chuyên nghiệp cho các ứng dụng nội dung nghe nhìn và camera, với các tính năng như chuyển đổi liền mạch và độ lớn tiêu chuẩn.

Thông tin cập nhật về phiên camera động

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

Khi làm việc với các 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 thêm siêu dữ liệu từ tất cả cá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 thay thế, đô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 đang hoạt động thứ cấp (ví dụ: trong quá trình chuyển đổi ống kính để thu phóng khi camera theo dõi đ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 CaptureRequestCaptureResult. 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 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 camera.

Hỗ trợ mã hoá video linh hoạt (VVC)

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

Chất lượng không đổi để 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 tốt hơn ngoài các 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 hạn chế đối với các tương tác âm thanh nền, bao gồm cả việc phát âm thanh, yêu cầu quyền phát âm thanh và API thay đổi âm lượng để đảm bảo rằng người dùng cố ý bắt đầu những thay đổi này. 

Nếu ứng dụng cố gắng gọi các API âm thanh khi ứng dụng không ở trong vòng đời hợp lệ, thì các API phát âm thanh và thay đổi âm lượng sẽ không hoạt động một cách âm thầm 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 quyền phát âm thanh sẽ không hoạt động với 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 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 qua văn bản thô. Bạn nên di chuyển sang các tệp Cấu hình bảo mật mạng để kiểm soát chi tiết.

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

Chúng tôi đang giới thiệu Giao diện nhà cung cấp dịch vụ (SPI) công khai cho việc triển khai mật mã học 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 đang giới thiệu tính năng quản lý lựa chọn ưu tiên của người dùng để tích hợp nhật ký cuộc gọi VoIP của ứng dụng. Tính năng này bao gồm 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 hình ảnh hiển thị của nhật ký cuộc gọi VoIP tích hợp.

Phạm vi và khoảng cách Wi-Fi

Phạm vi Wi-Fi đã được cải tiến với các tính năng mới về Phát hiện khoảng cách, hỗ trợ phạm vi liên tục và phát hiện ngang hàng an toàn. Các bản cập nhật cho Phạm vi Wi-Fi Aware bao gồm các API mới cho trình xử lý ngang hàng và bộ nhớ đệm PMKID cho phạm vi an toàn 11az.

Nâng cao năng suất và công cụ cho nhà phát triển

Thông tin cập nhật cho các ứng dụng thiết bị đồng hành

Chúng tôi đã giới thiệu 2 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 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 chỉ định rõ ràng rằng họ đ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 vai trò hiện có trên đồng hồ.

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

Bắt đầu với Android 17

Bạn có thể đăng ký bất kỳ thiết bị Pixel được hỗ trợ nào để 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 hình ảnh hệ thống 64 bit với Trình mô phỏng Android trong Android Studio.

Nếu hiện đang tham gia chương trình Android Beta, 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 bạn có Android 26Q1 Beta và muốn sử dụng bản phát hành ổn định cuối cùng của 26Q1 và thoát khỏi 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. Bạn gửi ý kiến phản hồi càng sớm thì chúng tôi càng có thể đưa vào công việc của mình trong 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 sử 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 thực hiện một số việc sau:

  • Biên dịch dựa trên SDK mới, kiểm thử 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 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ó bị ảnh hưởng bởi các thay đổi trong Android 17 hay không, cài đặt ứng dụng của bạn lên thiết bị hoặc trình mô phỏng chạy Android 17 và kiểm thử kỹ lưỡng.

Chúng tôi sẽ cập nhật hình ảnh hệ thống bản xem trước/beta và SDK thường xuyên trong suốt chu kỳ phát hành Android 17. Sau khi cài đặt bản dựng beta, bạn sẽ tự động nhận được các bản cập nhật trong tương lai qua mạng không dây cho tất cả các bản xem trước và phiên bản Beta 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 Tính ổn định của nền tảng và bản phát hành ổn định 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 dùng sớm trên kênh Canary hay nhà phát triển ứng dụng kiểm thử trê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