Reputation: 1765
I update my Android Studio (3.2.1) and its sdk to the latest version. After that it required a manual update for Manifest by adding these tags:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@drawable/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="AllowBackup,GoogleAppIndexingWarning">
<meta-data
android:name="com.google.android.gms.ads.APP_ID"
android:value="ca-app-pub-#############"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".NewActivity" />
<activity android:name=".PreviewActivity" />
<activity android:name=".EditActivity" />
<activity
android:name=".preferencesdata.AboutActivity"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar" />
<activity android:name=".preferencesdata.SettingsActivity"
android:label="@string/settings">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
</application>
whereby instead the app ID I put the real id of my app. The value has also been changed to the right Ad Unit id as shown here https://developers.google.com/admob/android/quick-start. I also called this function in the MainActivity.kt:
MobileAds.initialize(this, resources.getString(R.string.banner_ad_unit_id))
However, the problem could not be solved. It still prints as follows:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.easyapps.cryptnote, PID: 3991
java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException:
******************************************************************************
* The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers *
* should follow the instructions LINK to add a valid *
* App ID inside the AndroidManifest. Google Ad Manager publishers should *
* follow instructions here: LINK. *
******************************************************************************
at android.app.ActivityThread.installProvider(ActivityThread.java:5156)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalStateException:
******************************************************************************
* The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers *
* should follow the instructions here: LINK to add a valid *
* App ID inside the AndroidManifest. Google Ad Manager publishers should *
* follow instructions here: LINK. *
******************************************************************************
at com.google.android.gms.internal.ads.zzmn.attachInfo(Unknown Source)
at com.google.android.gms.ads.MobileAdsInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5153)
... 10 more
Why does this happen? I tried to research the issue, but I can't find any solutions. It seems to be an a new still unsolved issue.
Upvotes: 82
Views: 132677
Reputation: 167
for old ads SDK for example :
implementation 'com.google.android.gms:play-services-ads:21.0.0'
you should write something like this :
<manifest>
<application>
<meta-data
android:name="com.google.android.gms.ads.ca-app-pub-1234567890~1234567890"
android:value="ca-app-pub-1234567890~1234567890"/>
</application>
</manifest>
For new ads SDK
for example : implementation 'com.google.android.gms:play-services-ads:23.3.0'
you should write :
<manifest>
<application>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-1234567890~1234567890"/>
</application>
</manifest>
The difference are : You should write APPLICATION_ID as a symbol (not real numbers in the new SDK)
Upvotes: 0
Reputation: 126
Application Id
to be added in manifest has ~
in it and adUnitId
to be added in the code has /
in it. Using same thing in both the places is one cause for this error.
Upvotes: 0
Reputation: 91
I was desperate for 3 hours to find the solution and I find out (to google_mobile_ads 2.3.0 in my case) is necessary to put the next configuration.
In AndroidManifest.xml
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"
/>
Outside from tag Activity and below add the next line, like the code example:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"
/>
Upvotes: 2
Reputation: 648
Go to your admob website > Select App > App Setting > Copy AdMob Id
Note : Admob Id is different from your Ad Unit Id
Then add meta tag in your manifest
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-XXXXXXXXXXXXXXXXXXXXX"/>
Upvotes: 0
Reputation: 31
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
this should be outside of activity but inside manifest and application
<manifest>
<application>
<activity>
It shouldn't be here
</<activity>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>
Upvotes: 2
Reputation: 771
Replacing the slash (/) in the ID with tilde (~) fixed it for me. But I've got no idea why they give you the id with slash on the Google AdMob web site, but then expect you to change it to a tilde... Bizarre.
Upvotes: 1
Reputation: 654
Note: if you're storing the ID on strings.xml file please do it right like that
in Manifest.xml:
<application>
<!-- some code here -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/admobID" />
<!-- some code here -->
</application>
in strings.xml:
<!-- change it with your ID -->
<string name="admobID" translatable="false">ca-app-pub-
xxxxxxxxx~xxxxxxxxx</string>
Exemple: if you forget to add @ to string/admobID it will cause the same Exception
Upvotes: 2
Reputation: 3541
As for me I was following the instructions from the official google website and Enabling test adds but it turned out there is a wrong character causing the exception. The Id is shown as ca-app-pub-3940256099942544/6300978111
but what's working is ca-app-pub-3940256099942544~6300978111
notice the difference. / and ~
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/testId"/>
strings.xml
<string name="testId">ca-app-pub-3940256099942544~6300978111</string>
Upvotes: 4
Reputation: 312
In my case, I have accidentally put the meta-data tag inside activity tag like below,
<manifest>
<application>
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</activity>
</application>
</manifest>
please make sure to add the mata tag outside the activity tag
<manifest>
<application>
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
</activity>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
Upvotes: 4
Reputation: 61
Make sure to check well because it should be App ID
not ADd ID
in <meta-data ..../>
manifest file.
App ID: ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx
Ad ID: ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx
Upvotes: 0
Reputation: 2013
Make sure you don't have your meta-data tag inside activity...been there, done that.
Upvotes: 3
Reputation: 1422
I have already added <meta-data...../> but the error didn't resolve. The solution is to put <meta-data.../> at last of other meta-data in your androidManifest.xml file present in android -> app -> src -> main . Like this:
<application>
...
...
< meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-################~##########"/>
</application>
The solution is to put the meta data lines at Last (means below all other meta-data present in your android manifest file but just before closing application tag).
Upvotes: 12
Reputation: 7945
Don't get confused with APPLICATION_ID. You should not replace it with your application ID for ex. com.example.myapp
. Just keep it as it is.
<application>
...
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-################~##########"/>
...
</application>
Upvotes: 17
Reputation: 696
With the new Admob library we have to initialize and load Ad in the onCreate()
method and add the App ID inside AndroidManifest
file like mentioned in the other answers. But don't put the Ad ID in AndroidManifest
by confusing it with the App ID which was the mistake that I was doing.
Ex App ID: ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx
Ex Ad ID: ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx
Upvotes: 5
Reputation: 4194
Make sure you check following steps.
1. Project level Gradle has google()
added in all projects.
allprojects {
repositories {
google()
}
}
2. App level Gradle has following dependency added mentioned same as sample below:
**implementation 'com.google.android.gms:play-services-ads:19.3.0'**
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.android.gms:play-services-ads:19.3.0'
}
3. Update App-ID in AndroidManifest.xml
mentioned in <meta-data>
. Replace your App-ID in android:value
<manifest>
<application>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>
4. adView
is added to the layout. Make sure you added ads:adUnitId
not App-ID both are different.
I was getting error because I was confused between two. App-ID has "/" and adUnitId
has "~". For testing purpose use "ca-app-pub-3940256099942544/6300978111" as adUnitId
otherwise your account will get suspended.
When you are ready to publish you can add your real id and publish.
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>
Check all 4 steps and you will be able to resolve this error.
Upvotes: 0
Reputation: 31
If you haven't published your app, try the following
<meta-data android:name="com.google.android.gms.ads.AD_MANAGER_APP" android:value="true"/>
Upvotes: 3
Reputation: 807
Add In Your Manifest File
<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true" />
Upvotes: 30
Reputation: 2431
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"
If you are getting the error above and while searching you've come up here, it may not be because you forgot to insert adMob meta data inside your manifest. I have faced this issue and the solution is implementing the MultiDex inside your application.
Here is the Google instructions : link
Upvotes: 0
Reputation: 4316
For those who are getting this error in Xamarin Forms Cross Platform app, the error
Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException`
it might be due to version of Xamarin.GooglePlayServices.Ads
installed. When I used Version 71.1720.0
I was getting this error. Hence I uninstalled this version and restored it to Version 60.1142.1
and it worked without crashing.
For tutorial please refer to this Youtube Video
Upvotes: 0
Reputation: 7220
Important: This step is required as of Google Mobile Ads SDK version 17.0.0. Failure to add this tag results in a crash with the message: The Google Mobile Ads SDK was initialized incorrectly.
<manifest>
<application>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>
Upvotes: 8
Reputation: 971
In Unity3D starting V3.18 & Ad SDK V 7.45.0, you need to setup these data @ Menu : Assets > Google Mobile Ads > Settings & it will automatically write these data in manifest file.
Adding APPLICATION_ID & AD_MANAGER_APP into manifest file directly which is already given in other answers was still crashing for me.
Upvotes: 0
Reputation: 19250
Google Mobile Ads SDK v17.0.0
for Android has just been released, and it comes with these important changes.
Required AndroidManifest.xml changes
Starting in version 17.0.0, if you are an AdMob publisher you are now required to add your AdMob app ID in your AndroidManifest.xml file. Once you find your AdMob app ID in the AdMob UI, add it to your manifest adding the following tag:
<manifest>
<application>
<!-- TODO: Replace with your real AdMob app ID -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-################~##########"/>
</application>
</manifest>
Failure to add this tag will result in the app crashing at app launch with a message starting with The Google Mobile Ads SDK was initialized incorrectly.
What if I'm using Google Ad Manager instead of AdMob?
Publishers using Google Ad Manager will need to declare themselves as an Ad Manager app with a different tag to avoid the same crash:
<manifest>
<application>
<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true"/>
</application>
</manifest>
See the link for more details.
Upvotes: 7
Reputation: 4220
This happened due to updated AdMob SDK. Now you need to add appID in your manifest file.
<application> . . .
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-################~##########"/>
</application>
You can get appID from here -->Google addmob -->Select app --> App Settings --> App ID.
You can read more from here ads-developers.
If you want to use test ads before putting your own id check the AdMob test ids from here developers.google.
Hope this will help you. Thanks :)
Upvotes: 95
Reputation: 1246
Google gave update for the Google ads so if you update your Admob library in gradle then you need to add this in your manifest.
<manifest>
<application>
<!-- TODO: Replace with your real AdMob app ID -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-################~##########"/>
</application>
</manifest>
Upvotes: 71