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

AVD模拟器报INSTALL_FAILED_MISSING_SHARED_LIBRARY安装错误排查

问题根因

你之前将EMDK的jar包放入SDK optional 目录、修改optional.json的操作,仅能解决编译阶段找不到EMDK类的报错,不会影响APK打包逻辑,也不会给AVD虚拟设备的系统镜像添加对应共享库。
Android系统安装APK时校验<uses-library>声明,本质是检查系统分区预装的共享库列表,谷歌官方提供的原生AVD镜像没有内置Zebra的com.symbol.emdk库,因此必然触发INSTALL_FAILED_MISSING_SHARED_LIBRARY安装错误。

解决方案

根据你的调试需求二选一即可:

方案1:仅需在AVD调试非EMDK相关业务逻辑

不需要换模拟器,改2处配置即可:

  • 修改Manifest中的uses-library声明,添加android:required="false"属性,告诉系统这个库不是安装必需项:
<application>
    <!-- 其他原有配置 -->
    <uses-library
        android:name="com.symbol.emdk"
        android:required="false" />
</application>
  • 所有涉及EMDK调用的代码位置,加运行时库存在校验,避免非Zebra设备上触发类找不到崩溃:
// Java示例
private boolean isEMDKAvaliable() {
    try {
        Class.forName("com.symbol.emdk.EMDKManager");
        return true;
    } catch (ClassNotFoundException e) {
        return false;
    }
}

触发打印、扫码等EMDK相关逻辑前先做判断,返回false时直接跳过对应逻辑即可,不影响其他业务功能在AVD上的调试。

注意:该配置不影响实体Zebra设备的运行,Zebra设备系统自带EMDK库,相关功能可正常触发。

方案2:需要在模拟器上调试EMDK相关打印/扫码功能

不要使用谷歌原生AVD镜像,替换为Zebra官方提供的对应Android版本的设备模拟器镜像,这类镜像默认预装了对应版本的EMDK共享库,既不会触发安装校验错误,也自带模拟的硬件能力,可以直接调试EMDK相关业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:24:22