Flutter打包APK时如何仅保留arm64-v8a并去除x86_64和arm架构

在Flutter项目打包APK时,默认会包含arm64-v8a、x86_64和arm架构,导致APK体积较大。现在想只保留arm64-v8a架构,去除x86_64和arm架构以减小APK大小。请问如何在build.gradle或其他配置文件中修改,实现仅保留arm64-v8a的目标?是否需要额外处理兼容性问题?

2 回复

在Flutter项目中,修改android/app/build.gradle文件,在android块内添加以下配置:

android {
    // ...
    splits {
        abi {
            enable true
            reset()
            include 'arm64-v8a'
            universalApk false
        }
    }
}

或者使用更简洁的方式:

android {
    ndk {
        abiFilters 'arm64-v8a'
    }
}

保存后运行:

flutter build apk --release

这样生成的APK将只包含arm64-v8a架构,文件体积会显著减小。注意这会放弃对32位设备的支持,但现代Android设备基本都已支持64位架构。

更多关于Flutter打包APK时如何仅保留arm64-v8a并去除x86_64和arm架构的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter打包APK时,可以通过修改android/app/build.gradle文件来仅保留arm64-v8a架构并去除其他架构。具体步骤如下:

  1. 打开 android/app/build.gradle 文件。
  2. android 块内的 defaultConfigbuildTypes 中添加 ndk 配置,指定仅包含 arm64-v8a

示例代码:

android {
    // 其他配置...
    
    defaultConfig {
        // 其他配置...
        
        ndk {
            abiFilters 'arm64-v8a'  // 仅保留arm64-v8a
        }
    }
}
  1. 如果已存在 abiFilters,请直接修改为仅包含 'arm64-v8a'
  2. 保存文件后,运行以下命令重新打包APK:
    flutter build apk --release
    

效果:

  • 生成的APK将仅包含arm64-v8a架构的本地库。
  • 文件体积会显著减小,适用于大多数现代Android设备(64位ARM架构)。

注意:

  • 此配置仅影响Release构建,Debug构建可能仍包含所有架构。
  • 确保目标设备支持arm64-v8a,否则应用可能无法运行。
回到顶部