android – 将Card.IO移植到C#Xamarin Studio

android – 将Card.IO移植到C#Xamarin Studio,第1张

概述我在尝试将Card.IO移植到Xamarin Android时遇到了麻烦.由于我使用的是C#而不是Java,我不知道如何处理.so文件和.jar文件. 我试着按照这里发布的一些步骤:card.io Mono for Android (Xamarin Studio)但我得到以下两个构建错误,我不知道如何解决. 这是我到目前为止所做的 >创建一个新的Android Java Bindings Libr 我在尝试将Card.IO移植到Xamarin Android时遇到了麻烦.由于我使用的是C#而不是Java,我不知道如何处理.so文件和.jar文件.

我试着按照这里发布的一些步骤:card.io Mono for Android (Xamarin Studio)但我得到以下两个构建错误,我不知道如何解决.

这是我到目前为止所做的

>创建一个新的AndroID Java Bindings library项目
>使用现有文件夹结构从Card.IO项目添加.jar和.so文件.因此/ libs文件夹下有四个子文件夹,然后/ libs下有一个jar.
>将以下内容添加到transforms / EnumMethods.xml以解决编译器错误:

<mapPing jni->    <method jni-name="onActivityResult" parameter="p1" clr-enum-type="AndroID.App.Result" /></mapPing>@H_403_11@  

>在我的主应用程序中添加对上述库的引用.

然后我遇到了这些构建错误:

The type or namespace name ‘IN’ does not exist in the namespace
‘IO.Card.Payment’ (are you missing an assembly reference?)

‘A’: member names cannot be the same as their enclosing type

更新

第一个错误是在这一行:

public sealed partial class CardioActivity : global::AndroID.App.Activity,global::IO.Card.Payment.IN {@H_403_11@  

第二个错误似乎在这一行:

public static global::System.Collections.IList A {@H_403_11@  

任何帮助都很有用,谢谢!

解决方法 我已经花了大约10个小时的时间来获得卡片我使用我的xamarin应用程序…经过长时间的长时间战斗我设法看到我想要的…我没有看到关于2接口的上述错误,我有一个’A’类中的’a’字段出现问题,并且错误告诉“IN”接口不存在(这是一个接口,因此不应该在那里显示双基类的问题,这很奇怪).

不确定我的所有步骤是否都是必要的,以使其工作,但(惊讶,惊讶)我是累了清理它,并检查哪些chagnes真的是essencial.很多问题都是由卡片的代码混淆引起的.
没关系,回到主题:

>创建新的绑定项目,将jar添加为embeded jar,将.so文件添加为嵌入式本机库(使用现有结构)
>打开EnumMethods.xml并添加一个映射:

< mapPing jni-class =“io / card / payment / CardioActivity”>

< method jni-name =“onActivityResult”parameter =“p1”clr-enum-type =“AndroID.App.Result”/>

< /映射>

(这会将.net xamarin在onActivityResult方法中使用的枚举类型更改为int(由card.io.jar中的某个类重载)
3.打开Metadata.xml并添加以下节点(有些可能是不必要的):

<attr path="/API/package[@name='io.card.payment']/class[@name='A']/fIEld[@name='a']" name="managedname">AProp</attr>  <attr path="/API/package[@name='io.card.payment']/class[@name='M']" name="visibility">public</attr>  <attr path="/API/package[@name='io.card.payment']/class[@name='M']" name="name">Mcl</attr>  <attr path="/API/package[@name='io.card.payment']/interface[@name='N']" name="visibility">public</attr>  <attr path="/API/package[@name='io.card.payment']/interface[@name='N']" name="name">Nifc</attr>  <attr path="/API/package[@name='io.card.payment']/class[@name='L']" name="visibility">public</attr>  <attr path="/API/package[@name='io.card.payment']/class[@name='L']/fIEld[@name='a']" name="managedname">aProp</attr>  <attr path="/API/package[@name='io.card.payment']/class[@name='L']/method[@name='a']" name="managedname">aMethod</attr>  <attr path="/API/package[@name='io.card.payment']/class[@name='L']" name="name">Lcl</attr>@H_403_11@  

上面的节点将一些可见性改为公共(最需要的)并改变一些类或它们的名称(不确定是否需要,但在某些时候对我有用)

>在主要项目中添加对绑定项目的引用.
>在主项目中打开AndroIDManifest.xml并添加:

< activity androID:name =“io.card.payment.CardioActivity”androID:configChanges =“keyboardHIDden | orIEntation”/>

< activity androID:name =“io.card.payment.DataEntryActivity”androID:screenorIEntation =“portrait”/>

应该在应用程序节点(它是主节点的子节点 – 清单)下添加节点

>现在你应该能够调用CardioActivity并使用你想要的东西(调用和使用是可用的,似乎在创建者提供的示例中很好地描述)
>还有一个提示,没有什么大不了,但是当我最终成功地使库工作时我错过了…在OnActivityResult方法中获得结果作为CreditResult对象使用java cast:
var scanResult = data.GetParcelableExtra(CardioActivity.ExtraScanResult).JavaCast();
普通的c#cast不起作用.

如果你有任何问题让我知道,也许我错过了一些东西(特别是我还不是xamarin专家).

祝好运!

ps:回答@xamarin论坛也是如此

编辑:
完整的解决方案与绑定,检查和工作上传到github:
https://github.com/wiadran/card.io.xamarin.binding.git

总结

以上是内存溢出为你收集整理的android – 将Card.IO移植到C#Xamarin Studio全部内容,希望文章能够帮你解决android – 将Card.IO移植到C#Xamarin Studio所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1130387.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存