Play Store не позволит установить оба варианта моего приложения - PullRequest
0 голосов
/ 28 марта 2019

При попытке установки из 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, и они были выпущены просто отлично, но одна из моих функций - перенос пользовательских настроекот бесплатной до платной версии.На самом деле, я просто не могу установить оба на одном устройстве через Google Play.Он прекрасно работает с установкой apk.

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

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

РЕДАКТИРОВАТЬ:

Я отладил установку PlayStore с LogCat.Я получаю следующую ошибку:

Ошибка -505 при установке aaa.bbb.ccc.free: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: пакет не может быть установлен в /data/app/aaa.bbb.ccc.freeXXXXXXXXXXX:Пакет aaa.bbb.ccc.free не имеет подписей, совпадающих с сигнатурами у общего пользователя aaa.bbb.ccc;игнорируя!

Ответы [ 2 ]

1 голос
/ 28 марта 2019

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

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

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

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

1 голос
/ 28 марта 2019

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

...