爱普生 ePOS SDK for Android (Xamarin) 缺少常量 [英] Epson ePOS SDK for Android (Xamarin) missing constants

查看:39
本文介绍了爱普生 ePOS SDK for Android (Xamarin) 缺少常量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在尝试升级 epson 的 SDK,该 SDK 已弃用很久.

We are trying to updgrade the SDK of epson, which is deprecated since a long while.

我们使用的是旧的 ePOS-Print SDK (com.epson.eposprint) 软件包,但开始遇到问题,因此我们正确地决定迁移到当前的适用于 Android 的 Epson ePOS SDK (com.epson.epos2).

We were using the old ePOS-Print SDK (com.epson.eposprint) package and we began having problems with it, so we rightly decided to migrate to the current one, Epson ePOS SDK for Android (com.epson.epos2).

我们使用的是 Visual Studio Xamarin.

We are using Visual Studio Xamarin.

我们遵循了 SDK 中包含的迁移文档.替换了大部分代码.但是,似乎 Xamarin 的 java 绑定有问题或缺少某些东西,因为几乎 90% 的枚举值不可用.如果没有枚举值,几乎不可能正确调用方法......例如,我们确实有一些可用的枚举(如 BatteryLevelX、TMxx、Pattern*),但仅此而已.

We followed the migration document included in the SDK. Replaced most of the code. But, it seems that either Xamarin has problem the java bindings or something is missing, because almost 90% of the enum values are not available. It's almost near impossible without the enum values to correctly call the methods... For example, we do have some of the enums available (like the BatteryLevelX, TMxx, Pattern*), but that's about it.

我们使用的是 Android 8.0

We are using Android 8.0

我们的 javabinding 项目是这样配置的:

Our javabinding project is configured like that:

--JarLibrary
----Jars
-------ePOS2.jar
-------ePOSEasySelect.jar
----libs
------armeabi
--------libepos2.so
--------libeposeasyselect.so
------armeabi-v7a
--------libepos2.so
--------libeposeasyselect.so

项目属性:

Android 类解析器:jar2xmlAndroid 代码生成目标:XAJavaInterop1

Android Class parser: jar2xml Android codegen target: XAJavaInterop1

知道这是为什么吗?

解决方案是确保 SDK 中没有可见性关键字的所有对象都使用 Metadata.xml 转换文件进行修复,如下所示:

EDIT : Solution is to make sure all objects with no visibility keywords in the SDK is fixed with the Metadata.xml Transforms file, this way:

<!-- 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>

推荐答案

EDIT : 解决方案是确保使用 Metadata.xml 转换文件修复 SDK 中所有没有可见性关键字的对象,这样:

EDIT : Solution is to make sure all objects with no visibility keywords in the SDK is fixed with the Metadata.xml Transforms file, this way:

<!-- 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>

这篇关于爱普生 ePOS SDK for Android (Xamarin) 缺少常量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆