Play商店不允许同时安装我的应用的两种版本

时间:2019-03-28 06:38:57

标签: android google-play android-manifest

在已安装其他版本的情况下尝试从Play商店安装时,出现“无法安装”对话框。

我有两种口味:免费和付费。两者都有不同的applicationId,如下所示:

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

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

如果安装了付费,我将无法安装免费版,反之亦然。

在代码中,我基本上将main-flavor用于付费版本,并以自由的形式添加广告内容。

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>

我在Play控制台中有2个应用,并且发布得很好,但是我的功能之一是将用户设置从免费版本迁移到付费版本。实际上,我无法通过Google Play在同一设备上同时安装两者。可以与apk安装配合使用。

可能存在切线关系(?):我有两个可以访问Play商店的Google帐户。在其中的一个帐户上,Play Store告诉我,我的Pro版本与我的设备不兼容(我在其他帐户上使用的同一设备)。我免费使用和付费使用相同的功能/权限(互联网)。

我们将不胜感激!预先感谢!

编辑:

我已使用logcat调试了Playstore的安装。我收到以下错误:

  

在安装aaa.bbb.ccc.free时出现错误-505:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE:软件包无法安装在/data/app/aaa.bbb.ccc.freeXXXXXXXXXXXX:软件包aaa.bbb.ccc.free没有签名与共享用户aaa.bbb.ccc中的匹配;忽略!

2 个答案:

答案 0 :(得分:1)

看来,清单中的付费和免费包裹名称都相同。尝试在那里进行更改。

答案 1 :(得分:1)

好吧,这实际上是一个非常糟糕的问题:

我一起使用了sharedUserId和Google App签名。但这是不可能的(请参见op中的编辑),并且Play控制台中有0条警告。

由于自动签名过程始终会为商店中的每个应用程序生成一个新密钥,因此这些签名将不匹配,但是Play商店要求它们具有相同的sharedUserId。

要么删除所有需要sharedUserId的功能,要么取消发布两个应用程序,并创建两个具有不同applicationId的新版本并使用手动签名。