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

如何解决Flutter应用在Android 16KB页面大小设备上的安装失败问题?

Flutter应用无法在16KB页面大小设备运行的修复方案

错误日志

Failure [INSTALL_FAILED_INVALID_APK: INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2]
Error launching application on sdk gphone16k x86 64.

环境信息

  • Flutter版本:3.19.4(后续升级至3.22.1、3.24.1仍报错)
  • 平台:Android和iOS
  • compileSdkVersion:34
  • 使用Firebase

更新信息

升级到Flutter 3.24.1重新构建后错误依旧,运行官方检测脚本得到以下结果:

./build/app/outputs/flutter-apk/target/lib/mips/libpl_droidsonroids_gif.so: \e[32m已对齐\e[0m (2**16)
./build/app/outputs/flutter-apk/target/lib/armeabi-v7a/libflutter.so: \e[32m已对齐\e[0m (2**16)
./build/app/outputs/flutter-apk/target/lib/armeabi-v7a/libapp.so: \e[32m已对齐\e[0m (2**14)
./build/app/outputs/flutter-apk/target/lib/armeabi-v7a/libpl_droidsonroids_gif.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/armeabi-v7a/libbarhopper_v3.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/armeabi-v7a/libface_detector_v2_jni.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/armeabi-v7a/libtoolChecker.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/mips64/libpl_droidsonroids_gif.so: \e[32m已对齐\e[0m (2**16)
./build/app/outputs/flutter-apk/target/lib/x86/libpl_droidsonroids_gif.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/x86/libbarhopper_v3.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/x86/libface_detector_v2_jni.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/x86/libtoolChecker.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/arm64-v8a/libflutter.so: \e[32m已对齐\e[0m (2**16)
./build/app/outputs/flutter-apk/target/lib/arm64-v8a/libapp.so: \e[32m已对齐\e[0m (2**16)
./build/app/outputs/flutter-apk/target/lib/arm64-v8a/libpl_droidsonroids_gif.so: \e[32m已对齐\e[0m (2**16)
./build/app/outputs/flutter-apk/target/lib/arm64-v8a/libbarhopper_v3.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/arm64-v8a/libface_detector_v2_jni.so: \e[32m已对齐\e[0m (2**14)
./build/app/outputs/flutter-apk/target/lib/arm64-v8a/libtoolChecker.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/armeabi/libpl_droidsonroids_gif.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/x86_64/libflutter.so: \e[32m已对齐\e[0m (2**16)
./build/app/outputs/flutter-apk/target/lib/x86_64/libapp.so: \e[32m已对齐\e[0m (2**16)
./build/app/outputs/flutter-apk/target/lib/x86_64/libpl_droidsonroids_gif.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/x86_64/libbarhopper_v3.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/x86_64/libface_detector_v2_jni.so: \e[31m未对齐\e[0m (2**12)
./build/app/outputs/flutter-apk/target/lib/x86_64/libtoolChecker.so: \e[31m未对齐\e[0m (2**12)

修复步骤

1. 修复第三方Native库对齐问题

从检测结果看,多个第三方Native库(如libpl_droidsonroids_gif.so、libbarhopper_v3.so等)未按16KB页面大小对齐,这是核心问题:

  • pl_droidsonroids_gif相关库:更新依赖它的Flutter包(如flutter_gifimage)到最新版本,新版本通常会修复对齐问题。
  • 自定义/其他第三方Native库:
    • 若为自行编译的库,修改CMake编译脚本,添加-Wl,--page-size=16384链接参数,强制按16KB页面大小对齐。
    • 若为第三方SDK提供的库,联系开发者获取对齐后的版本,或替换为兼容的替代方案。

2. 配置AndroidManifest.xml启用自动对齐

在AndroidManifest.xml的<application>标签中添加以下属性,让系统自动处理Native库的对齐:

<application
    ...
    android:extractNativeLibs="true"
    android:hasCode="true">

3. 过滤不必要的CPU架构

在android/app/build.gradle中指定只构建目标架构,减少对齐问题的影响:

android {
    ...
    defaultConfig {
        ...
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        }
    }
}

4. 手动对齐APK

构建APK后,使用Android SDK的zipalign工具手动对齐:

zipalign -v -p 4 app-release-unsigned.apk app-release-aligned.apk

之后重新签名对齐后的APK。

5. 更新Firebase依赖

运行flutter pub upgrade更新所有依赖,确保Firebase SDK为最新版本,排查是否存在依赖冲突导致的对齐问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:56:05