在不同设备上运行Xamarin.Forms应用[错误:install_failed_missing_shared_library]

时间:2019-03-22 10:50:14

标签: android xamarin xamarin.forms

我目前正在使用Xamarin.Forms应用程序,该应用程序使用移动设备的本机条形码扫描功能。我已经集成了来自不同制造商(卡西欧和电装)的两个不同的设备SDKS。

主启动器为SplashActivity,它显示初始屏幕,检测设备信息并启动以下其中一项:

  • CasioActivity
  • DensoActivity

这些活动负责订阅扫描由相应设备引发的事件。

Denso集成是使用制造商提供的DLL文件完成的,而Casio集成是通过Xamarin Bindings项目following this tutorial完成的。

部署到Casio可以正常工作,但是当我在Denso单元上部署应用程序时,我在Visual Studio中收到以下错误消息:

install_failed_missing_shared_library device.sdk is required

我认为,Casio SDK(*。aar文件)强迫该应用程序仅在Casio设备上运行。我尝试将以下内容添加到应用程序清单中:

<uses-library android:name="device.sdk" android:required="false" />

,还尝试将UsesLibrary属性添加到所有活动中,以使device.sdk是可选的,但没有任何效果。似乎绑定项目在部署时将以下内容注入清单文件:

<uses-library android:name="device.sdk" android:required="true" />

有什么方法可以防止将上述行插入清单文件?

我想使应用程序与这两个单元兼容。

1 个答案:

答案 0 :(得分:0)

我通过修改aar文件解决了这个问题。

  1. 使用7zip将aar文件提取到文件夹中
  2. 在提取的文件夹中找到应用程序清单
  3. android:required属性设置为false。
  4. 再次压缩文件夹
  5. 将文件扩展名从.zip更改为.aar
  6. 将新文件作为shown here放在Jars文件夹下