Плагин Google AdMob Unity не работает в старых версиях Android - ClassNotFoundException - это ожидаемое поведение? - PullRequest
0 голосов
/ 21 июня 2020

Я использую пример Google AdMob HelloWorld в Unity 2019.2.21f1 на устройствах Android и iOS. На устройствах iOS я его тестировал (iPhone 8 с iOS 13.5.1, iPhone SE 2020 с iOS 13.5.1, а также на паре устройств iPhone 5 с iOS 10.3.4), приложение работает нормально, и я могу отображать баннерную рекламу, рекламу с вознаграждением и межстраничную рекламу.

См. Этот снимок экрана, чтобы увидеть, как этот образец выглядит, когда он работает на iPhone SE, с рекламным баннером, отображаемым в верхней части экрана:

enter image description here

Now, I would also like to get AdMob ads to work on Android devices. However, for my own personal testing, I only own a couple of older (and very cheap, even when they were new) Android devices, which I can't upgrade beyond Android 6.0.1 and Android 5.1 respectively.

When I build the same sample for Android in Unity, I am able to deploy the app to the Android devices, but the banner ad at the top doesn't show up at all, and when I tap "Request Rewarded Ad", the app crashes. See below two screenshots:

enter image description here введите описание изображения здесь

Чтобы исследовать это дальше, я подключился к своему Android устройству через ADB, используя adb logcat -s Unity DEBUG

Вот некоторые из результатов, которые я получаю, когда приложение пытается загрузить рекламный баннер ( для полной трассировки стека, см. нижнюю часть сообщения ):

AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener
... other output

... other output

... other output

... other output

... other output

AndroidJavaException: java.lang.NoClassDefFoundError: com.google.android.gms.ads.AdSize

И вот результат, который я получаю, когда пытаюсь загрузить рекламное объявление с вознаграждением, нажав на соответствующий button:

AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.AdRequest$Builder

Я не уверен, почему эти классы отсутствуют на Android. Есть ли еще один шаг, который мне нужно сделать, чтобы реклама AdMob работала на Android устройствах? Или это может быть связано с тем, что на этих устройствах работают очень старые версии Android, что означает, что эти ClassNotFoundExceptions и NoClassDefFoundError не будут добавлены на новые устройства Android? Могу ли я что-нибудь сделать, чтобы эта реклама работала на указанных Android устройствах?

Полная трассировка стека здесь:

Chris@Chris-Air ~ % adb logcat -s Unity DEBUG



--------- beginning of system

--------- beginning of crash

--------- beginning of main

06-21 08:48:10.828 26342 26342 D Unity : CommandLine: 

06-21 08:48:10.853 26342 26342 I Unity : onResume

06-21 08:48:10.880 26342 26342 I Unity : onPause

06-21 08:48:10.914 26342 26357 D Unity : SetWindow 0 0xb7be6a40

06-21 08:48:10.914 26342 26357 D Unity : SetWindow 0 0xb7be6a40

06-21 08:48:10.998 26342 26342 I Unity : windowFocusChanged: true

06-21 08:48:11.046 26342 26357 D Unity : Enabling Unity systrace

06-21 08:48:11.072 26342 26357 D Unity : [VFS] Mount /data/app/com.DefaultCompany.HelloWorld-1/base.apk

06-21 08:48:11.130 26342 26357 I Unity : SystemInfo CPU = ARMv7 VFPv3 NEON, Cores = 4, Memory = 1408mb

06-21 08:48:11.130 26342 26357 I Unity : SystemInfo ARM big.LITTLE configuration: 4 big (mask: 0xf), 0 little (mask: 0x0)

06-21 08:48:11.131 26342 26357 I Unity : ApplicationInfo com.DefaultCompany.HelloWorld version 1.0 build 0739718b-a9b5-4291-9d27-65a28d82d111

06-21 08:48:11.131 26342 26357 I Unity : Built from '2019.2/staging' branch, Version '2019.2.21f1 (9d528d026557)', Build type 'Development', Scripting Backend 'mono', CPU 'armeabi-v7a', Stripping 'Disabled'

06-21 08:48:11.154 26342 26342 I Unity : onResume

06-21 08:48:11.161 26342 26357 D Unity : Mono path[0] = '/data/app/com.DefaultCompany.HelloWorld-1/base.apk/assets/bin/Data/Managed'

06-21 08:48:11.161 26342 26357 D Unity : Mono config path = 'assets/bin/Data/Managed/etc'

06-21 08:48:11.162 26342 26357 D Unity : PlayerConnection initialized from /data/app/com.DefaultCompany.HelloWorld-1/base.apk/assets/bin/Data (debug = 0)

06-21 08:48:11.163 26342 26357 D Unity : PlayerConnection initialized network socket : 0.0.0.0 55408

06-21 08:48:11.163 26342 26357 D Unity : PlayerConnection initialized unix socket : Unity-com.DefaultCompany.HelloWorld

06-21 08:48:11.165 26342 26357 D Unity : Multi-casting "[IP] 192.168.179.24 [Port] 55408 [Flags] 3 [Guid] 1873625426 [EditorId] 780879431 [Version] 1048832 [Id] AndroidPlayer(LGE_LG-M153@192.168.179.24) [Debug] 1 [PackageName] AndroidPlayer" to [225.0.0.222:54997]...

06-21 08:48:11.165 26342 26357 D Unity : Waiting for connection from host on [0.0.0.0:55408]...

06-21 08:48:12.174 26342 26357 D Unity : Remaining time:8s

06-21 08:48:13.185 26342 26357 D Unity : Remaining time:7s

06-21 08:48:14.193 26342 26357 D Unity : Remaining time:6s

06-21 08:48:15.200 26342 26357 D Unity : Remaining time:5s

06-21 08:48:16.210 26342 26357 D Unity : Remaining time:4s

06-21 08:48:17.216 26342 26357 D Unity : Remaining time:3s

06-21 08:48:18.226 26342 26357 D Unity : Remaining time:2s

06-21 08:48:19.236 26342 26357 D Unity : Remaining time:1s

06-21 08:48:20.246 26342 26357 D Unity : Remaining time:0s

06-21 08:48:21.207 26342 26357 D Unity : Timed out. Continuing without host connection.

06-21 08:48:21.207 26342 26357 D Unity : Started listening to [0.0.0.0:55408]

06-21 08:48:21.207 26342 26357 D Unity : Starting managed debugger on port 56426

06-21 08:48:21.207 26342 26357 D Unity : Using monoOptions --debugger-agent=transport=dt_socket,embedding=1,server=y,suspend=n,address=0.0.0.0:56426

06-21 08:48:21.547 26342 26357 D Unity : [EGL] Attaching window :0xb7be6a40

06-21 08:48:21.548 26342 26357 D Unity : InitializeScriptEngine OK (0x9ead6f00)

06-21 08:48:21.548 26342 26357 D Unity : PlayerConnection already initialized - listening to [0.0.0.0:55408]

06-21 08:48:21.586 26342 26357 D Unity : PlayerInitEngineNoGraphics OK

06-21 08:48:21.586 26342 26357 D Unity : AndroidGraphics::Startup window = 0xb7be6a40

06-21 08:48:21.586 26342 26357 D Unity : [EGL] Attaching window :0xb7be6a40

06-21 08:48:21.597 26342 26357 D Unity : [XR] Discovering subsystems at path assets/bin/Data/UnitySubsystems

06-21 08:48:21.600 26342 26357 D Unity : [EGL] Request: ES 3.1+AEP RGB0 000 0/0

06-21 08:48:21.601 26342 26357 D Unity : [EGL] Checking ES 3.1 support...

06-21 08:48:21.602 26342 26357 D Unity : [EGL] ES3.1 not supported

06-21 08:48:21.602 26342 26357 D Unity : [EGL] Request: ES 3.1 RGB0 000 0/0

06-21 08:48:21.603 26342 26357 D Unity : [EGL] Request: ES 3.0 RGB0 000 0/0

06-21 08:48:21.604 26342 26357 D Unity : [EGL] Found: ID[1] ES 3.0 RGB16 565 0/0

06-21 08:48:21.615 26342 26357 D Unity : GfxDevice: creating device client; threaded=1

06-21 08:48:21.616 26342 26357 D Unity : [EGL] Request: ES 3.1+AEP RGB0 000 0/0

06-21 08:48:21.616 26342 26357 D Unity : [EGL] Request: ES 3.1 RGB0 000 0/0

06-21 08:48:21.617 26342 26357 D Unity : [EGL] Request: ES 3.0 RGB0 000 0/0

06-21 08:48:21.618 26342 26357 D Unity : [EGL] Found: ID[1] ES 3.0 RGB16 565 0/0

06-21 08:48:21.626 26342 26357 D Unity : [EGL] Request: ES 3.0 RGBA32 8888 0/0

06-21 08:48:21.637 26342 26357 D Unity : [EGL] Found: ID[5] ES 3.0 RGBA32 8888 0/0

06-21 08:48:21.637 26342 26357 D Unity : extension is supported with value 0

06-21 08:48:21.645 26342 26357 D Unity : ANativeWindow: (480/854) RequestedResolution: (0/0) RenderingResolution: (0/0) EGLSurface: (480/854)

06-21 08:48:21.655 26342 26357 D Unity : Renderer: Adreno (TM) 304

06-21 08:48:21.655 26342 26357 D Unity : Vendor: Qualcomm

06-21 08:48:21.655 26342 26357 D Unity : Version: OpenGL ES 3.0 V@140.0 AU@ (GIT@I7d704ff208)

06-21 08:48:21.655 26342 26357 D Unity : GLES: 3

06-21 08:48:21.656 26342 26357 D Unity : GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_robustness GL_EXT_texture_format_BGRA8888 GL_EXT_texture_type_2_10_10_10_REV GL_NV_fence GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_depth24 GL_OES_EGL_image GL_OES_EGL_sync GL_OES_EGL_image_external GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_depth_texture_cube_map GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_OES_vertex_array_object GL_QCOM_alpha_test GL_QCOM_binning_control GL_QCOM_driver_control GL_QCOM_perfmon_global_mode GL_QCOM_extended_get GL_QCOM_extended_get2 GL_QCOM_tiled_rendering GL_QCOM_writeonly_rendering GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT

06-21 08:48:21.656 26342 26357 D Unity : _texture_sRGB_decode GL_EXT_texture_filter_anisotropic GL_EXT_multisampled_render_to_texture GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_disjoint_timer_query

06-21 08:48:21.684 26342 26357 D Unity : OPENGL LOG: Creating OpenGL ES 3.0 graphics device ; Context level <OpenGL ES 3.0> ; Context handle -1207557632

06-21 08:48:21.687 26342 26357 D Unity : [EGL] Attaching window :0xb7be6a40

06-21 08:48:21.693 26342 26357 D Unity : Requested framebuffer: resolution[480x854], rgba[8/8/8/8], depth+stencil[on], samples[1]

06-21 08:48:21.693 26342 26357 D Unity : Created framebuffer: resolution[480x854], rgba[8/8/8/8], depth+stencil[24/8], samples[0]

06-21 08:48:21.694 26342 26357 D Unity : [EGL] Attaching window :0xb7be6a40

06-21 08:48:21.695 26342 26357 D Unity : Initialize engine version: 2019.2.21f1 (9d528d026557)

06-21 08:48:21.745 26342 26357 D Unity : Begin MonoManager ReloadAssembly

06-21 08:48:21.752 26342 26357 D Unity : Script Patching: Patch files are not available, '/storage/emulated/0/Android/data/com.DefaultCompany.HelloWorld/cache/ScriptOnly/2019.2.21f1/mono/patch.config' is missing.

06-21 08:48:22.968 26342 26357 D Unity : - Completed reload, in 1.223 seconds

06-21 08:48:23.184 26342 26357 D Unity : PlayerInitEngineGraphics OK

06-21 08:48:23.187 26342 26357 D Unity : Found 3 native sensors

06-21 08:48:23.190 26342 26357 D Unity : Sensor : Accelerometer ( 1) ; 0.000000 / 0.01s ; LGE Accelerometer Sensor / STMicroelectronics

06-21 08:48:23.192 26342 26357 D Unity : Sensor : Accelerometer ( 1) ; 0.000000 / 0.01s ; LGE Accelerometer Sensor / STMicroelectronics

06-21 08:48:23.206 26342 26357 D Unity : SetWindow 0 0xb7cf8608

06-21 08:48:23.207 26342 26357 D Unity : [EGL] Attaching window :0xb7cf8608

06-21 08:48:23.220 26342 26357 D Unity : ANativeWindow: (480/854) RequestedResolution: (0/0) RenderingResolution: (0/0) EGLSurface: (480/854)

06-21 08:48:25.338 26342 26357 D Unity : UnloadTime: 7.615209 ms

06-21 08:48:25.347 26342 26357 D Unity : UUID: a932359a92746509 => d436ae954935bfb66019d4d0218ae6c6

06-21 08:48:25.915 26342 26357 D Unity : Sensor : Accelerometer ( 1) ; 0.000000 / 0.01s ; LGE Accelerometer Sensor / STMicroelectronics

06-21 08:48:25.919 26342 26357 D Unity : Choreographer available: Enabling VSYNC timing

06-21 08:48:26.339 26342 26357 E Unity : AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener

06-21 08:48:26.339 26342 26357 E Unity : java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener

06-21 08:48:26.339 26342 26357 E Unity : at java.lang.Class.classForName(Native Method)

06-21 08:48:26.339 26342 26357 E Unity : at java.lang.Class.forName(Class.java:324)

06-21 08:48:26.339 26342 26357 E Unity : at com.unity3d.player.UnityPlayer.nativeRender(Native Method)

06-21 08:48:26.339 26342 26357 E Unity : at com.unity3d.player.UnityPlayer.c(Unknown Source)

06-21 08:48:26.339 26342 26357 E Unity : at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source)

06-21 08:48:26.339 26342 26357 E Unity : at android.os.Handler.dispatchMessage(Handler.java:98)

06-21 08:48:26.339 26342 26357 E Unity : at android.os.Looper.loop(Looper.java:148)

06-21 08:48:26.339 26342 26357 E Unity : at com.unity3d.player.UnityPlayer$e.run(Unknown Source)

06-21 08:48:26.339 26342 26357 E Unity : Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.initialization.OnInitializationCompleteListener" on path: DexPathList[[zip file "/data/app/com.DefaultCompany.HelloWorld-1/base.apk"],nativeLibraryDirectories=[/data/app/com.DefaultCompany.HelloWorld-1/lib/arm, /data/app/com.DefaultCompany.HelloWorld-1/base.

06-21 08:50:25.981 26342 26342 I Unity : onPause

06-21 08:50:26.026 26342 26357 D Unity : Sensor : Accelerometer ( 1) ; 0.000000 / 0.01s ; LGE Accelerometer Sensor / STMicroelectronics

06-21 08:55:48.707 26342 26342 I Unity : onResume

06-21 08:55:48.757 26342 26357 D Unity : Sensor : Accelerometer ( 1) ; 0.000000 / 0.01s ; LGE Accelerometer Sensor / STMicroelectronics

06-21 08:55:48.763 26342 26357 D Unity : Choreographer available: Enabling VSYNC timing

06-21 08:58:46.578 26342 26357 E Unity : AndroidJavaException: java.lang.NoClassDefFoundError: com.google.android.gms.ads.AdSize

06-21 08:58:46.578 26342 26357 E Unity : java.lang.NoClassDefFoundError: com.google.android.gms.ads.AdSize

06-21 08:58:46.578 26342 26357 E Unity : at libcore.reflect.InternalNames.getClass(InternalNames.java:55)

06-21 08:58:46.578 26342 26357 E Unity : at java.lang.Class.getDexCacheType(Class.java:476)

06-21 08:58:46.578 26342 26357 E Unity : at java.lang.reflect.Method.getReturnType(Method.java:183)

06-21 08:58:46.578 26342 26357 E Unity : at java.lang.Class.getDeclaredMethods(Class.java:672)

06-21 08:58:46.578 26342 26357 E Unity : at com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source)

06-21 08:58:46.578 26342 26357 E Unity : at com.unity3d.player.UnityPlayer.nativeRender(Native Method)

06-21 08:58:46.578 26342 26357 E Unity : at com.unity3d.player.UnityPlayer.c(Unknown Source)

06-21 08:58:46.578 26342 26357 E Unity : at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source)

06-21 08:58:46.578 26342 26357 E Unity : at android.os.Handler.dispatchMessage(Handler.java:98)

06-21 08:58:46.578 26342 26357 E Unity : at android.os.Looper.loop(Looper.java:148)

06-21 08:58:46.578 26342 26357 E Unity : at com.unity3d.player.UnityPlayer$e.run(Unknown Source)

06-21 08:58:46.578 26342 26357 E Unity : Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.AdSize" on path: DexPathList[[zip file "/data/app/com.DefaultCompany.HelloWorld-1/base.apk"],nativeLibraryDirectories=[/data/app/com.De

06-21 08:59:36.159 26342 26357 E Unity : AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.AdRequest$Builder

06-21 08:59:36.159 26342 26357 E Unity : java.lang.ClassNotFoundException: com.google.android.gms.ads.AdRequest$Builder

06-21 08:59:36.159 26342 26357 E Unity : at java.lang.Class.classForName(Native Method)

06-21 08:59:36.159 26342 26357 E Unity : at java.lang.Class.forName(Class.java:324)

06-21 08:59:36.159 26342 26357 E Unity : at com.unity3d.player.UnityPlayer.nativeRender(Native Method)

06-21 08:59:36.159 26342 26357 E Unity : at com.unity3d.player.UnityPlayer.c(Unknown Source)

06-21 08:59:36.159 26342 26357 E Unity : at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source)

06-21 08:59:36.159 26342 26357 E Unity : at android.os.Handler.dispatchMessage(Handler.java:98)

06-21 08:59:36.159 26342 26357 E Unity : at android.os.Looper.loop(Looper.java:148)

06-21 08:59:36.159 26342 26357 E Unity : at com.unity3d.player.UnityPlayer$e.run(Unknown Source)

06-21 08:59:36.159 26342 26357 E Unity : Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.AdRequest$Builder" on path: DexPathList[[zip file "/data/app/com.DefaultCompany.HelloWorld-1/base.apk"],nativeLibraryDirectories=[/data/app/com.DefaultCompany.HelloWorld-1/lib/arm, /data/app/com.DefaultCompany.HelloWorld-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]

1 Ответ

0 голосов
/ 21 июня 2020

Я пытался использовать google admob на устройстве android, но когда я открыл приложение, оно разбилось. Я не уверен, что это та же проблема, но в манифесте android вам нужно включить настраиваемый основной файл android манифеста: редактировать> настройки проекта> плеер> publi sh настройки> включить использование настраиваемого основного android файл манифеста. если вы импортировали пакет самостоятельно, вам нужно go в активы> плагины> android> AndroidManifest. xml и проверить, есть ли комментарий, который выглядит следующим образом: «этот файл автоматически создается с помощью unity. удалить этот комментарий, чтобы отключить его. ". если есть, удалите. если вы этого еще не сделали, добавьте

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="your-Admob-Id-Here"/>

в свой файл AndroidManifest под тегом приложения. также не забудьте добавить идентификатор своего приложения, просто перейдя в активы> мобильные объявления Google> настройки, отметив «google admob» и вставив идентификатор своего приложения: https://support.google.com/admob/answer/7356431

в любом случае, вы можете проверить это руководство: https://developers.google.com/admob/unity/quick-start

...