Android 17 đã chính thức đạt được độ ổn định của nền tảng vào hôm nay với Bản beta 3. Điều này 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, 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ó khả năng tích hợp cao.
Hãy chuẩn bị sẵn sàng ứng dụng, thư viện, công cụ và công cụ phát triển trò chơi của bạn!
Nếu bạn 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ờ thậm chí còn quan trọng hơn để ngăn 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 mới nhất của SDK. 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 đủ Android 17.
Quá trình kiểm thử bao gồm việc cài đặt ứng dụng chính thức hoặc ứng dụng thử nghiệm sử dụng thư viện hoặc công cụ của bạn bằng Google Play hoặc các phương tiện khác trên thiết bị hoặc trình mô phỏng chạy Android 17 Bản thử nghiệm 3. 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 nói chung. Những thay đổi này có thể ảnh hưởng đến ứng dụng của bạn. Sau đây là một số thay đổi cần lưu ý:
- 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 thể chọn không duy trì các quy tắc hạn chế 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 nữa.
- 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 sẽ áp dụng cho cả thư viện gốc. Tất 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 CT theo mặc định: Tính minh bạch của chứng chỉ (CT) được bật theo mặc định. (Trên Android 16, CT có sẵn nhưng ứng dụng phải chọn sử dụng.)
- Biện pháp bảo vệ mạng cục bộ: Theo mặc định, các ứng dụng nhắm đến Android 17 trở lên sẽ bị chặn quyền truy cập vào mạng cục bộ. Chuyển sang sử dụng bộ 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 và liên tục.
Cải tiến về nội dung nghe nhìn và camera
Các lựa chọn tuỳ chỉnh cho Công cụ chọn ảnh
Giờ đây, Android cho phép bạn điều chỉnh cách trình bày hình ảnh của công cụ chọn ảnh để phù hợp hơn với 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 áp dụng cho cả ý định ACTION_PICK_IMAGES và công cụ chọn ảnh được nhúng, giú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.
Tất cả những điều này đều nằm trong nỗ lực của chúng tôi nhằm giúp công cụ chọn ảnh đảm bảo quyền riêng tư của Android phù hợp một cách liền mạch với trải nghiệm trong ứng dụng của bạn. Tìm hiểu thêm về cách nhúng công cụ chọn ảnh ngay 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 mỗi pixel, sử dụng bố 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, giúp bạn sử dụng các tính năng camera mới nhất và tốt nhất, chẳng hạn như "Siêu phân giải" hoặc các tính năng nâng cao dựa trên AI tiên tiế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 mới của Android 17 cho phép bạn truy vấn loại thiết bị cơ bản để xác định xem camera là phần cứng tích hợp, webcam USB bên ngoài hay camera ảo.
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 năng lượng thấp (BLE) Audio. Nhờ bổ sung 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 nơi phát các âm thanh cụ thể của hệ thống. Người dùng có thể chọn định tuyến thông báo, nhạc chuông và chuông báo đến thiết bị trợ thính đã 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 ra mắt 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 phương thức mã hoá âm thanh và lời nói hợp 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ải tiến về hiệu suất và pin
Giảm khoá chế độ thức bằng tính năng hỗ trợ trình nghe cho chuông báo cho phép khi ở trạng thái rảnh
Android 17 ra mắt một biến thể mới của AlarmManager.setExactAndAllowWhileIdle, chấp nhận OnAlarmListener thay vì PendingIntent. Cơ chế mới dựa trên lệnh gọi lại này là lựa chọn lý tưởng cho những ứng dụng hiện dựa vào khoá chế độ thức liên tục để thực hiện các tác vụ định kỳ, chẳng hạn như ứng dụng nhắn tin duy trì kết nối ổ cắm.
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
Android sẽ ra mắt 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 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.
Chế độ cài đặt riêng biệt về việc hiện mật khẩu cho bàn phím cảm ứng và bàn phím thực
Tính năng này chia chế độ cài đặt hệ thống "Hiện mật khẩu" hiện có thành hai lựa chọn ưu tiên riêng biệt của người dùng: một lựa chọn cho phương thức nhập bằng thao tác chạm và một lựa chọn cho phương thức nhập bằng bàn phím thực (phần cứng). Theo mặc định, các ký tự được nhập qua bàn phím vật lý hiện sẽ bị ẩn ngay lập tức.
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ế độ chỉ đọc
Để tăng cường bảo mật trước các cuộc tấn công tiêm mã, Android hiện thực thi quy định rằng các thư viện gốc được tải động phải ở chế độ chỉ đọc. Nếu ứng dụng của bạn nhắm đến Android 17 trở lên, thì tất cả tệp gốc được tải bằng System.load() đều 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ý tệp APK kết hợp bằng mật mã hậu lượng tử (PQC)
Để chuẩn bị cho những tiến bộ trong tương lai của điện toán lượng tử, Android sẽ hỗ trợ Mật mã hậu lượng tử (PQC) thông qua Lược đồ chữ ký APK phiên bản 3.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 các tiện ích trên màn hình ngoài
Tính năng này cải thiện tính nhất quán về hình ảnh của các tiện ích ứng dụng khi chúng xuất hiện trên màn hình được kết nối hoặc màn hình ngoài có mật độ pixel khác nhau bằng cách sử dụng đơ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 )
Nhãn ứng dụng bị ẩn trên màn hình chính
Android hiện cung cấp một chế độ cài đặt cho 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.
Chế độ Hình trong hình có tí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ó thể tương tác trong khi luôn ở trên cùng của 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) {}
}
)Thanh công cụ Trình ghi màn hình được thiết kế lại
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 tinh chỉnh 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 tên trong TLS.
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ợ 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 ý 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 và 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.
Để biết thông tin đầy đủ, hãy truy cập trang web dành cho nhà phát triển Android 17.
-
Tin tức về sản phẩmHôm nay, chúng tôi sẽ phát hành Android 17 và cung cấp phiên bản này trên hầu hết các thiết bị Pixel được hỗ trợ. Hãy đón chờ các thiết bị mới chạy Android 17 trong những tháng tới.
Matthew McCullough • Thời gian đọc: 13 phút -
Tin tức về sản phẩmHôm nay, tại Hội nghị Nhà phát triển Android, chúng tôi xin thông báo về việc cung cấp rộng rãi nhiều công cụ và API được thiết kế để loại bỏ những trở ngại hằng ngày và giúp bạn linh hoạt hơn trong việc xây dựng các ứng dụng Android tuyệt vời.
Matthew McCullough • Thời gian đọc: 4 phút -
Tin tức về sản phẩmHôm nay, chúng tôi sẽ phát hành nhóm nhiệm vụ có phạm vi kéo dài (LHT) đầu tiên. Đây là những nhiệm vụ có độ phức tạp cao, khiến một kỹ sư phải mất nhiều ngày hoặc thậm chí một tuần để hoàn thành. Chúng tôi cũng sẽ ra mắt tính năng đánh giá dựa trên tác nhân, bắt đầu từ các tác nhân của những nhà cung cấp mô hình tương ứng.
Matthew McCullough • Đọc trong 3 phút
Nhận thông tin chi tiết mới nhất về hoạt động phát triển Android trong hộp thư đến của bạn hằng tuần.