Как использовать MyTarget aar в c# через библиотеку привязок Android

Доброго времени суток!

Скомпилировала библиотеку привязок Android с пакетом aar с официального сайта MyTarget: https://repo1.maven.org/maven2/com/my/target/mytarget-sdk/5.20.0/

Скопировала aar в папку jars и создала действие:

<EmbeddedNativeLibrary Include="Jars\arm64-v8a\mytarget-sdk-5.20.0.aar" />

Собрала dll и вставила в андроид приложение Xamarin. Результат: Через

using Com. //...

никакие библиотеки не отображаются.

Создавала действие LibraryProjectZip для aar -- выскакивает куча ошибок библиотеки (даже с proguard файлом с официального сайта с соответствующим действием при построении).

Прикрепляю ошибки при действии LibraryProjectZip:

/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Common.CustomParams.cs(21,21): Error CS0102: The type 'CustomParams' already contains a definition for 'Gender' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Instreamads.IInstreamAudioAdPlayer.cs(10,10): Error CS0111: Type 'VolumeChangedEventArgs' already defines a member called 'VolumeChangedEventArgs' with the same parameter types (CS0111) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Instreamads.IInstreamAudioAdPlayer.cs(9,9): Error CS0102: The type 'VolumeChangedEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Instreamads.IInstreamAudioAdPlayer.cs(16,16): Error CS0102: The type 'VolumeChangedEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(55,55): Error CS0102: The type 'NoAdEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationStandardAdAdapter.cs(55,55): Error CS0102: The type 'NoAdEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(62,62): Error CS0102: The type 'NoAdEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationStandardAdAdapter.cs(62,62): Error CS0102: The type 'NoAdEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(63,63): Error CS0102: The type 'NoAdEventArgs' already contains a definition for 'p1' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationStandardAdAdapter.cs(63,63): Error CS0102: The type 'NoAdEventArgs' already contains a definition for 'p1' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(70,70): Error CS0102: The type 'NoAdEventArgs' already contains a definition for 'P1' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationStandardAdAdapter.cs(70,70): Error CS0102: The type 'NoAdEventArgs' already contains a definition for 'P1' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(63,63): Error CS0102: The type 'ClickEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationStandardAdAdapter.cs(63,63): Error CS0102: The type 'ClickEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(70,70): Error CS0102: The type 'ClickEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationStandardAdAdapter.cs(70,70): Error CS0102: The type 'ClickEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(63,63): Error CS0102: The type 'DismissEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(70,70): Error CS0102: The type 'DismissEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(63,63): Error CS0102: The type 'DisplayEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(70,70): Error CS0102: The type 'DisplayEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(63,63): Error CS0102: The type 'LoadEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationStandardAdAdapter.cs(30,30): Error CS0102: The type 'LoadEventArgs' already contains a definition for 'p0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationRewardedAdAdapter.cs(70,70): Error CS0102: The type 'LoadEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Mediation.IMediationStandardAdAdapter.cs(37,37): Error CS0102: The type 'LoadEventArgs' already contains a definition for 'P0' (CS0102) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Nativeads.Views.MediaAdView.cs(31,31): Error CS0507: 'MediaAdView.OnLayout(bool, int, int, int, int)': cannot change access modifiers when overriding 'protected' inherited member 'FrameLayout.OnLayout(bool, int, int, int, int)' (CS0507) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Nativeads.Views.IconAdView.cs(31,31): Error CS0507: 'IconAdView.OnLayout(bool, int, int, int, int)': cannot change access modifiers when overriding 'protected' inherited member 'FrameLayout.OnLayout(bool, int, int, int, int)' (CS0507) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Nativeads.Views.NativeAdView.cs(31,31): Error CS0507: 'NativeAdView.OnLayout(bool, int, int, int, int)': cannot change access modifiers when overriding 'protected' inherited member 'ViewGroup.OnLayout(bool, int, int, int, int)' (CS0507) (mytarget)
/Users/kseniasmirnova/Desktop/source/2024/Libs/mt/mytarget/mytarget/obj/Debug/generated/src/Com.MY.Target.Nativeads.Views.NativeBannerAdView.cs(31,31): Error CS0507: 'NativeBannerAdView.OnLayout(bool, int, int, int, int)': cannot change access modifiers when overriding 'protected' inherited member 'ViewGroup.OnLayout(bool, int, int, int, int)' (CS0507) (mytarget)

Попробовала от начала и до конца повторить действия с aar из видео: https://www.youtube.com/watch?v=t866eJBKrTo

Все работает отлично с библиотекой Picasso. В чем может быть проблема?

Есть ли какая-то ссылка на документацию, как использовать .pom файл в c# maui или Xamarin?


Ответы (1 шт):

Автор решения: Kseniya Sinickaya

Разобралась с привязками: Есть некоторые особенности для c# в aar, которые я исправила по документации https://learn.microsoft.com/ru-ru/xamarin/android/platform/binding-java-library/troubleshooting-bindings Действие для aar файла должно быть LibraryProjectZip.

Конкретно для MyTarget нужно вставить в библиотеку привязок android в файл Transforms\Metadata.xml строки:

<metadata>
  <!--
  This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
  
  This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />

  
  -->
  
<!-- event args for com.my.target.mediation.MediationRewardedAdAdapter.MediationRewardedAdListener.onNoAd -->
<attr path="/api/package[@name='com.my.target.mediation']/
        interface[@name='MediationRewardedAdAdapter.MediationRewardedAdListener']/method[@name='onNoAd']"
        name="argsType">RewardedNoAdEventArgs</attr>

<!--  event args for com.my.target.mediation.MediationRewardedAdAdapter.MediationRewardedAdListener.onLoad -->
<attr path="/api/package[@name='com.my.target.mediation']/
        interface[@name='MediationRewardedAdAdapter.MediationRewardedAdListener']/method[@name='onLoad']"
        name="argsType">RewardedLoadEventArgs</attr>

<!-- event args for com.my.target.mediation.MediationRewardedAdAdapter.MediationRewardedAdListener.onDisplay -->
<attr path="/api/package[@name='com.my.target.mediation']/
        interface[@name='MediationRewardedAdAdapter.MediationRewardedAdListener']/method[@name='onDisplay']"
        name="argsType">RewardedDisplayEventArgs</attr>

<!-- event args for com.my.target.mediation.MediationRewardedAdAdapter.MediationRewardedAdListener.onClick -->
<attr path="/api/package[@name='com.my.target.mediation']/
        interface[@name='MediationRewardedAdAdapter.MediationRewardedAdListener']/method[@name='onClick']"
        name="argsType">RewardedClickEventArgs</attr>

<!-- event args for com.my.target.mediation.MediationRewardedAdAdapter.MediationRewardedAdListener.onDismiss -->
<attr path="/api/package[@name='com.my.target.mediation']/
        interface[@name='MediationRewardedAdAdapter.MediationRewardedAdListener']/method[@name='onDismiss']"
        name="argsType">RewardedDismissEventArgs</attr>

<!--  event args for com.my.target.instreamads.InstreamAudioAdPlayer.AdPlayerListener.onVolumeChanged -->
<attr path="/api/package[@name='com.my.target.instreamads']/
        interface[@name='InstreamAudioAdPlayer.AdPlayerListener']/method[@name='onVolumeChanged']"
        name="argsType">InstreamVolumeChangedEventArgs</attr>

<!--  event args for com.my.target.mediation.MediationStandardAdAdapter.MediationStandardAdListener.onLoad -->
<attr path="/api/package[@name='com.my.target.mediation']/
        interface[@name='MediationStandardAdAdapter.MediationStandardAdListener']/method[@name='onLoad']"
        name="argsType">StandardLoadEventArgs</attr>

<!-- event args for com.my.target.mediation.MediationStandardAdAdapter.MediationStandardAdListener.onClick -->
<attr path="/api/package[@name='com.my.target.mediation']/
        interface[@name='MediationStandardAdAdapter.MediationStandardAdListener']/method[@name='onClick']"
        name="argsType">StandardClickEventArgs</attr>

<!-- event args for com.my.target.mediation.MediationStandardAdAdapter.MediationStandardAdListener.onNoAd -->
<attr path="/api/package[@name='com.my.target.mediation']/
        interface[@name='MediationStandardAdAdapter.MediationStandardAdListener']/method[@name='onNoAd']"
        name="argsType">StandardNoAdEventArgs</attr>





<!-- Change the visibility of a method -->
<!-- Metadata.xml XPath class reference: path="/api/package[@name='com.my.target.nativeads.views']/class[@name='MediaAdView']"-->
<attr path="/api/package[@name='com.my.target.nativeads.views']/class[@name='MediaAdView']/method[@name='onLayout']" name="visibility">protected</attr>


<!-- Change the visibility of a method -->
<!-- Metadata.xml XPath method reference: path="/api/package[@name='com.my.target.nativeads.views']/class[@name='IconAdView']/method[@name='onLayout' and count(parameter)=5 and parameter[1][@type='boolean'] and parameter[2][@type='int'] and parameter[3][@type='int'] and parameter[4][@type='int'] and parameter[5][@type='int']]"-->
<attr path="/api/package[@name='com.my.target.nativeads.views']/class[@name='IconAdView']/method[@name='onLayout']" name="visibility">protected</attr>


<!-- Change the visibility of a method -->
<!--  Metadata.xml XPath method reference:  Metadata.xml XPath method reference: path="/api/package[@name='com.my.target.nativeads.views']/class[@name='NativeBannerAdView']/method[@name='onLayout' and count(parameter)=5 and parameter[1][@type='boolean'] and parameter[2][@type='int'] and parameter[3][@type='int'] and parameter[4][@type='int'] and parameter[5][@type='int']]"-->
<attr path="/api/package[@name='com.my.target.nativeads.views']/class[@name='NativeBannerAdView']/method[@name='onLayout']" name="visibility">protected</attr>


<!-- Change the visibility of a method -->
<!--  Metadata.xml XPath method reference: path="/api/package[@name='com.my.target.nativeads.views']/class[@name='NativeAdView']/method[@name='onLayout' and count(parameter)=5 and parameter[1][@type='boolean'] and parameter[2][@type='int'] and parameter[3][@type='int'] and parameter[4][@type='int'] and parameter[5][@type='int']]"-->
<attr path="/api/package[@name='com.my.target.nativeads.views']/class[@name='NativeAdView']/method[@name='onLayout']" name="visibility">protected</attr>

<!-- // Metadata.xml XPath method reference: path="/api/package[@name='com.my.target.common']/class[@name='CustomParams']/method[@name='getGender' and count(parameter)=0]"-->
<attr path="/api/package[@name='com.my.target.common']/class[@name='CustomParams']" name="name">GetCustomParams</attr>
</metadata>
→ Ссылка