Xamarin 友盟 U-Push Jar包的绑定

本文,是在Xamarin官网的绑定基础上,以友盟推送的绑定做使用说明,希望对大家有帮助。
Xamarin链接:https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/customizing-bindings/java-bindings-metadata/

  1. 从官网下载U-Push的SDK(Android),会有以下jar包:
Paste_Image.png
  1. 新建好Android绑定项目后,将以上文件加入到Jars文件夹下:
Paste_Image.png

3.直接编译,会出现以下问题,下面我们就一个个问题来解决

3.1. 找不到类:The type or namespace name 'XXX' does not exist in the namespace 'XXXX':
这个时候,我们在目录obj\Debug\generated\src下确实找不到对应的类文件。这种情况就是在源代码中,类的访问级别不是public导致的,那知道原因后,我们就可以在Metadata.xml文件中,修改对应类的访问级别:

Paste_Image.png

修改前后,目录obj\Debug\generated\src下文件对比:

Paste_Image.png
Paste_Image.png

文件有了,但还没完。
打开生成的类文件会发现,与其他的还是有些许差别的。
自动生成的同一命名空间下的类,声明部分是这样的:

Paste_Image.png

但是我们改完之后,生成的类文件中是这样的:

Paste_Image.png

你没有看错,就是一个是暗色的,一个是亮色的区别。我们都知道,暗色表示的是可以简化调用的意思,表明该类已经引用过命名空间,不需要在调用的时候在加前缀的意思。虽然我不知道这是在哪儿用的,但是至少表明我们新生成的类文件,与本身生成的文件,是不在一起的。看错误列表也可以看出,问题还在。

Paste_Image.png

这个时候,我们要做的就是讲刚刚生成的类文件拿出来,放在Additions目录下:

Paste_Image.png

再将我们在Metadata.xml文件中添加的修改该类访问级别的语句去掉,再编译,发现OK。(不去掉访问修饰符的修改,会报重复)

3.2. 'XXX'不实现接口成员'XXXX'。
新增缺少的成员:

Paste_Image.png

3.3. 有一些问题,实在是无法通过Metadata修改,比如:有一个方法Call,要求将返回类型由string修改为Java.Lang.Object,但是在方法ShowMe中,有调用Call方法,且要求返回的就是string,你那么这时候,我们可以在ShowMe中修改Call的调用为Call().ToString(),这种修改,无法Metadata.xml中修改(也许是我不知道),这个时候呢,我们就可以先直接修改Call().ToString(),然后把这个文件类文件加到Additions目录下,再在Metadata.xml文件中呢,将这个类的访问修饰符修改为private,编译,搞定。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 124,602评论 18 136
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 161,669评论 24 692
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx阅读 7,362评论 0 16
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 39,741评论 11 346
  • 天气炎热,阳光格外的刺眼,连一丝的风都没有。30多度的气温如桑拿一般,既怕紫外线晒的过敏又懒的涂防晒霜,只好窝在房...
    张玉晶阅读 686评论 3 6
  • 周一的王府井李宁店,快乐跑团常规夜跑活动恰临近建军节,组织者用心设计了81路线,就让我们一起用脚步跑出来吧。 小岂...
    勤行乐道阅读 197评论 0 2
  • 周晨(大发化纤有限公司) 276期,感谢1组成员 【日精进打卡第39天】 【知~学习】 《六项精进》读1遍 共75...
    周晨i阅读 104评论 0 0
  • UITextField API Problems UIKeyboardWillChangeFrameNotific...
    deactivateuser阅读 65评论 0 0
  • 每天早上,7点准时起床。眼睛睁不开的时候,采用最快的速度坐起来,穿上鞋,下地,向上击掌20个,这个是很有效的方法...
    茜茜快跑阅读 155评论 0 1