Google Play -505安装错误

时间:2016-01-22 13:01:34

标签: android google-play android-permissions

我在Google Play中有一个应用程序,该应用程序是使用工具和API构建的。一切运行良好,但最后一次更新API 23(工具23.1)显示Android 6.0错误的用户编号为“-505”(在Google Play中)应用程序或通知)。但它真的随机......我知道两个相同的设备 - 带有6.0.1的Nexus 5 - 一个有-505,第二个是没有问题安装更新....

经过大量搜索,我发现这个错误意味着重复许可,但是哪个......?

convert -respect-parentheses image.jpg            \
   \( +clone -evaluate set 0 -fill white          \
     -draw "polygon 400,50 450,150 200,220"       \
     -format "Factor:%[fx:1/mean]\n" -write info: \
   \) -compose multiply -composite -verbose info: \
   | grep -E "Factor:|Red:|Green:|Blue:|mean:"

Factor:21.4019
Red:
  mean: 6.70078 (0.0262776)
Green:
  mean: 5.31762 (0.0208534)
Blue:
  mean: 4.40595 (0.0172782)

# Check the Red value - original method gave srgb(145,114,94)
echo "6.70078*21.4019"|bc
143.40942

# Check the Green value
echo "5.317*21.4019"|bc
113.7939

# Check the Blue value
echo "4.40595*21.4019"|bc
94.29570

任何想法?

1 个答案:

答案 0 :(得分:11)

对每个使用带有Gradle和外部库的Android Studio的应用开发者都有用。有些是受影响的,有些则没有,但是例如 Google-Play-Services (在我的情况下,在当前的8.4.0版本中)被调用,这个lib很受欢迎......

说明

每个应用在Gradle中声明自己的 applicationId ,并在清单中声明 packageName ,但这是Android Studio所必需的。 Gradle 强制声明applicationId,但它应该,因为一些lib在其声明中使用引用${applicationId},例如来自上面提到的GPS:

<provider
      android:authorities="${applicationId}.google_measurement_service"
      ...

当你没有声明applicationId构建系统时,使用libs appId并在apk创建之后提供者将是:

<provider
     android:authorities="com.google.android.gms.measurement.google_measurement_service"
     ...

它将安装在your.lovely.app的系统中,没有问题。真正的问题是当另一个第二个应用this.app.will.have.minus505将使用相同的库并且还创建时没有applicationId。在这个应用程序中也有相同的包(在GPS示例com.google.android.gms ...),这是重复错误编号-505,原因authorities field must be unique ...如果您在您的应用程序中声明{{1上面的示例将是:

applicationId

这对于整个系统中的shure来说是独一无二的,因为它应该是:)请注意,引用<provider android:authorities="your.lovely.app.google_measurement_service" ... 也可能在其他必须是唯一的整个系统字段中声明,例如permissions,也不能复制。

就我而言:Google-Play-Services和Google Cloud Messaging lib(据我所知,对于vure v 8.3和8.4)。上面的示例第一个片段来自推送消息提供者。从7.x更新lib之后我的应用程序(这个版本没有使用appId参考,可能是${applicationId}而不是?)到8.4(使用appId ref)开始在设备上安装了-505,这已经安装了另一个应用程序(与我完全没有关系)也错过${packageName}声明并使用相同的GPS库。首次安装的应用程序使用其“原始”库applicationId“保留”原始Google云消息传递提供程序authority字段(导致应用程序/开发人员缺失),此字段在整个系统中必须是唯一的,因此我的应用程序(如安装完毕后得到-505 ......

<强>解决方案:

Here is doc with proper declaration of both packageName and applicationId.在您的应用中定义此字段,它永远不会“干扰”另一个应用(系统中真正拥有的提供商)。

高级作业

反编译或只是“猜测”其他应用applicationId(或任何其他应该是唯一的生物)并在您自己的应用中声明它。您可能根本不使用它,但它可能会锁定此原始应用程序的安装。似乎是锁定竞争对手安装的好方法(例如最大的竞争对手)。没试过,希望这种可能性已经“解决”了......