在已安装其他版本的情况下尝试从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中的匹配;忽略!
答案 0 :(得分:1)
看来,清单中的付费和免费包裹名称都相同。尝试在那里进行更改。
答案 1 :(得分:1)
好吧,这实际上是一个非常糟糕的问题:
我一起使用了sharedUserId和Google App签名。但这是不可能的(请参见op中的编辑),并且Play控制台中有0条警告。
由于自动签名过程始终会为商店中的每个应用程序生成一个新密钥,因此这些签名将不匹配,但是Play商店要求它们具有相同的sharedUserId。
要么删除所有需要sharedUserId的功能,要么取消发布两个应用程序,并创建两个具有不同applicationId的新版本并使用手动签名。