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

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

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

2.创建Android绑定库(Xamarin)

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

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

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

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

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

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

参考文章:https://blog.csdn.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.csdn.net/qq_31403321/article/details/79489078

原文地址:https://www.cnblogs.com/Xamarin-Oz/p/11102499.html