簡體   English   中英

Xamarin.Android通過AAR綁定的Google Play服務依賴性

[英]Xamarin.Android Google Play Services dependency via AAR Binding

我正在使用Visual Studio 2015 Update 3編寫適用於Android和iOS的Xamarin跨平台應用程序。 我需要利用Java編寫的第三方SDK來實現與Push消息相關的功能。 對於該解決方案的Android方面,我已經嘗試了很多很多事情(現在已經過了幾天),但是沒有成功。 我想解決以下問題:

  • 有一個PCL /便攜式“ myApp”庫,用於通用代碼/ UI功能。
  • 讓PCL / Portable庫引用針對Android特定代碼的“ myApp.Android”程序集。
  • 讓“ myApp.Android”庫引用一個“ myApp.Android.BindSDK”程序集,用於包裝/綁定到第三方SDK。
    myApp.Android.BindSDK程序集應該(我相信):
  • 使用Xamarin的綁定功能來綁定/包裝/包含我用Java編寫的第三方SDK。
    它對Google Play服務的類/功能具有后期綁定依賴關系。
  • 使用NuGet將Xamarin.GooglePlayServices.Gcm包含到“ .Android.BindSDK”項目中。

自從通過NuGet將Google Play服務包含到myApp.Android.BindSDK項目中以來,我收到以下編譯錯誤:

error APT0000: No resource found that matches the given name 
(at 'value' with value '@integer/google_play_services_version').

我已經嘗試了很多在論壇上發布的內容,例如關閉解決方案,刪除bin和obj文件夾,從AAR中的JAR中的JAR中提取version.xml文件以用於Google Play等,等等。它仍然會收到此構建錯誤。

有沒有人有一個很好的例子說明如何為本身依賴於Google Play服務的android / Java SDK創建Xamarin綁定包裝?

檢查您的綁定項目的.csproj包含Xamarin.GooglePlayServices.Basement.targets因為該包中的資源任務是提取Play服務版本並將其添加到庫資源中的任務:

例:

<Import Project="..\packages\Xamarin.GooglePlayServices.Basement.42.1001.0\build\MonoAndroid70\Xamarin.GooglePlayServices.Basement.targets" Condition="Exists('..\packages\Xamarin.GooglePlayServices.Basement.42.1001.0\build\MonoAndroid70\Xamarin.GooglePlayServices.Basement.targets')" />

此外,檢查結合項目清單尚未包含一個條目com.google.android.gms.version ,因為這應該是自動生成/編譯過程合並:

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>

解決方法:

注意:我從來沒有在包含Play Services的綁定項目中手動執行此操作,遇到了一些客戶端的綁定項目,這些項目會導致.aar資源合並過程在引用的程序包上失敗(假設在其中存在沖突的Play Services資源.aar但修改第三方.aar通常不值得)

Resources目錄中,創建一個values文件夾,並添加一個帶有google_play_services_version整數值的values.xml文件:

<integer name="google_play_services_version">10084000</integer>

注意:如果Google Play服務版本更改,則需要更新版本值,否則您的應用最終會引發奇怪的錯誤,尤其是在您進行InApp購買時。

經過反復試驗,我能夠創建一個可行的解決方案。

這篇文章中詳細提供了操作方法

關鍵:我上面遺漏的東西似乎是在綁定程序集中不包含第三方SDK的依賴項,例如:用於包裝SDK的“ myApp.Android.BindSDK”,而是通過NuGet進入解決方案的Android程序集引用綁定程序集,例如:“ myApp.Android”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM