xamarin.android 綁定百度地圖SDK遇到的問題

來源:互聯網
上載者:User

標籤:修改   guid   不同   blank   xamarin   java   檔案   不用   path   

在 xamarin.android 繫結項目中,綁定 百度地圖的LBS地圖SDK,參考 https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-a-jar/ 設定好後,編譯,  然後提示錯誤,其中一個錯誤 是 

 

意思就是說轉換 出來的CS 代碼中,有重複的 類型。 理論上來說,轉換的 CS 代碼 是不應該出現重複代碼的,有重複,意味這 jar有重複代碼。  

然後查看 百度地圖的SDK說明 ,

 

 

發現 對應的這裡有 “不同參數的重載方法” ,所以,猜測 在轉換過程中,是無法識別這種具備相同方法名的,導致一對一轉出來後,在 CS 中有重複類型代碼。  

不過,xamarin 提供了 Metadata.xml 檔案用於重寫指定的方法名名稱。 

尋找 百度的SDK (或者反便宜jar檔案),上面這2個方法是位於 OnMapStatusChangeListener  介面下。

反編譯:

 

定位到這個錯誤碼檔案,然後 尋找名稱的 代碼,有個介面 IOnMapStatusChangeListener ,下面 有 對應的上面 介面 

 

其實轉換出來的代碼,在介面這裡,是沒有錯的,  但是 IOnMapStatusChangeListener  介面實現的代碼中,  每個介面 都有一個 對於的 EventHandler ,導致出現2個 OnMapStatusChangeStartHandler   才會在編譯的時候 發生錯誤! 

既然問題找到了,那麼解決方案 是? 

目前找到一個方法 ,就是把 名稱修改一下,   

在 Metadata.xml 檔案 中, path 是指 要修改的名稱 的路徑,  在轉換出來的的 cs 檔案中, 每個名稱對應的路徑都標註在 上面的注釋中,實在是很方便,不用自己去找!

在這裡,我要修改 第二個 OnMapStatusChangeStart ,即有2個參數的,修改名稱為 OnMapStatusChangeStart2

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

再次執行編譯,就會編譯通過了。

 

連結: https://blog.wuliping.cn/post/note-xamarin-android-binding-baidu-lbs-sdk

xamarin.android 綁定百度地圖SDK遇到的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.