Play Store не позволяет установить обе версии моего приложения

Я получаю диалоговое окно «Не удается установить» при попытке установить из Play Store, когда другой вариант уже установлен.

У меня есть два варианта: бесплатный и платный. Оба имеют разные идентификаторы приложений, например:

free {
  applicationId "aaa.bbb.ccc.free"
}

paid {
  applicationId "aaa.bbb.ccc.paid"
}

Я не могу установить Free, если установлена ​​Paid, и наоборот.

В коде я по существу использую основной вариант для платной версии и добавляю рекламные материалы в бесплатную версию.

FreeActivity1 наследует Activity1 и
FreeActivity2 наследуется от Activity2

Мой основной манифест (используется в платной версии):

<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
      package = "aaa.bbb.ccc"
      android:sharedUserId = "aaa.bbb.ccc">
...
<application ...>
    <activity
            android:name = ".Activity1">
        <intent-filter>
            <action android:name = "android.intent.action.MAIN"/>
            <action android:name = "android.intent.action.VIEW"/>
            <category android:name = "android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <activity-alias
            android:name = "${applicationId}.act1"
            android:targetActivity = ".Activity1"/>

    <activity
            android:name = ".ddd.Activity2"/>
    <activity-alias
            android:name = "${applicationId}.act2"
            android:targetActivity = ".ddd.Activity2"/>
</application>

и мой бесплатный манифест:

<manifest xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:tools = "http://schemas.android.com/tools"
      package = "aaa.bbb.ccc"
      android:sharedUserId = "aaa.bbb.ccc">

<application tools:ignore = "GoogleAppIndexingWarning">
    <activity
            android:name = ".FreeActivity1">
        <intent-filter>
            <action android:name = "android.intent.action.MAIN"/>
            <action android:name = "android.intent.action.VIEW"/>

            <category android:name = "android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <activity-alias
            tools:replace = "android:targetActivity"
            android:name = "${applicationId}.act1"
            android:targetActivity = ".FreeActivity1"/>

    <activity
            tools:node = "remove"
            android:name = ".Activity1"
    />

    <activity
            android:name = ".ddd.FreeActivity2"/>

    <activity-alias
            tools:replace = "android:targetActivity"
            android:name = "${applicationId}.act2"
            android:targetActivity = ".ddd.FreeActivity2"/>

    <activity
            tools:node = "remove"
            android:name = ".ddd.Activity2"
    />
...
</application>

У меня есть 2 приложения в Play Console, и они отлично выпущены, но одна из моих функций — перенос пользовательских настроек из бесплатной версии в платную. Как бы то ни было, я просто не могу установить оба на одном устройстве через Google Play. Он отлично работает с установкой apk.

Может быть, косвенно связано (?): У меня есть две учетные записи Google с доступом к Play Store. В один этих учетных записей Play Store сообщает мне, что моя версия Pro несовместима с моим устройством (то же устройство, которое я использую в другой учетной записи). Я использую одни и те же функции/разрешения (интернет) бесплатно и платно.

Помощь будет принята с благодарностью! Заранее спасибо!

Обновлено:

Я отладил установку игрового магазина с помощью logcat. Я получаю следующую ошибку:

Error -505 while installing aaa.bbb.ccc.free: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Package couldn't be installed in /data/app/aaa.bbb.ccc.freeXXXXXXXXXXXX: Package aaa.bbb.ccc.free has no signatures that match those in shared user aaa.bbb.ccc; ignoring!

0
0
297
2

Ответы 2

Похоже, имя вашего пакета одинаково в вашем манифесте как для платного, так и для бесплатного использования. Попробуй поменять там.

Я декомпилировал свои apks, и оба манифеста имеют идентификатор приложения в атрибуте пакета.

Johnneh 28.03.2019 11:58

Хорошо, это на самом деле довольно плохая проблема:

Я использовал SharedUserId и Google App Signing вместе. Это просто невозможно (см. редактирование в op), и в Play Console 0 предупреждений.

Поскольку процесс автоматической подписи всегда создает новый ключ для каждого приложения в Магазине, эти подписи не будут совпадать, но Play Store требует их, если они имеют одинаковый sharedUserId.

Либо я удаляю все функции, требующие sharedUserId, либо отменяю публикацию обоих своих приложений и создаю две новые версии с другим applicationId и использую ручную подпись.

Другие вопросы по теме