在C++中使用Admob时无法获取提供程序com.google.android.gms.ads.MobileAdsInitProvider

dzjeubhm  于 5个月前  发布在  Android
关注(0)|答案(1)|浏览(64)

我正在尝试将Admob广告添加到一个C++ Android游戏中。该游戏使用NativeActivity,并且根本不提供任何Java代码-它完全是纯C++和JNI代码。
我已经遵循Admob C++ instructions来集成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

字符串
我发现的所有解决这个问题的方法都集中在确保APPLICATION_ID Meta数据填充在AndroidManifest.xml中。
我的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 testapp中的代码进行了比较,我看不出有任何相关的区别。欢迎提出任何建议!

kmb7vmvb

kmb7vmvb1#

我发现问题了!AndroidManifest.xml有hasCode="false"-这是真的,直到我开始尝试使用Admob库!
删除此属性可修复此问题。

相关问题