---恢复内容开始---

Xamarin.Form怎么调用原生包

今天我想和大家分享的是有关Xamarin如何调用安卓的原生代码,下面的例子以大家可能会经常用到的微信WX方法的调用。

首先我们新建一个Xamarin.Android工程。

Xamarin.Form怎么调用原生包

今天我想和大家分享的是有关Xamarin如何调用安卓的原生代码,下面的例子以大家可能会经常用到的微信WX方法的调用。

首先我们新建一个Xamarin.Android工程。

这两个都是可以的,上次我们说到有关Xamarin.Form其实就是包含了Xamarin.Android这个工程。我在这里就创建了第一种方式,毕竟我要想着工程以后还要考虑到IOS的编写。

首先我们去官网下载WX的JAR包。https://mp.weixin.qq.com/

下载完之后,把你需要的JAR加载到你的项目中来。

首先单击右键你的解决方案→添加→新建项目,然后添加Android绑定库,如图:

创建完成后,开打TestAndroid这个工程,里面有个JARS,单击右键→添加→现有项→然后选择你在微信官网下的文件找到一个以JAR结尾的文件添加进来就好了

添加进来之后,将TestAndroid工程重新编译,正常情况下应该是有两个错误和N个警告,警告不用去管他,这两个错误截图如下:

一般情况下引用进来的JAR文件都是会有很多命名冲突的错误,这里也不例外,有两个,然后我们把这两个命名换个名称就好了。

方法一:

在这里我们有两中方式可以解决,一个是直接点击到错误的地方直接更改,这个确实简单粗暴,很快就可以搞好,例如改一个如下:

我在这里把MediaObject直接改成MediaObject1,错误就消失了。

但是用这种方法有一个缺点,就是你在重新生成TestAndroid或者整个解决方案的时候会回到原点,又会出现这两个错误。

方法二:

打开TestAndroid绑定库中的Transforms,找到Metadata.xml并打开。

将选中的这段代码粘贴上去<attr path="/api/package[@name='com.tencent.mm.opensdk.modelmsg']/class[@name='WXMediaMessage']/field[@name='mediaObject']"

     name="managedName">MyMediaObject</attr>

 

  <attr path="/api/package[@name='com.tencent.mm.opensdk.modelbase']/class[@name='BaseResp']/field[@name='errCode']"

       name="managedName">MyErrCode</attr>

这里的作用其实和方法一功能一样,将MediaObject和ErrCode重命名成自己想要的,这种方法有点就是将命名冲突的全都放在一个地方来进行处理。并且在你重新生成TestAndroid或者整个解决方案时,不会在报错了。

解释一下path="/api/package[@name='com.tencent.mm.opensdk.modelmsg']/class[@name='WXMediaMessage']/field[@name='mediaObject']"

这里其实就是你报错地方上面

// Metadata.xml XPath field reference: path="/api/package[@name='com.tencent.mm.opensdk.modelbase']/class[@name='BaseResp']/field[@name='errCode']"

也就是你需要修改路径。

好了以上都已经修改好了,我们现在就开始准备调用把。

首先我们来说一下怎么在Xamrin.android这个项目中调用,在下一次我将讲述如何在Xamarin.From中共用代码来调用。

我们可以将以下三个毕竟常用的引用到我们需要调用WX方法的MainActivity中。

using Com.Tencent.MM.Opensdk.Openapi;

using Com.Tencent.MM.Opensdk.Modelbase;

using Com.Tencent.MM.Opensdk.Modelmsg;

然后就开始调用把

IWXAPI这个就是刚刚JAR中的方法了,好了,今天我们就说到这里了,如果不知道IWXAPI怎么调用,可以去微信的官网查看https://mp.weixin.qq.com/

 

我会经常跟新我的博客和他家分享一些我在开发中遇到的解决方法,希望大家多多关注。主要是针对一些新手,大神在此可以越过,不喜勿喷。

 

---恢复内容结束---