Android 的 EMDK 用户库可选加载

问题描述 投票:0回答:2

我有一个读取条形码的应用程序。该应用程序可与带有通过 API 连接的集成读卡器的 Zebra 设备配合使用,也可与带有摄像头的常见 Android 设备配合使用。

问题是我收到此错误

Installation did not succeed.
The application could not be installed: INSTALL_FAILED_MISSING_SHARED_LIBRARY

在非 Zebra 设备中安装应用程序时。

可以将库设置为可选以避免双重编译(有/没有第三方库)吗?

android shared-libraries motorola-emdk
2个回答
1
投票

是的,您可以将库指定为可选,并且还需要确保不要实例化在非 Zebra 设备上扩展 EMDKListener 的类,否则将会崩溃。我有一个在 Zebra 设备上使用 EMDK 但也在非 Zebra 设备上运行的应用程序示例,https://github.com/darryncampbell/WakeLock_WifiLock_Exerciser/tree/master/WakeLock_WifiLock_Exerciser。它没有使用 EMDK 进行扫描,但希望你能看到原理 - MainActivity.java 有一个测试 EMDK 是否可用


0
投票

我解决了同样的问题。

首先按照建议修改AndroidManifest

<uses-library android:name="com.symbol.emdk" **android:required="false"** />

我使用 https://github.com/darryncampbell/WakeLock_WifiLock_Exerciser/blob/master/WakeLock_WifiLock_Exerciser/app/src/main/java/com/darryncampbell/wakelockexample/EMDKInterface.java 中建议的代码创建一个实例化 EMDK 的类

在我的 Android 应用程序类中,我创建了一个方法来检查 EMDK 是否可用

    public boolean isEMDKAvailable()
  {
    try
    {
        EMDKInterface test = new EMDKInterface(ContextAppManager.context);
        return true;
    }
    catch (NoClassDefFoundError e)
    {
        return false;
    }
}

但我的主要问题是能够使用相同的活动。我找到的唯一解决方案是扩展活动并插入与 Zebra SDK 相关的所有内容。

在创建活动的新意图期间,有必要检查 EMDK 以实例化正确的类

Intent i = new Intent(getBaseContext(),  ContextAppManager.getInstance().isEMDKAvailable() ? CheckTicketZebraActivity.class : CheckTicketActivity.class);
startActivity(i);
© www.soinside.com 2019 - 2024. All rights reserved.