DEV Community

Kun Shen
Kun Shen

Posted on

Why adi-registration.properties Fails After a Correct Copy-Paste

adi-registration.properties is an ownership-challenge asset used during certain manual Android package-registration flows. The important rule is simple: use the exact snippet generated by the official console, place the file in the APK assets directory, then sign and submit the intended challenge artifact. Do not invent the keys, reuse another package's file, or “clean up” the generated value.

When a console rejects the challenge, the visible text is often not the problem. The file may have been packaged into the wrong variant, renamed by an editor, omitted by a build rule, or added before a later step produced a different artifact.

Treat the snippet as opaque input

The official console is the source of the challenge value. Keep it exact:

  • preserve the filename adi-registration.properties;
  • preserve the generated property names and values;
  • avoid smart quotes, added comments, and line wrapping;
  • do not copy a sample token from a tutorial;
  • do not publish the live snippet in a repository or article.

The task is packaging, not reverse-engineering the challenge format.

Put it in the APK assets root

For a conventional Android application module, the source path is commonly:

app/src/main/assets/adi-registration.properties
Enter fullscreen mode Exit fullscreen mode

Product flavors can change that source location. A flavor-specific asset may live under a path such as app/src/enterprise/assets/, and Gradle merges source sets according to the selected variant. The only decisive evidence is the built APK.

After building, inspect the archive:

unzip -l app-release.apk | grep 'assets/adi-registration.properties'
Enter fullscreen mode Exit fullscreen mode

The expected packaged path is:

assets/adi-registration.properties
Enter fullscreen mode Exit fullscreen mode

If the archive listing does not show that exact entry, the console cannot read what never reached the submitted APK.

The adi-registration.properties packaging checks collect the common source-set, filename, and re-signing mistakes in one checklist. They supplement, rather than replace, the instructions shown for your package in the official console.

Verify the artifact after the final signing step

Do not inspect an intermediate APK and upload a later one. Release pipelines can rebuild, shrink, align, bundle, split, or re-sign artifacts after the file was first added.

Use this sequence:

  1. Add the console-generated file to the intended variant's assets.
  2. Build the challenge APK.
  3. Sign it with the key required by the registration flow.
  4. Inspect that signed APK for the asset entry.
  5. Extract its public signing-certificate fingerprint.
  6. Confirm the package name and certificate are the pair you intend to prove.
  7. Upload that exact file through the official console.

Record a cryptographic hash of the uploaded APK for internal provenance. The APK file hash is not the signing-certificate fingerprint, but it lets the team confirm that the inspected and uploaded files were identical.

Diagnose failures without exposing secrets

A useful support record includes the package name, variant, expected asset path, archive listing, public certificate fingerprint, artifact file hash, build ID, and console error text. It should not include the private signing key, keystore password, Google credentials, or unpublished challenge value.

Common failures map to concrete checks:

Symptom Check first
Asset missing from APK Source-set and packaging rules
Wrong package in console Final applicationId and flavor suffix
Key not eligible Actual signer and official console guidance
File looks correct but fails Uploaded artifact identity and exact generated snippet
Works locally but not in CI Workspace path, generated files and clean-build behavior

Remove or retain it deliberately

Follow the current console instructions on whether the challenge asset must remain in later production releases. Do not assume a one-time challenge file is a permanent runtime configuration, and do not remove it before the official flow confirms completion. Record the decision in the release repository so a future cleanup does not happen by accident.

Primary references: Play Console Help's package-name registration instructions and the Android Developer Console package registration guide, rechecked August 15, 2026.

Disclosure: I work on PkgReady, an independent readiness tool. It is not affiliated with or endorsed by Google or Android. This article was prepared with AI assistance and manually reviewed against the linked primary sources.

Top comments (0)