d***@tmp.dcloud.io
d***@tmp.dcloud.io
  • 发布:2026-03-09 19:02
  • 更新:2026-03-09 19:02
  • 阅读:11

Google Play 强制要求 targetSdkVersion 35 + 16KB 页面支持,当前 SDK 无法通过审核

分类:uni-app

问题描述
我的 uni-app 应用通过 HBuilder 离线打包后上传到 Google Play Console,遇到以下两个互相冲突的错误:

错误1:API 级别要求

您的应用目前的目标 API 级别为 34,但其目标 API 级别不能低于 35,
以确保应用基于最新 API 构建,从而实现更高的安全性和性能
错误2:16KB 页面大小支持

您的应用不支持 16 KB 内存页面大小
这是一个死锁问题:

使用 targetSdkVersion 34 → 绕过 16KB 检测 → 但触发 API 级别过低错误

使用 targetSdkVersion 35 → 满足 API 级别要求 → 但触发 16KB 检测错误

技术分析

  1. 使用的 SDK 版本
    SDK 版本:Android-SDK@4.87.82540_20251128(2025年11月28日)

下载来源:DCloud 官网推荐的正式版链接

AAR 文件:

uniapp-v8-release.aar(24MB)

lib.5plus.base-release.aar(4.8MB)

  1. 根本原因
    通过 file 命令检查 AAR 中的 SO 文件,发现:

$ file libweexcore.so
libweexcore.so: ELF 64-bit LSB shared object, ARM aarch64,
built by NDK r27 (12077973), BuildID[sha1]=08790cf25df42b142c3faaf675ee8dba2e2dde23
问题所在:

SO 文件使用 NDK r27 编译

ELF 段对齐(p_align)为 4KB (2^12),而不是 Google Play 要求的 16KB (2^14)

这是编译时确定的二进制属性,无法通过配置或重新打包修改

  1. 已尝试的解决方案(均无效)
    方案1:配置 16KB 支持属性
    <!-- AndroidManifest.xml -->
    <property
    android:name="android.app.PROPERTY_SUPPORT_16KB_PAGE_SIZE"
    android:value="true" />
    结果:无效。Google Play 会检查实际的 ELF 段对齐,而不仅仅是声明。

方案2:使用 AGP 8.7.3 的 ZIP 对齐
android {
packaging {
jniLibs {
useLegacyPackaging = true
}
}
}
结果:无效。AGP 只能处理 ZIP 层面的对齐,无法修改已编译的 ELF 段对齐。

方案3:使用 zipalign -P 16 强制重排
zipalign -p -v -P 16 input.apk output_16k_aligned.apk
结果:无效。zipalign 只能改变文件在 APK 中的起始位置,无法修改 SO 文件内部的 ELF 段对齐。

方案4:指定 ndkVersion
android {
ndkVersion "28.0.12433510"
}
结果:无效。ndkVersion 只影响项目自己的 C/C++ 代码编译,对预编译的 AAR 文件无效。

Google Play 的检测机制
Google Play 会解析 SO 文件的 ELF 头,检查 LOAD 段的 p_align 字段:

要求:p_align = 2^14 = 16384 (16KB)

当前:p_align = 2^12 = 4096 (4KB)

这个值是在编译时写入的,需要:

使用 NDK r28+(默认 16KB 对齐)

或在 NDK r27 编译时添加参数:

-Wl,-z,max-page-size=16384
疑问
官网声称的"修复 16KB 模式 Bug"是什么意思?

更新日志提到:"修复 录音功能在某些启用16KB模式的设备无法正常使用的Bug"

这是否意味着 SDK 本身已经支持 16KB?

我验证后发现 SO 文件仍然是 NDK r27 编译,不支持 16KB

是否有支持 16KB 的新版本 SDK?

我下载的是官网推荐的正式版(2025年12月11日)

但实际文件日期是 2025年11月28日

是否有更新的版本?

Alpha 版本是否支持 16KB?

HBuilderX 5.01.2026021122-alpha(2026年02月25日)

这个版本是否已经使用 NDK r28+ 重新编译?

请求
希望官方能够:

确认当前正式版是否支持 16KB

如果不支持,预计何时发布支持 16KB 的版本

提供临时解决方案或建议

环境信息
HBuilder SDK:Android-SDK@4.87.82540_20251128

AGP 版本:8.7.3

Gradle 版本:8.11.1

compileSdkVersion:35

targetSdkVersion:35

buildToolsVersion:35.0.0

感谢官方的支持!

2026-03-09 19:02 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据知识库内容,针对您遇到的 Google Play 强制要求 targetSdkVersion 35 + 16KB 页面支持问题,以下是官方确认和解决方案:

  1. 当前正式版 SDK 16KB 支持状态

    • 您使用的 Android-SDK@4.87.82540_20251128 版本已修复部分内置依赖不支持16KB分页的问题(见更新日志
    • 并非所有SO文件都已适配16KB对齐,特别是您检测到的 libweexcore.so 等核心库仍使用 NDK r27 编译(4KB对齐)
  2. 官方已确认的不支持16KB的模块

    • 需特别注意以下模块在 Google Play 提交时需排除:
      • OAID(需删除 msa_mdid_1.0.13.aar 和 oaid_sdk_1.0.25.aar)
      • 国内广告 SDK(如 uni-ad 的国内渠道)
      • 友盟统计模块
    • 完整列表见官方文档
  3. 临时解决方案

    • 立即生效方案:使用 HBuilderX 4.81+ 进行云打包,并在打包时:
      1. 选择「Google Play(AAB)」渠道包
      2. 在 manifest.json 中移除所有不支持16KB的模块
    • 离线打包用户:需等待官方发布完全适配的 SDK 版本
  4. 版本更新计划

    • 知识库显示 HBuilderX 4.81 已适配 16KB,但您使用的 4.87 版本仍存在部分 SO 未对齐问题
    • 建议关注后续 Alpha 版本(如 5.02+)的更新日志,或直接使用最新 Alpha 版本测试
  5. 验证建议

如需进一步技术支持,建议通过官方工单系统提交包含具体 SO 文件检测结果的问题报告。

内容为 AI 生成,仅供参考

要回复问题请先登录注册