Я пытаюсь создать библиотеку привязки в Xamarin для MoPub. На самом деле у меня это отлично работает. Но теперь я хочу реализовать посредничество. Я добавил файл GooglePlayServicesBanner.java в MoPub SDK и Google Play библиотеки услуги:Попытка создать библиотеку привязки Android для MoPub
compile 'com.google.android.gms:play-services:9.4.0'
Но независимо от того, что я делаю, связывание библиотеки не может найти «AdListener»
1>JARTOXML : warning J2X9001: Couldn't load class com/mopub/mobileads/GooglePlayServicesBanner$AdViewListener : java.lang.NoClassDefFoundError: com/google/android/gms/ads/AdListener
Вот несколько причин, почему это может происходить:
- Мне нужно включить jar-файл службы google play в каталог libs в моем проекте библиотеки. Но GPS только предлагает aar, поэтому я не знаю, что с этим делать.
- Что-то становится раздел ProGuard
- Что-то тупое в моем Xamarin metadata.xml
Я застрял и, надеюсь, кто-то имеет некоторое представление. Благодаря!
Здесь находится Xatarin stacktrace при попытке отображения объявления Admob.
12-08 15:26:32.886 D/MoPub (3378): Loading custom event adapter.
12-08 15:26:32.886 D/MoPub (3378): Attempting to invoke custom event: com.mopub.mobileads.GooglePlayServicesBanner
12-08 15:26:32.891 I/art (3378): Rejecting re-init on previously-failed class java.lang.Class<com.mopub.mobileads.GooglePlayServicesBanner$AdViewListener>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/ads/AdListener;
12-08 15:26:32.891 I/art (3378): at java.lang.Class java.lang.Class.classForName!(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:-2)
12-08 15:26:32.891 I/art (3378): at java.lang.Class java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:400)
12-08 15:26:32.891 I/art (3378): at java.lang.Class java.lang.Class.forName(java.lang.String) (Class.java:326)
12-08 15:26:32.891 I/art (3378): at com.mopub.mobileads.CustomEventBanner com.mopub.mobileads.factories.CustomEventBannerFactory.internalCreate(java.lang.String) (CustomEventBannerFactory.java:20)
12-08 15:26:32.891 I/art (3378): at com.mopub.mobileads.CustomEventBanner com.mopub.mobileads.factories.CustomEventBannerFactory.create(java.lang.String) (CustomEventBannerFactory.java:11)
12-08 15:26:32.891 I/art (3378): at void com.mopub.mobileads.CustomEventBannerAdapter.<init>(com.mopub.mobileads.MoPubView, java.lang.String, java.util.Map, long, com.mopub.common.AdReport) (CustomEventBannerAdapter.java:61)
12-08 15:26:32.891 I/art (3378): at com.mopub.mobileads.CustomEventBannerAdapter com.mopub.mobileads.factories.CustomEventBannerAdapterFactory.internalCreate(com.mopub.mobileads.MoPubView, java.lang.String, java.util.Map, long, com.mopub.common.AdReport) (CustomEventBannerAdapterFactory.java:32)
12-08 15:26:32.891 I/art (3378): at com.mopub.mobileads.CustomEventBannerAdapter com.mopub.mobileads.factories.CustomEventBannerAdapterFactory.create(com.mopub.mobileads.MoPubView, java.lang.String, java.util.Map, long, com.mopub.common.AdReport) (CustomEventBannerAdapterFactory.java:24)
12-08 15:26:32.891 I/art (3378): at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
12-08 15:26:32.891 I/art (3378): at java.lang.Object com.mopub.common.util.Reflection$MethodBuilder.execute() (Reflection.java:71)
12-08 15:26:32.891 I/art (3378): at void com.mopub.mobileads.MoPubView.loadCustomEvent(java.lang.String, java.util.Map) (MoPubView.java:188)
12-08 15:26:32.891 I/art (3378): at void com.mopub.mobileads.AdViewController.loadCustomEvent(com.mopub.mobileads.MoPubView, java.lang.String, java.util.Map) (AdViewController.java:177)
12-08 15:26:32.891 I/art (3378): at void com.mopub.mobileads.AdViewController.onAdLoadSuccess(com.mopub.network.AdResponse) (AdViewController.java:136)
12-08 15:26:32.891 I/art (3378): at void com.mopub.mobileads.AdViewController$1.onSuccess(com.mopub.network.AdResponse) (AdViewController.java:107)
12-08 15:26:32.891 I/art (3378): at void com.mopub.network.AdRequest.deliverResponse(com.mopub.network.AdResponse) (AdRequest.java:310)
12-08 15:26:32.891 I/art (3378): at void com.mopub.network.AdRequest.deliverResponse(java.lang.Object) (AdRequest.java:46)
12-08 15:26:32.891 I/art (3378): at void com.mopub.volley.ExecutorDelivery$ResponseDeliveryRunnable.run() (ExecutorDelivery.java:99)
12-08 15:26:32.891 I/art (3378): at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:751)
12-08 15:26:32.891 I/art (3378): at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
12-08 15:26:32.891 I/art (3378): at void android.os.Looper.loop() (Looper.java:154)
12-08 15:26:32.891 I/art (3378): at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6077)
12-08 15:26:32.891 I/art (3378): at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
12-08 15:26:32.891 I/art (3378): at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:865)
12-08 15:26:32.891 I/art (3378): at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:755)
12-08 15:26:32.891 I/art (3378): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.AdListener" on path: DexPathList[[zip file "/data/app/com.kellyproductions.minechatlite-1/base.apk"],nativeLibraryDirectories=[/data/app/com.kellyproductions.minechatlite-1/lib/x86, /system/fake-libs, /data/app/com.kellyproductions.minechatlite-1/base.apk!/lib/x86, /system/lib, /vendor/lib]]
12-08 15:26:32.891 I/art (3378): at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
12-08 15:26:32.891 I/art (3378): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
12-08 15:26:32.891 I/art (3378): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
12-08 15:26:32.891 I/art (3378): at java.lang.Class java.lang.Class.classForName!(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:-2)
12-08 15:26:32.891 I/art (3378): at java.lang.Class java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:400)
12-08 15:26:32.891 I/art (3378): at java.lang.Class java.lang.Class.forName(java.lang.String) (Class.java:326)
12-08 15:26:32.891 I/art (3378): at com.mopub.mobileads.CustomEventBanner com.mopub.mobileads.factories.CustomEventBannerFactory.internalCreate(java.lang.String) (CustomEventBannerFactory.java:20)
12-08 15:26:32.891 I/art (3378): at com.mopub.mobileads.CustomEventBanner com.mopub.mobileads.factories.CustomEventBannerFactory.create(java.lang.String) (CustomEventBannerFactory.java:11)
12-08 15:26:32.891 I/art (3378): at void com.mopub.mobileads.CustomEventBannerAdapter.<init>(com.mopub.mobileads.MoPubView, java.lang.String, java.util.Map, long, com.mopub.common.AdReport) (CustomEventBannerAdapter.java:61)
12-08 15:26:32.891 I/art (3378): at com.mopub.mobileads.CustomEventBannerAdapter com.mopub.mobileads.factories.CustomEventBannerAdapterFactory.internalCreate(com.mopub.mobileads.MoPubView, java.lang.String, java.util.Map, long, com.mopub.common.AdReport) (CustomEventBannerAdapterFactory.java:32)
12-08 15:26:32.891 I/art (3378): at com.mopub.mobileads.CustomEventBannerAdapter com.mopub.mobileads.factories.CustomEventBannerAdapterFactory.create(com.mopub.mobileads.MoPubView, java.lang.String, java.util.Map, long, com.mopub.common.AdReport) (CustomEventBannerAdapterFactory.java:24)
12-08 15:26:32.892 I/art (3378): at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
12-08 15:26:32.892 I/art (3378): at java.lang.Object com.mopub.common.util.Reflection$MethodBuilder.execute() (Reflection.java:71)
12-08 15:26:32.892 I/art (3378): at void com.mopub.mobileads.MoPubView.loadCustomEvent(java.lang.String, java.util.Map) (MoPubView.java:188)
12-08 15:26:32.892 I/art (3378): at void com.mopub.mobileads.AdViewController.loadCustomEvent(com.mopub.mobileads.MoPubView, java.lang.String, java.util.Map) (AdViewController.java:177)
12-08 15:26:32.892 I/art (3378): at void com.mopub.mobileads.AdViewController.onAdLoadSuccess(com.mopub.network.AdResponse) (AdViewController.java:136)
12-08 15:26:32.892 I/art (3378): at void com.mopub.mobileads.AdViewController$1.onSuccess(com.mopub.network.AdResponse) (AdViewController.java:107)
12-08 15:26:32.892 I/art (3378): at void com.mopub.network.AdRequest.deliverResponse(com.mopub.network.AdResponse) (AdRequest.java:310)
12-08 15:26:32.892 I/art (3378): at void com.mopub.network.AdRequest.deliverResponse(java.lang.Object) (AdRequest.java:46)
12-08 15:26:32.892 I/art (3378): at void com.mopub.volley.ExecutorDelivery$ResponseDeliveryRunnable.run() (ExecutorDelivery.java:99)
12-08 15:26:32.892 I/art (3378): at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:751)
12-08 15:26:32.892 I/art (3378): at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
12-08 15:26:32.892 I/art (3378): at void android.os.Looper.loop() (Looper.java:154)
12-08 15:26:32.892 I/art (3378): at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6077)
12-08 15:26:32.892 I/art (3378): at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
12-08 15:26:32.892 I/art (3378): at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:865)
12-08 15:26:32.892 I/art (3378): at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:755)
1. aar - это просто усиленная банда с ресурсами android. Что бы вы ни делали с банкой, которую вы можете сделать с ааром. 2. Может быть, вы делитесь своей конфигурацией proguard? Мы не можем догадаться, что вы там определили. Также попробовал это с minify = false? 3. Может быть, вы поделитесь своим xml-файлом? Мы не можем догадаться, что тоже – WarrenFaith
Спасибо Уоррену. Я нашел одну из проблем. Перед компиляцией вы должны включить компоненты Google play в библиотеку привязки Xamarin. Это исправило эту проблему, но теперь я столкнулся с другими проблемами, которые могут быть связаны с proguard. Для этого нужно будет сделать еще одну запись. – Ray