怎么回事呢?

也就是群众里面有敌人
这是 Google Play Console 在你提交应用正式版本时,抛出的16KB 内存页面大小合规性错误,是 Android 15 + 设备的强制要求,自 2025 年 11 月 1 日起所有新应用 / 更新必须适配,否则无法上架。
Android 系统传统使用 4KB 内存页,而新款设备(如搭载 Android 15 的旗舰机)已支持 16KB 内存页以提升性能。你的应用(Flutter 开发)当前构建产物未满足 16KB 页面对齐要求,因此被 Play Console 拦截。
我还是照常打包,然后解压包,上传到linux上,因为我想查一下so库的内存分页情况
写一以下这个脚本:
#!/bin/bash
echo "===== 16KB Page Size 深度检测 ====="
FAIL=0
check_so() {
so=$1
ALIGN=$(readelf -l "$so" 2>/dev/null | grep "LOAD" | awk '{print $NF}' | sort -u)
if echo "$ALIGN" | grep -q "0x1000"; then
echo "[FAIL ❌] $so -> $ALIGN"
FAIL=1
else
echo "[PASS ✅] $so -> $ALIGN"
fi
}
for abi in arm64-v8a armeabi-v7a x86_64; do
if [ -d "./$abi" ]; then
echo ""
echo ">>> 检查 ABI: $abi"
for so in $(find ./$abi -name "*.so"); do
check_so "$so"
done
fi
done
echo ""
echo "=================================="
if [ $FAIL -eq 1 ]; then
echo "❌ 检测结果:存在 4KB 对齐库(不合规)"
else
echo "✅ 检测结果:全部合规(>=16KB)"
fi
运行结果:
root@VM-24-12-ubuntu:/home/ubuntu/aab/lib# ./test.sh
===== 16KB Page Size 深度检测 =====
>>> 检查 ABI: arm64-v8a
[PASS ✅] ./arm64-v8a/libdatastore_shared_counter.so -> 0x0000000000000000
0x0000000000004000
0x0000000000008000
[PASS ✅] ./arm64-v8a/libsm_ecg_sdk.so -> 0x0000000000000000
0x0000000000080110
0x0000000000088558
[PASS ✅] ./arm64-v8a/libtensorflowlite_jni.so -> 0x0000000000000000
0x0000000000358000
0x0000000000362420
[PASS ✅] ./arm64-v8a/libRtkAesJni.so -> 0x0000000000000000
0x00000000000080d0
0x000000000000c2e0
[PASS ✅] ./arm64-v8a/libtensorflowlite_gpu_jni.so -> 0x0000000000000000
0x00000000001e0000
0x00000000001f1f38
[PASS ✅] ./arm64-v8a/libalgorithm.so -> 0x0000000000000000
0x0000000000125c80
0x00000000001328c8
[PASS ✅] ./arm64-v8a/libmmkv.so -> 0x0000000000000000
0x0000000000094700
[PASS ✅] ./arm64-v8a/libflutter.so -> 0x0000000000000000
0x0000000000a80760
0x0000000000ae8768
[PASS ✅] ./arm64-v8a/libapp.so -> 0x0000000000000000
0x00000000003c0000
0x00000000009c0000
>>> 检查 ABI: armeabi-v7a
[PASS ✅] ./armeabi-v7a/libdatastore_shared_counter.so -> 0x4000
[PASS ✅] ./armeabi-v7a/libsm_ecg_sdk.so -> 0x4000
[FAIL ❌] ./armeabi-v7a/libtensorflowlite_jni.so -> 0x1000
[FAIL ❌] ./armeabi-v7a/libRtkAesJni.so -> 0x1000
[FAIL ❌] ./armeabi-v7a/libtensorflowlite_gpu_jni.so -> 0x1000
[PASS ✅] ./armeabi-v7a/libalgorithm.so -> 0x4000
[FAIL ❌] ./armeabi-v7a/libmmkv.so -> 0x1000
[FAIL ❌] ./armeabi-v7a/libflutter.so -> 0x10000
[PASS ✅] ./armeabi-v7a/libapp.so -> 0x4000
>>> 检查 ABI: x86_64
[PASS ✅] ./x86_64/libdatastore_shared_counter.so -> 0x0000000000000000
0x0000000000004000
0x0000000000008000
[PASS ✅] ./x86_64/libtensorflowlite_jni.so -> 0x0000000000000000
0x000000000046e000
0x00000000004750e0
[PASS ✅] ./x86_64/libRtkAesJni.so -> 0x0000000000000000
0x0000000000008110
0x000000000000c320
[PASS ✅] ./x86_64/libtensorflowlite_gpu_jni.so -> 0x0000000000000000
0x0000000000213000
0x00000000002210a0
[PASS ✅] ./x86_64/libmmkv.so -> 0x0000000000000000
0x000000000008d670
[PASS ✅] ./x86_64/libflutter.so -> 0x0000000000000000
0x0000000000bb1ae0
0x0000000000c17de0
[PASS ✅] ./x86_64/libapp.so -> 0x0000000000000000
0x00000000003c0000
0x0000000000a10000
==================================
❌ 检测结果:存在 4KB 对齐库(不合规)
root@VM-24-12-ubuntu:/home/ubuntu/aab/lib#
发现v7的包下面的就是4kb的。
那做法就很简单了,去掉不就可以了。
于是我在gradle文件里添加了以下配置:
android{
packaging {
jniLibs {
excludes += listOf(
"**/armeabi-v7a/*.so",
"**/x86_64/*.so",
)
}
}
}
也就是排除v7和x86的so库
然后我再打包,检查的结果是:






