公司动态

【Android】Android TargetSdk 35 -> 36迁移要点

📅 2026/8/6 19:49:19
【Android】Android TargetSdk 35 -> 36迁移要点
Android TargetSdk 35 - 36迁移要点1. 先升级构建工具2. 返回事件必须迁移3. Edge-to-edge 必须适配4. 平板横屏适配5. 检查 16 KB Page Size其他需要处理的项目1. 先升级构建工具项目 当前 建议━━━━━━━━━━━━━━━━━━━━━━━━targetSdk 35 改为 36──────────── ─────── ─────────────compileSdk 35 改为 36──────────── ─────── ─────────────AGP 8.6.1 至少 8.9.1──────────── ─────── ─────────────Gradle 8.7 至少 8.11.1──────────── ─────── ─────────────JDK — JDK 17API 36 官方要求最低 AGP 8.9.1AGP 8.9 对应 Gradle 8.11.1。Android API/AGP 兼容表 (https://developer.android.com/build/releases/about-agp)、Android 16 SDK配置 (https://developer.android.com/about/versions/16/setup-sdk)至少需要修改android { compileSdk 36 defaultConfig { targetSdk 36 } }你的所有 Android Library 模块也建议统一为compileSdk 362. 返回事件必须迁移Android 16 上应用 target 36 后Activity.onBackPressed() 不再被调用。需要迁移到onBackPressedDispatcher.addCallback( this, object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { // 原 onBackPressed() 逻辑 } } )Compose 页面使用BackHandler { // 返回逻辑 }暂时来不及迁移可以在 Manifest 临时关闭预测返回application android:enableOnBackInvokedCallbackfalse但建议最终迁移到 OnBackPressedDispatcher。Android 16 返回行为变化 (https://developer.android.com/about/versions/16/behavior-changes-16)、预测返回迁移指南(https://developer.android.com/guide/navigation/custom-back/predictive-back-gesture)3. Edge-to-edge 必须适配如果当前使用了item nameandroid:windowOptOutEdgeToEdgeEnforcementtrue/itemtarget 36 在 Android 16 上会忽略这个属性无法退出 Edge-to-edge。需要使用 WindowInsetsCompat 给状态栏、导航栏、刘海和 IME 添加正确的 paddingCompose 使用WindowInsets.safeDrawing 或 safeDrawingPadding()。建议在公共 BaseActivity 中统一处理适配完成后删除 windowOptOutEdgeToEdgeEnforcement。官方 Edge-to-edge 变化(https://developer.android.com/about/versions/16/behavior-changes-16)4. 平板横屏适配如果 Activity 设置了android:screenOrientationportraittarget 36 后在 sw600dp 及以上的平板、折叠屏上该限制会被忽略。需要检查横屏、分屏和 Activity 重建后的状态恢复。临时退出方式application property android:nameandroid.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY android:valuetrue / /application这个退出方式只是临时方案target API 37 后不再有效。Android 16 大屏行为变化 (https://developer.android.com/about/versions/16/behavior-changes-16)5. 检查 16 KB Page Size比如 APK 包含lib/arm64-v8a/libandroidx.graphics.path.so lib/arm64-v8a/libdatastore_shared_counter.so这现有 APK 的 ZIP 16 KB 对齐如果已经通过但还应使用 Android Studio APK Analyzer 或 check_elf_alignment.sh 检查 ELF 段并在 16 KB API 36 模拟器测试。GooglePlay 已要求面向 Android 15 以上的应用支持 16 KB 页大小。16 KB 官方指南 (https://developer.android.com/guide/practices/page-sizes)其他需要处理的项目代码中如果发现以下 API通常需要额外修改BODY_SENSORSMediaStore.getVersion()scheduleAtFixedRate()直接使用 JobScheduler局域网发现或原始 Socket优先处理顺序建议是AGP、Gradle、compileSdk所有 onBackPressed()Edge-to-edge平板横屏16 KB 测试Google Play 从 2026 年 8 月 31 日开始要求新应用和更新 target API 36。Google Play target API 要求(https://developer.android.com/google/play/requirements/target-sdk)