You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Android AAB安装时的‘Library is not PAGE(16384)-aligned’错误

问题:AAB上传Google Play后,16KB页大小的.so库安装失败

背景信息

  • 编译配置:
    • Android.mk中添加:LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"
    • Application.mk中添加:APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true
  • 本地测试:Android Studio Koala环境下,开启16KB页大小模式的Android 15设备可正常运行
  • 问题现象:打包签名AAB上传Google Play后,下载安装报错,日志关键信息:
    09-03 22:26:02.654  1336  1697 E NativeLibraryHelper: Library 'libsqlc-native-driver.so' is not PAGE(16384)-aligned - will not be able to open it directly from apk.
    09-03 22:26:02.654  1336  1697 W NativeHelper: Failure copying native libraries [errorCode=-2]
    09-03 22:26:02.654  1336  1697 D PackageInstallerSession: Marking session 1857550392 as failed: INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2
    
  • 已确认:构建前的.so库已16KB对齐(./libsqlc-native-driver.so: ALIGNED (2**14))

解决方案

1. 阻止打包流程破坏.so对齐

Google Play处理AAB时的自动优化可能会破坏.so的对齐,需在打包配置中保留对齐:

  • 在Module级build.gradle中添加:
    android {
        packagingOptions {
            jniLibs {
                // 禁止剥离目标so的符号或修改结构
                doNotStrip "**/libsqlc-native-driver.so"
            }
        }
    }
    
  • 用zipalign验证最终APK中的.so对齐:
    zipalign -c -v 16384 app-release.apk
    

2. 强化NDK编译的对齐参数

除了链接器参数,强制编译和链接阶段都对齐到16KB:

  • 修改Android.mk:
    # 编译阶段对齐函数/跳转/循环到16KB
    LOCAL_CFLAGS += -falign-functions=16384 -falign-jumps=16384 -falign-loops=16384
    # 链接阶段同时设置公共页大小和最大页大小
    LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384" "-Wl,-z,common-page-size=16384"
    

3. 临时关闭Google Play的Native库优化

在Play Console中进入应用→发布→应用签名→高级选项,关闭Native库相关的优化选项,重新上传AAB测试。

4. 跳过AAB直接测试APK

打包签名APK后,手动安装到目标设备或上传至Play内部测试轨道,确认是否是AAB处理流程导致的问题。若APK安装正常,需联系Play开发者支持反馈对齐被破坏的问题。

5. 升级NDK版本

确保使用NDK 26及以上版本(Android 15要求的最低NDK版本),旧版本可能存在灵活页大小特性的兼容性问题。


内容的提问来源于stack exchange,提问作者italia57

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:40:12