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

如何用Visual C++ 2017编译armeabi原生库并生成Fat APK?

我来帮你搞定这个用Visual C++ 2017编译armeabi原生库和生成Fat APK的问题,结合你提到的细节,整理了具体可操作的步骤:

一、编译armeabi架构的原生库(.so)

你提到的AndroidArch属性和GCC编译的问题,核心是要正确配置VS的目标架构和工具链:

  • 通过项目属性设置AndroidArch
    右键你的原生项目 → 属性 → 配置属性 → 常规,找到「目标平台」选项。默认可能是armeabi-v7a,直接手动输入armeabi(注意拼写准确,下拉菜单里没有也没关系,手动填就行)。确认后应用配置,VS就会把目标架构切换为armeabi。

  • 手动编辑项目文件兜底
    如果上面的图形界面配置不生效,直接打开项目的.vcxproj文件,用文本编辑器找到<AndroidArch>节点,把值改成armeabi,比如:

    <AndroidArch>armeabi</AndroidArch>
    

    保存后重新加载项目,就能生效。

  • GCC工具链的适配
    你之前换GCC后生成的.so还是跑到armeabi-v7a目录,大概率是因为架构配置没改对。另外要注意:Google从NDK r17开始就废弃了armeabi架构,所以你得确保VS2017安装的NDK是r16或更早的版本(VS2017默认的NDK版本一般是支持armeabi的,但最好去「工具→获取工具和功能」里确认NDK组件是否包含armeabi的支持)。

二、生成包含全架构的Fat APK

Fat APK就是打包了多架构.so的APK,按下面的步骤来:

  • 编译所有需要的架构的.so
    分别为armeabi、armeabi-v7a、arm64-v8a、x86等你需要的架构重复上面的编译步骤,每个架构都会生成对应目录下的.so文件(比如armeabi的.so会在$(SolutionDir)\$(PlatformTarget)\$(Configuration)\lib\armeabi路径下)。

  • 配置Android应用项目的支持架构
    右键你的Android应用项目(生成APK的那个项目)→ 属性 → Android选项 → 高级,在「支持的架构」里勾选所有你要打包的架构(一定要包含armeabi)。

  • 确保.so被正确打包
    如果原生项目是Android应用项目的依赖,VS会自动把各架构的.so复制到APK对应的目录里。如果是手动管理的话,把每个架构的.so放到Android应用项目的libs文件夹下对应的子目录(比如libs/armeabi、libs/armeabi-v7a),打包时VS会自动把这些文件整合到APK中,最终生成包含全架构的Fat APK。

额外提醒

由于Google已经废弃了armeabi架构,新的NDK版本不再提供支持,如果你后续需要升级NDK,可能就没法再编译armeabi了。如果不是必须兼容非常老旧的设备,优先考虑用armeabi-v7a及以上的架构会更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:55:03