我有一个读取条形码的应用程序。该应用程序可与带有通过 API 连接的集成读卡器的 Zebra 设备配合使用,也可与带有摄像头的常见 Android 设备配合使用。
问题是我收到此错误
Installation did not succeed.
The application could not be installed: INSTALL_FAILED_MISSING_SHARED_LIBRARY
在非 Zebra 设备中安装应用程序时。
可以将库设置为可选以避免双重编译(有/没有第三方库)吗?
是的,您可以将库指定为可选,并且还需要确保不要实例化在非 Zebra 设备上扩展 EMDKListener 的类,否则将会崩溃。我有一个在 Zebra 设备上使用 EMDK 但也在非 Zebra 设备上运行的应用程序示例,https://github.com/darryncampbell/WakeLock_WifiLock_Exerciser/tree/master/WakeLock_WifiLock_Exerciser。它没有使用 EMDK 进行扫描,但希望你能看到原理 - MainActivity.java 有一个测试 EMDK 是否可用
我解决了同样的问题。
首先按照建议修改AndroidManifest
<uses-library android:name="com.symbol.emdk" **android:required="false"** />
在我的 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);