纯C++ Android NativeActivity集成Admob遇MobileAdsInitProvider找不到错误
Android NativeActivity游戏集成AdMob广告遇ClassNotFoundException问题
我正在给一款采用NativeActivity、完全基于C++和JNI代码(无Java代码)的Android游戏集成AdMob广告,已完成gma库等集成步骤,但运行应用时触发如下错误:
AndroidRuntime: java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.MobileAdsInitProvider" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/base.apk!/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/split_assets.apk!/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/split_config.en.apk!/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/split_config.mdpi.apk!/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/split_config.x86_64.apk!/lib/x86_64, /system/lib64]] AndroidRuntime: at android.app.ActivityThread.installProvider(ActivityThread.java:6396) AndroidRuntime: at android.app.ActivityThread.installContentProviders(ActivityThread.java:5938) AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5853) AndroidRuntime: at android.app.ActivityThread.access$1100(ActivityThread.java:199) AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106) AndroidRuntime: at android.os.Looper.loop(Looper.java:193) AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6669) AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.MobileAdsInitProvider" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/base.apk!/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/split_assets.apk!/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/split_config.en.apk!/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/split_config.mdpi.apk!/lib/x86_64, /data/app/uk.co.realityjump.strikers-6gN2VT-l2i1JT_PJjaUraA==/split_config.x86_64.apk!/lib/x86_64, /system/lib64]] AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:379) AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312) AndroidRuntime: at android.app.AppComponentFactory.instantiateProvider(AppComponentFactory.java:121) AndroidRuntime: at android.app.ActivityThread.installProvider(ActivityThread.java:6380) AndroidRuntime: ... 10 more
目前找到的解决方案都集中在确保AndroidManifest.xml中配置APPLICATION_ID元数据,我已经完成该配置,但问题仍未解决。我的AndroidManifest.xml内容如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="33" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <application android:hasCode="false" android:resizeableActivity="false" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:hardwareAccelerated="true" android:appCategory="game"> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY" /> <activity android:name="android.app.NativeActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> <meta-data android:name="android.app.lib_name" android:value="my-game-name" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
我已经将自己的代码与gma测试项目对比,未发现明显差异,恳请提供解决建议!
内容的提问来源于stack exchange,提问作者Kazade
相关产品推荐
相关产品推荐

