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.****.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