September 20, 2025

Error when installing/updating

Uh oh...

Let's figure out the reasons and solutions.

This article will cover the most common problems encountered when installing or updating the AyuGram client, as well as their solutions. This is the most frequent issue for those who decide to try the client but run into an unfortunate error, namely «Package Conflict».

First, a bit of theory for a full understanding.

We'll be talking about one of the fundamental concepts of security and application management in the Android OS.


Theory

A package name (e.g., com.radolyn.ayugram) is a unique identification number or «passport» for every application in the Android system. There cannot be two applications with the same «passport» on a single device.This uniqueness is the foundation of the entire Android architecture and serves several key purposes:

  1. Unique Identification: The system uses the package name to know exactly which application it's dealing with. This allows it to manage data, permissions, and processes for each app separately.
  2. File System Structure: Android creates a separate data folder for each application (/data/data/<package.name>). If package names were not unique, the system wouldn't know where to save data, and apps would overwrite each other's files, causing chaos.
  3. Security and Permissions: All permissions granted to an app (access to the camera, contacts, files, etc.) are tied to its package name. This ensures that only that specific application can use the rights granted to it.
  4. Google Play and Updates: When you tap «Update» in the Google Play Store, it finds the app on your device with the same package name and replaces it with the new version.

Now that we know this, let's look at the main scenarios where a conflict occurs.

A closer look at each reason


1. Simple Duplication

This is the most obvious case. You've downloaded an APK file for an application that you already have installed from the Google Play Store. The system sees that an app with the package name com.example.app already exists and blocks the installation to avoid corrupting the existing data.

There are three known package names:

  • com.radolyn.ayugram — also known as the vanilla version, has the vanilla suffix in its file name.
  • org.telegram.messenger — the client installed from Google Play or fcm, has the fcm prefix in its file name.
  • org.telegram.messenger.web — the client installed from the website or fcmweb, has the fcmweb prefix in its file name.

Solution:

It's very simple here. If you originally have Telegram from Google Play, you should download the fcmweb version. If you installed it from the website, download the fcm version instead. The vanilla version will also work.

The differences between them are described in this post.


2. Incomplete Uninstallation

This is a more complex case. It happens when:

  • The app was deleted while keeping its data: Some Android skins or uninstallation methods (e.g., via ADB with the -k flag) only remove the executable file (APK) but leave the data folder (/data/data/com.example.app). To the system, this means the app is still «registered» for the current user.
  • Multiple users on the device: You can create multiple profiles on Android (like in Windows). You might have uninstalled the app from your profile, but it remains installed for another user (e.g., in «Guest Mode» or a second account). Since the package name must be unique across the entire device, you won't be able to reinstall it for yourself until it's completely removed from all profiles.

Solution:

If an app was uninstalled incorrectly, you will need the device itself and a Wi-Fi connection.

This method will allow you to find and completely remove the data remnants directly on your phone using wireless debugging, without connecting to a PC.

This is the most crucial step — the connection might not work on the first try.

1. Install LADB from the GitHub repository.

2. Enable «Developer options» and «Wireless debugging» on your phone.

  • Go to SettingsAbout phone and tap repeatedly on «Build number» until you see the message «You are now a developer!».
  • Go back to Settings, then go to SystemDeveloper options.
  • Find and enable the «Wireless debugging» option.

3. Launch LADB.

  • Make sure you are connected to a Wi-Fi network.
  • Open the LADB app. You will see a pop-up window on the main screen where you need to enter the port and pairing code.
Connecting

An explanation using the image as an example:

710516 — Pairing code.

39797 — Port.

  • Now, go back to the «Wireless debugging» menu in the developer settings. Most importantly, use your system's «Split Screen» or «Floating Windows» feature to keep both the Settings app and LADB open simultaneously.

This is important because the pairing code refreshes every time you switch between apps.

  • After entering the correct data, the terminal will display: Entered adb shell Success! *\(^0^)/*, which means you did everything correctly.
Pairing has been successfully completed
  • You can also perform an additional check with the adb devices command, which will output the following:
Pairing verification

4. Finding the package name

  • To uninstall via ADB, you need to know the app's system package name (e.g., com.google.android.youtube), not its display name.
  • Recalling the first solution, mentally exclude the package names of apps already installed on your device to prevent accidentally deleting the wrong one and making life harder for yourself.
  • You can make your life easier with this command (replace <package-name> with the actual package name):
adb shell pm list packages <package-name>
  • If, after entering the command (e.g., adb shell pm list packages org.telegram.messenger), the package name is printed in the terminal, it means the app is installed on the device and you should not touch it.
package:org.telegram.messenger
  • If you have two Telegram clients installed (one from Google Play and another from the website), then you will see both package names in the terminal:
package:org.telegram.messenger
package:org.telegram.messenger.web
  • If, on the other hand, there is no output after entering the command, then that's the one you're looking for.

5. Complete uninstallation of the application

  • Once you know the package name, enter the following command in the command line, replacing <packagename> with your app's package name:
adb uninstall <packagename>
  • For example, to completely uninstall the vanilla version of AyuGram, the command would be:
adb uninstall com.radolyn.ayugram
Successfully uninstalled
  • After executing the command, you will see a Success message. This means the app and all its data have been completely removed. You can now install it again without any issues.

Troubleshooting LADB Launch Issues

1. Simple reconnection

Make sure you followed the connection instructions with the code precisely. Try disabling and re-enabling «Wireless debugging», and don't forget to fully close LADB first.

2. Re-pairing

Re-authorizing also helps: in the LADB app settings (︙ ➝ More ➝ «Unpair» or «Restart»).

This method is also helpful if, after entering adb devices, you see something like this:

adb-23d51c12-X2mCZ9._adb-tls-connect._tcp.device

3. Non-ADB

If, after pairing, you see the following message in the terminal:

Entered non-adb shell

Then that's bad news. You won't be able to remove the app's leftover data in this mode. You will have to go into the LADB settings and enable the «Pair & Shell» option.

Settings LADB

Why LADB specifically, when you could use the old method on a PC?

In short, it's much easier for beginners.

Firstly, the problem of uninstalling an app while keeping its data is common in Android 11 and newer, which is also when wireless debugging was improved.

Secondly, it avoids the setup or organizational steps required for a PC:

  • installing platform tools and/or similar applications.
  • installing drivers.

But if someone can't uninstall the package this way, you can use the first method, unless, of course, you have two Telegram clients installed.


3. Digital Signature Conflict

Every developer signs their application with a unique digital key (certificate). This signature is like a digital fingerprint.

Android strictly ensures that an update for an application is signed with the very same key as the already installed version.

Why is this necessary? It protects you from malicious software. Imagine you have a banking app installed. An attacker creates a virus with the exact same package name and icon to trick you into «updating» the legitimate app. If it weren't for the signature check, the virus could replace your banking client and steal your data. But since the attacker doesn't have the real developer's secret key, their counterfeit app will have a different signature, and Android will block the installation.

A signature conflict occurs when:

  • You installed an app from Google Play and then try to install an «update» from a third-party source (e.g., a cracked version), which is signed with a different key.
  • You install a debug version of an app (signed with a debug key) over a release version (signed with a release key), or vice versa.
  • The developer themself, for some reason (e.g., key loss), changed the signing key for a new version of the app (in this case, the old version must be completely uninstalled before installing the new one).

Solution:

This problem can arise for various reasons. You might have a modification or an old signature installed.

  1. Skip this step if your app version is newer than 20240406 (Telegram codebase 10.10.1). Install the app version with the old signature, as the full backup feature for AyuGram settings starts from this version.
  2. Export your settings from exteraGram (the «Other» section) by sending the backup to any chat, and also export the AyuGram deleted messages database.
  3. Ensure you have access to your accounts to receive authorization codes after uninstalling AyuGram (without keeping data).
  4. Uninstall AyuGram (without keeping data).
  5. Install the new version of the app.
  6. Restore your settings and enjoy!

Conclusion

A package name conflict is not a bug, but a fundamental mechanism for protection and order in Android. It ensures that every application is unique, its data is isolated, and its updates are secure and come only from the original developer.