Ads, ASO & Accessibility

AdMob Test App ID vs Ad Unit ID: The Tilde-Slash Mix-Up

An AdMob app ID identifies the application in the SDK setup. An ad-unit ID identifies a placement and format. Their similar prefixes hide an important difference: the app ID uses ~, while the ad-unit ID uses /.

By , FounderUpdated 3 min read

Use the correct test identifier

Google's Android sample app ID is:

TEXT · REFERENCE EXAMPLE
ca-app-pub-3940256099942544~3347511713

This is a public sample identifier for development, not your production app's registration. A banner demo ad-unit ID is a separate value and belongs in the ad request or view configuration for that format.

Identifier Typical role
ca-app-pub-…~… SDK application identity
ca-app-pub-…/… Ad placement identity
Android package name Android app identity, such as com.example.app
Firebase app ID Firebase project/app configuration, not an AdMob substitute

Validate the delimiter before investigating more complicated SDK failures.

Put it in the selected SDK's configuration

The legacy Android SDK uses com.google.android.gms.ads.APPLICATION_ID metadata under <application>. The Next-Gen SDK uses its documented initialization configuration. Unity's plugin has its own editor settings that feed the native build.

Do not copy an XML snippet for one SDK family into another integration without checking its guide. A “Missing application ID” error should trigger inspection of the merged release manifest or initialization configuration, not random network retries.

Separate debug and release values

Use build variants or controlled configuration so development identifiers do not accidentally ship. Add a release check that searches the final configuration for public sample IDs and confirms the intended production app and placement pairing.

Conversely, do not test interactions with live ads merely because the release configuration is available. Register test devices when working with your own ad units.

Verify the final artifact

A configuration file edited in the project may be overridden during manifest merging or framework export. APKLint's advertising checker can help inspect the resulting metadata, but it cannot confirm ownership of an AdMob account.

Follow the official setup instructions and test-ad guide. Keep app identity, placement identity and test-device status as three separate checks so a successful test banner does not conceal a production configuration mistake.

Create two configuration rows before copying an identifier

Write down an application-level AdMob ID and a format-specific ad-unit ID as separate fields. The application ID contains a tilde; an ad-unit ID contains a slash. For an Android demo build, Google's public sample application ID is ca-app-pub-3940256099942544~3347511713. It identifies the sample app configuration, not a placement that can be passed directly to a banner request.

Consult the Android setup example for the selected SDK path and the test-ad reference for the placement. Keep these fields named clearly in build configuration, such as an app-ID setting and a banner-unit setting. A vague variable named adsId invites accidental interchange.

Verify which value survived resource merging

Suppose a development flavor overrides the app ID while the main manifest refers to a string resource. Inspect the merged manifest and resolved resource for that flavor, then inspect the release flavor separately. Looking only at the main manifest's resource name does not reveal which value the installed variant ultimately receives.

Intentionally exchange the two fields in a disposable configuration test and confirm that your build-time validation detects the mismatch. Restore the supported identifiers before making an ad request. This test is about configuration validation; an invented production identifier or a request against another publisher's unit provides no useful evidence.

Keep demo configuration clearly visible in the build's diagnostic screen or development log without exposing account credentials. When a tester reports an initialization failure, record the variant, SDK family and whether the app-level identifier was resolved. That information is more actionable than a screenshot showing an empty ad container.

Before distributing the intended production artifact, review its actual packaged configuration against the application's own registered settings. Do not infer that every sample value was replaced because one source-file search returned no result; generated resources and flavor overrides also participate. A sample app ID is public documentation data, but accidentally shipping it is still a release-configuration mistake that can invalidate the assumptions behind the advertising test.

Sources and further reading

  1. Google: Legacy Google Mobile Ads SDK setup
  2. Google: Enable test ads on Android
  3. Google Mobile Ads: Next-Gen Android SDK setup

Reference review: 29 September 2026. Examples illustrate the workflow; check your installed versions, release artifact and account-specific Console requirements before applying them. This guide is not a claim that APKLint executed your project or verified your private account.

APKLint

Android inspection tools and practical release guides. About APKLint · Report a correction