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

Phiên bản Beta thứ ba của Android 17

5 phút đọc
Matthew McCullough
Phó chủ tịch, Quản lý sản phẩm, Nhà phát triển Android

Android 17 đã chính thức đạt đến độ ổn định của nền tảng với phiên bản Beta 3. Điều đó có nghĩa là giao diện API đã được khoá. Bạn có thể thực hiện kiểm thử khả năng tương thích cuối cùng và đẩy các ứng dụng nhắm đến Android 17 lên Cửa hàng Play. Ngoài ra, phiên bản Beta 3 còn mang đến một loạt tính năng mới giúp bạn xây dựng các ứng dụng tốt hơn, an toàn hơn và được tích hợp cao.

Hãy chuẩn bị sẵn sàng các ứng dụng, thư viện, công cụ và công cụ phát triển trò chơi!

Nếu phát triển SDK, thư viện, công cụ hoặc công cụ phát triển trò chơi, thì việc chuẩn bị mọi bản cập nhật cần thiết ngay bây giờ là điều quan trọng hơn bao giờ hết để ngăn chặn các nhà phát triển ứng dụng và trò chơi hạ nguồn bị chặn do các vấn đề về khả năng tương thích, đồng thời cho phép họ nhắm đến các tính năng SDK mới nhất. Vui lòng cho các nhà phát triển hạ nguồn biết nếu cần cập nhật để hỗ trợ đầy đủ cho Android 17.

large_Android17Timeline01.png

Quy trình kiểm thử bao gồm việc cài đặt ứng dụng sản xuất hoặc ứng dụng kiểm thử sử dụng thư viện hoặc công cụ phát triển trò chơi của bạn bằng Google Play hoặc các phương tiện khác trên một thiết bị hoặc trình mô phỏng chạy Android 17 Beta 3. Hãy thực hiện tất cả quy trình của ứng dụng và tìm các vấn đề về chức năng hoặc giao diện người dùng. Xem xét các thay đổi về hành vi để tập trung vào việc kiểm thử. Mỗi bản phát hành Android đều có những thay đổi về nền tảng giúp cải thiện quyền riêng tư, khả năng bảo mật và trải nghiệm người dùng tổng thể. Những thay đổi này có thể ảnh hưởng đến ứng dụng của bạn. Dưới đây là một số thay đổi mà bạn cần tập trung vào:

  • Khả năng đổi kích thước trên màn hình lớn: Sau khi nhắm đến Android 17, bạn không còn có thể chọn không duy trì các ràng buộc về hướng, khả năng đổi kích thước và tỷ lệ khung hình trên màn hình lớn.
  • Tải mã động: Nếu ứng dụng của bạn nhắm đến Android 17 trở lên, thì tính năng bảo vệ Tải mã động an toàn hơn (DCL) được giới thiệu trong Android 14 cho các tệp DEX và JAR hiện đã mở rộng sang các thư viện gốc. Tất cả các tệp gốc được tải bằng System.load() phải được đánh dấu là chỉ có quyền đọc. Nếu không, hệ thống sẽ gửi ra UnsatisfiedLinkError.
  • Bật tính năng CT theo mặc định: Tính năng minh bạch chứng chỉ (CT) được bật theo mặc định. (Trên Android 16, tính năng CT có sẵn nhưng các ứng dụng phải chọn sử dụng.)
  • Các biện pháp bảo vệ mạng cục bộ: Các ứng dụng nhắm đến Android 17 trở lên sẽ bị chặn quyền truy cập mạng cục bộ theo mặc định. Chuyển sang sử dụng trình chọn bảo đảm quyền riêng tư nếu có thể và sử dụng quyền ACCESS_LOCAL_NETWORK mới để có quyền truy cập rộng rãi và liên tục.

Các điểm cải tiến về phương tiện và camera

Các lựa chọn tuỳ chỉnh Trình chọn ảnh

Android hiện cho phép bạn điều chỉnh cách trình bày trực quan của công cụ chọn ảnh để bổ sung tốt hơn cho giao diện người dùng của ứng dụng. Bằng cách tận dụng API PhotoPickerUiCustomizationParams mới, bạn có thể sửa đổi tỷ lệ khung hình của chế độ xem lưới từ hình vuông 1:1 tiêu chuẩn thành màn hình dọc 9:16. Tính linh hoạt này mở rộng cho cả ý định ACTION_PICK_IMAGES và công cụ chọn ảnh nhúng, cho phép bạn duy trì tính thẩm mỹ nhất quán khi người dùng tương tác với nội dung nghe nhìn.

large_(Default)11aspectratio.png

Đây là một phần trong nỗ lực của chúng tôi nhằm giúp công cụ chọn ảnh Android đảm bảo quyền riêng tư phù hợp liền mạch với trải nghiệm ứng dụng của bạn. Tìm hiểu thêm về cách bạn có thể nhúng công cụ chọn ảnh trực tiếp vào ứng dụng để có trải nghiệm tự nhiên nhất.

val params = PhotoPickerUiCustomizationParams.Builder()
.setAspectRatio(PhotoPickerUiCustomizationParams.ASPECT_RATIO_PORTRAIT_9_16)
.build()
val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {
putExtra(MediaStore.EXTRA_PICK_IMAGES_UI_CUSTOMIZATION_PARAMS, params)
}
startActivityForResult(intent, REQUEST_CODE)

Hỗ trợ định dạng hình ảnh RAW14: Android 17 hỗ trợ định dạng hình ảnh RAW14 – tiêu chuẩn ngành thực tế cho nhiếp ảnh kỹ thuật số cao cấp – thông qua hằng số ImageFormat.RAW14 mới. RAW14 là định dạng một kênh, 14 bit trên mỗi pixel sử dụng bố cục được đóng gói dày đặc, trong đó cứ 4 pixel liên tiếp được đóng gói thành 7 byte.

Tiện ích camera do nhà cung cấp xác định: Android 17 bổ sung các tiện ích do nhà cung cấp xác định để cho phép các đối tác phần cứng xác định và triển khai các chế độ tiện ích camera tuỳ chỉnh nhằm cung cấp cho bạn quyền truy cập vào các tính năng camera tốt nhất và mới nhất, chẳng hạn như "Độ phân giải siêu cao" hoặc các điểm cải tiến tiên tiến do AI điều khiển. Bạn có thể truy vấn các chế độ này bằng API isExtensionSupported(int).

API loại thiết bị camera: Các API Android 17 mới cho phép bạn truy vấn loại thiết bị cơ bản để xác định xem camera có phải là phần cứng tích hợp, webcam USB bên ngoài hay camera ảo hay không.

Hỗ trợ thiết bị trợ thính Bluetooth Âm thanh năng lượng thấp

Android hiện có một danh mục thiết bị cụ thể cho thiết bị trợ thính Bluetooth Âm thanh năng lượng thấp (BLE). Khi thêm hằng số AudioDeviceInfo.TYPE_BLE_HEARING_AID, ứng dụng của bạn hiện có thể phân biệt thiết bị trợ thính với tai nghe thông thường.

val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
val isHearingAidConnected = devices.any { it.type == AudioDeviceInfo.TYPE_BLE_HEARING_AID }

Định tuyến âm thanh chi tiết cho thiết bị trợ thính

Android 17 cho phép người dùng quản lý độc lập vị trí phát các âm thanh cụ thể của hệ thống. Họ có thể chọn định tuyến thông báo, nhạc chuông và báo thức đến thiết bị trợ thính được kết nối hoặc loa tích hợp của thiết bị.

Bộ mã hoá phần mềm HE-AAC mở rộng

Android 17 giới thiệu bộ mã hoá phần mềm HE-AAC mở rộng do hệ thống cung cấp. Bộ mã hoá này hỗ trợ cả tốc độ bit thấp và cao bằng cách sử dụng mã hoá âm thanh và giọng nói thống nhất. Bạn có thể truy cập vào bộ mã hoá này thông qua API MediaCodec bằng tên c2.android.xheaac.encoder hoặc bằng cách truy vấn loại MIME audio/mp4a-latm.

val encoder = MediaCodec.createByCodecName("c2.android.xheaac.encoder")
val format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, 48000, 1)
format.setInteger(MediaFormat.KEY_BIT_RATE, 24000)
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectXHE)
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)

Các điểm cải tiến về hiệu suất và pin

Giảm số lần đánh thức với tính năng hỗ trợ trình nghe cho báo thức cho phép khi thiết bị ở trạng thái rảnh

Android 17 giới thiệu một biến thể mới của AlarmManager.setExactAndAllowWhileIdle chấp nhận OnAlarmListener thay vì PendingIntent. Cơ chế dựa trên lệnh gọi lại mới này là lựa chọn lý tưởng cho các ứng dụng hiện dựa vào số lần đánh thức liên tục để thực hiện các tác vụ định kỳ, chẳng hạn như các ứng dụng nhắn tin duy trì kết nối socket.

val alarmManager = getSystemService(AlarmManager::class.java)
val listener = AlarmManager.OnAlarmListener {
// Do work here
}
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
listener,
null
)

Nội dung cập nhật về quyền riêng tư

Nút vị trí do hệ thống cung cấp

localcafe.jpg

Android đang giới thiệu một nút vị trí do hệ thống kết xuất mà bạn có thể nhúng trực tiếp vào bố cục của ứng dụng bằng thư viện Android Jetpack. Khi người dùng nhấn vào nút hệ thống này, ứng dụng của bạn sẽ được cấp quyền truy cập vào thông tin vị trí chính xác chỉ cho phiên hiện tại. Để triển khai tính năng này, bạn cần khai báo quyền USE_LOCATION_BUTTON.

Các chế độ cài đặt riêng biệt về khả năng hiển thị mật khẩu cho bàn phím cảm ứng và bàn phím vật lý

Tính năng này chia chế độ cài đặt hệ thống "Hiển thị mật khẩu" hiện có thành 2 lựa chọn ưu tiên riêng biệt của người dùng: một cho dữ liệu đầu vào dựa trên cảm ứng và một cho dữ liệu đầu vào của bàn phím vật lý (phần cứng). Các ký tự được nhập qua bàn phím vật lý hiện được ẩn ngay theo mặc định.

val isPhysical = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD
val shouldShow = android.text.ShowSecretsSetting.shouldShowPassword(context, isPhysical)

Bảo mật

Bắt buộc tải mã động chỉ có quyền đọc

Để cải thiện khả năng bảo mật trước các cuộc tấn công chèn mã, Android hiện bắt buộc các thư viện gốc được tải động phải là chỉ có quyền đọc. Nếu ứng dụng của bạn nhắm đến Android 17 trở lên, thì tất cả các tệp gốc được tải bằng System.load() phải được đánh dấu là chỉ có quyền đọc trước.

val libraryFile = File(context.filesDir, "my_native_lib.so")
// Mark the file as read-only before loading to comply with Android 17+ security requirements
libraryFile.setReadOnly()
System.load(libraryFile.absolutePath)

Ký APK kết hợp mật mã học hậu lượng tử (PQC)

Để chuẩn bị cho những tiến bộ trong tương lai về điện toán lượng tử, Android đang giới thiệu tính năng hỗ trợ Mật mã học hậu lượng tử (PQC) thông qua Lược đồ chữ ký APK v3.2 mới. Lược đồ này sử dụng phương pháp kết hợp, kết hợp chữ ký cổ điển với chữ ký ML-DSA.

Trải nghiệm người dùng và giao diện người dùng hệ thống

Hỗ trợ tốt hơn cho tiện ích trên màn hình bên ngoài

Tính năng này cải thiện tính nhất quán về mặt hình ảnh của các tiện ích ứng dụng khi chúng được hiển thị trên màn hình bên ngoài hoặc màn hình được kết nối có mật độ điểm ảnh khác nhau bằng cách sử dụng các đơn vị DP hoặc SP.

val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
val displayId = options.getInt(AppWidgetManager.OPTION_APPWIDGET_DISPLAY_ID)
val remoteViews = RemoteViews(context.packageName, R.layout.widget_layout)
remoteViews.setViewPadding(
R.id.container,
16f, 8f, 16f, 8f,
TypedValue.COMPLEX_UNIT_DIP
)

Ẩn nhãn ứng dụng trên màn hình chính

Hiddenapplabelsonthehomescreen.png

Android hiện cung cấp chế độ cài đặt người dùng để ẩn tên ứng dụng (nhãn) trên không gian làm việc của màn hình chính. Đảm bảo biểu tượng ứng dụng của bạn khác biệt và dễ nhận biết.

Hình trong hình tương tác trên máy tính

Không giống như chế độ Hình trong hình truyền thống, các cửa sổ được ghim này vẫn có tính tương tác trong khi luôn ở trên cùng các cửa sổ ứng dụng khác ở chế độ máy tính.

val appTask: ActivityManager.AppTask = activity.getSystemService(ActivityManager::class.java).appTasks[0]
appTask.requestWindowingLayer(
ActivityManager.AppTask.WINDOWING_LAYER_PINNED,
context.mainExecutor,
object : OutcomeReceiver<Int, Exception> {
override fun onResult(result: Int) {
if (result == ActivityManager.AppTask.WINDOWING_LAYER_REQUEST_GRANTED) {
// Task successfully moved to pinned layer
}
}
override fun onError(error: Exception) {}
}
)

Thiết kế lại thanh công cụ quay màn hình

large_Recording-redesign.png

Chức năng cốt lõi

Chế độ cài đặt loại trừ ứng dụng VPN

Bằng cách sử dụng ý định ACTION_VPN_APP_EXCLUSION_SETTINGS mới, ứng dụng của bạn có thể khởi chạy màn hình Cài đặt do hệ thống quản lý, nơi người dùng có thể chọn các ứng dụng để bỏ qua đường hầm VPN.

val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}

Nội dung cập nhật API OpenJDK 25 và 21

Bản cập nhật này mang đến nhiều tính năng và điểm cải tiến từ OpenJDK 21 và OpenJDK 25, bao gồm cả tính năng hỗ trợ Unicode mới nhất và tính năng hỗ trợ SSL nâng cao cho các nhóm có tên trong TLS.

Bắt đầu sử dụng Android 17

Bạn có thể đăng ký bất kỳ thiết bị Pixel được hỗ trợ nào hoặc sử dụng hình ảnh hệ thống 64 bit với Trình mô phỏng Android.

  • Biên dịch dựa trên SDK mới và báo cáo vấn đề 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 và 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.

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

Tác giả:

Tiếp tục đọc