我们正在尝试升级已弃用很久的 epson 的 SDK。
我们使用的是旧的 ePOS-Print SDK (com.epson.eposprint) 包,但我们开始遇到问题,因此我们正确地决定迁移到当前的 Epson ePOS SDK for Android (com.epson.epos2)。
我们正在使用 Visual Studio Xamarin。
我们遵循了 SDK 中包含的迁移文档。替换了大部分代码。但是,似乎 Xamarin 的 java 绑定有问题或缺少某些东西,因为几乎 90% 的枚举值不可用。没有枚举值来正确调用方法几乎是不可能的……例如,我们确实有一些可用的枚举(如 BatteryLevelX、TMxx、Pattern*),但仅此而已。
我们使用的是安卓 8.0
我们的 javabinding 项目是这样配置的:
--JarLibrary
----Jars
-------ePOS2.jar
-------ePOSEasySelect.jar
----libs
------armeabi
--------libepos2.so
--------libeposeasyselect.so
------armeabi-v7a
--------libepos2.so
--------libeposeasyselect.so
项目属性:
Android 类解析器:jar2xml Android 代码生成目标:XAJavaInterop1
任何想法为什么会这样?
编辑:解决方案是确保 SDK 中没有可见性关键字的所有对象都使用 Metadata.xml 转换文件进行修复,这样:
<!-- On enlève l'ancienne classe du package qui ne sert plus à rien, juste pour la migration -->
<remove-node path="/api/package[starts-with(@name, 'com.epson.epsonio')]" />
<!-- Need to change the visibility of many ommited classes visibility in jar epos -->
<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='NativeDevice']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice.commbox']/class[@name='NativeCommBox']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice.commbox']/class[@name='NativeCommBoxManager']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice.keyboard']/class[@name='NativeKeyboard']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice.printer']/class[@name='NativePrinter']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice.scanner']/class[@name='NativeScanner']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice.simpleserial']/class[@name='NativeSimpleSerial']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='DeviceInnerImplement']"
name="visibility">protected</attr>
<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='NativeDevice']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.epos2.printer']/class[@name='CommonPrinter']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.epos2.printer']/class[@name='LogoKeyCode']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.epos2']/class[@name='NativeInitializer']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.epos2']/class[@name='OutputLog']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice.display']/class[@name='NativeDisplay']"
name="visibility">public</attr>
<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='Device.DeleteDeviceCallbackAdapter']"
name="visibility">protected</attr>