android – Google Play -505安装错误

前端之家收集整理的这篇文章主要介绍了android – Google Play -505安装错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Google Play中有一个应用程序,它是使用工具和API构建的.一切都运行良好,但最后一次更新API 23(工具23.1)显示 Android 6.0错误编号为“-505”的用户(在Google Play应用中或在通知).但它真的随机……我知道两个相同的设备 – 带有6.0.1的Nexus 5 – 一个有-505,第二个是没有问题安装更新….

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<!-- GCM -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
    android:name="com.dummy.mobile.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.dummy.mobile.permission.C2D_MESSAGE" />

<android:uses-permission
    android:name="android.permission.READ_PHONE_STATE" />
<android:uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<android:uses-permission
    android:name="android.permission.READ_EXTERNAL_STORAGE" />

有任何想法吗?

解决方法

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

描述:

每个应用都必须在Gradle中声明自己的applicationId,并在manifest中声明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 …如果您在您的应用程序applicationId声明上面的示例将是:

<provider
      android:authorities="your.lovely.app.google_measurement_service"
      ...

这对于整个系统中的shure来说将是独一无二的,因为它应该是:)注意,引用${applicationId}也可能在其他必须是唯一的系统字段中声明,例如permissions,它可以也不重复.

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

解:

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

高级作业:

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

原文链接:https://www.f2er.com/android/315196.html

猜你在找的Android相关文章