You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android Studio应用可在真机运行但无法在模拟器运行的解决求助

解决Android应用仅支持ARM架构无法在模拟器运行的问题

嘿,我来帮你搞清楚这个问题的来龙去脉,还有靠谱的解决办法~

为什么真机能跑但模拟器不行?

首先得明确一个核心差异:真实的Google Pixel设备是ARM架构的(具体是arm64-v8a),刚好匹配你在gradle里设置的abiFilters 'armeabi-v7a', 'arm64-v8a',所以运行完全没问题。

但默认的Android模拟器(包括Pixel型号的AVD)用的是x86/x86_64架构的镜像——因为x86架构在电脑上模拟的性能要比ARM好很多,所以官方默认推荐用这个。而你的应用已经移除了x86 ABI的支持,构建时系统检测到模拟器是x86架构,自然就会抛出Cannot build for ABI: x86 supported ABIs are: armeabi-v7a, arm64-v8a的错误。

修复方案

方案一:创建ARM架构的模拟器镜像(最推荐)

这个方法不需要修改任何代码或配置,直接让模拟器匹配你的应用支持的ABI:

  • 打开Android Studio的AVD Manager
  • 点击「Create Virtual Device」,选择你需要的Pixel型号(比如Pixel 7)
  • 进入「System Image」步骤,在列表里找带有ARM 64ARM标签的镜像(看ABI列,要选arm64-v8aarmeabi-v7a的)
  • 完成镜像下载和AVD创建后,启动这个模拟器,你的应用就能正常安装运行了

方案二:给x86模拟器开启ARM转译(备选,性能较差)

如果你一定要用x86架构的模拟器,可以尝试开启它的ARM转译功能,让模拟器能兼容ARM架构的SO文件:

  • 启动x86模拟器后,点击侧边栏的三个点打开「Extended Controls」
  • 切换到「Advanced」标签页,找到「Enable ARM translation」选项并开启
  • 重启模拟器,再尝试安装你的应用

不过这个方法有个明显缺点:转译后的性能会比原生x86模拟器差不少,而且部分复杂的ARM指令可能转译失败,导致应用崩溃,所以更推荐方案一。

为什么不能直接添加x86支持?

因为你现在联系不上C开发者,没办法编译出x86架构的OpenCV和自定义C代码的SO库。如果强行在abiFilters里加上x86,安装后应用会因为找不到对应架构的SO文件而直接崩溃,所以这个路子走不通。

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

火山引擎 最新活动