Xamarin.Form中遇到的调用原生Android JAR的问题(一) 编译过程 命名冲突问题

 
官方调用java的原理说明:https://docs.microsoft.com/zh-cn/xamarin/android/platform/java-integration/working-with-jni

1. 百度官方选择功能下载SDK

2.创建Android绑定库(Xamarin)

Xamarin.Form中遇到的调用原生Android JAR的问题(一)  编译过程 命名冲突问题

3.将SDK里的jar和so文件一起复制到Jars中

Xamarin.Form中遇到的调用原生Android JAR的问题(一)  编译过程 命名冲突问题

4.生成操作JAR选择 EmbeddedJar,so选择EmbeddedNativeLibrary

Xamarin.Form中遇到的调用原生Android JAR的问题(一)  编译过程 命名冲突问题Xamarin.Form中遇到的调用原生Android JAR的问题(一)  编译过程 命名冲突问题

5.生成项目,报如下错误

Xamarin.Form中遇到的调用原生Android JAR的问题(一)  编译过程 命名冲突问题

生成文件位置,需要显示所有文件中查看

Xamarin.Form中遇到的调用原生Android JAR的问题(一)  编译过程 命名冲突问题

6.在Transforms文件夹的Metadata.xml文件中,添加如下代码,将命名冲突的内容,重新定义名称。

官方文档:https://docs.microsoft.com/zh-cn/xamarin/android/platform/binding-java-library/customizing-bindings/java-bindings-metadata

参考文章:https://blog.****.net/qq_31403321/article/details/79502182

1 <metadata>
2   <attr path="/api/package[@name='com.baidu.location']/class[@name='Address']/field[@name='address']"
3         name="name">MyAddress</attr>
4   <attr path="/api/package[@name='com.baidu.mapapi']/class[@name='VersionInfo']/field[@name='VERSION_INFO']"
5         name="name">MyVersionInfo</attr>
6   <attr path="/api/package[@name='com.baidu.mapapi.map']/interface[@name='BaiduMap.OnMapStatusChangeListener']/method[@name='onMapStatusChangeStart' and count(parameter)=2 and parameter[1][@type='com.baidu.mapapi.map.MapStatus'] and parameter[2][@type='int']]" name="managedName">OnMapStatusChangeStart2</attr>
7   <attr path="/api/package[@name='com.baidu.mapapi.search.poi']/interface[@name='OnGetPoiSearchResultListener']/method[@name='onGetPoiDetailResult' and count(parameter)=1 and parameter[1][@type='com.baidu.mapapi.search.poi.PoiDetailSearchResult']]" name="managedName">OnGetPoiDetailResult2</attr>
8 </metadata>

 7.完成,bin中有生成的dll供Xamarin.Android项目调用。

 很全面的参考文章:https://blog.****.net/qq_31403321/article/details/79489078