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文件夹下:
Xamarin 友盟 U-Push Jar包的绑定_第1张图片
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下文件对比:

Xamarin 友盟 U-Push Jar包的绑定_第2张图片
Paste_Image.png
Xamarin 友盟 U-Push Jar包的绑定_第3张图片
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,编译,搞定。

你可能感兴趣的:(Xamarin 友盟 U-Push Jar包的绑定)