Google播放-505安装错误
Google Play -505 install error
我在 Google Play 中有一个应用程序,它是使用工具和 API 22 构建的。一切都运行良好,但上次更新 API 23(工具 23.1)显示Android 6.0 错误编号为“-505”的用户(在 Google Play 应用或通知中)。但是..它真的很随机...我知道有两个相同的设备 - Nexus 5 和 6.0.1 - 一个有 -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" />
有什么想法吗?
答案对每个使用 Android Studio 和 Gradle 和外部库的应用程序开发人员都很有用。有些受到影响,有些没有,但是例如 Google-Play-Services(在当前 8.4.0 版本中,在我的例子中)被涉及,这个库很受欢迎......
描述:
每个应用 都 在 Gradle 中声明自己的 applicationId
,并且 packageName
在清单中,但这是 Android Studio 所必需的。 Gradle 是 而不是 强制声明 applicationId
,但它应该被声明,因为一些库在它们的声明中使用了引用 ${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}
也可能在其他 must-be-unique-in-whole-system 字段中声明,例如 permissions, 也不能复制。
在我的例子中:Google-Play-Services 和 Google 云消息传递库(我知道 shure v 8.3 和 8.4)。上面的示例第一个片段来自推送消息提供商。我的应用程序在 lib 更新后从 7.x(这个版本没有使用 appId 引用,也许 ${packageName}
代替?)到 8.4(使用 appId ref)开始崩溃安装 -505 在设备上,已经安装了另一个应用程序(与我完全无关)也缺少 applicationId
声明并使用相同的 GPS 库。首次安装的应用程序 "reserves" 原始 Google 云消息传递提供商 authority
字段使用其 "original" 库 applicationId
(导致应用程序's/developer 丢失)和这个字段在整个系统中必须是唯一的,所以我的应用程序(安装后)得到 -505...
解法:
Here is doc with proper declaration of both packageName and applicationId. 在您的应用程序中定义此字段,它永远不会 "interferre" 与其他应用程序(真正自己的提供商在系统中唯一)。
高级作业:
反编译或 "guess" 其他应用程序 Provider
(或任何其他 should-be-unique 生物)并在您自己的应用程序中声明它。您可能根本不会使用它,但它可能会锁定此原始应用程序的安装。似乎是锁定竞争对手(例如最大的竞争对手)安装的好方法。没试过,希望这个可能性已经"solved"...
我在 Google Play 中有一个应用程序,它是使用工具和 API 22 构建的。一切都运行良好,但上次更新 API 23(工具 23.1)显示Android 6.0 错误编号为“-505”的用户(在 Google Play 应用或通知中)。但是..它真的很随机...我知道有两个相同的设备 - Nexus 5 和 6.0.1 - 一个有 -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" />
有什么想法吗?
答案对每个使用 Android Studio 和 Gradle 和外部库的应用程序开发人员都很有用。有些受到影响,有些没有,但是例如 Google-Play-Services(在当前 8.4.0 版本中,在我的例子中)被涉及,这个库很受欢迎......
描述:
每个应用 都 在 Gradle 中声明自己的 applicationId
,并且 packageName
在清单中,但这是 Android Studio 所必需的。 Gradle 是 而不是 强制声明 applicationId
,但它应该被声明,因为一些库在它们的声明中使用了引用 ${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}
也可能在其他 must-be-unique-in-whole-system 字段中声明,例如 permissions, 也不能复制。
在我的例子中:Google-Play-Services 和 Google 云消息传递库(我知道 shure v 8.3 和 8.4)。上面的示例第一个片段来自推送消息提供商。我的应用程序在 lib 更新后从 7.x(这个版本没有使用 appId 引用,也许 ${packageName}
代替?)到 8.4(使用 appId ref)开始崩溃安装 -505 在设备上,已经安装了另一个应用程序(与我完全无关)也缺少 applicationId
声明并使用相同的 GPS 库。首次安装的应用程序 "reserves" 原始 Google 云消息传递提供商 authority
字段使用其 "original" 库 applicationId
(导致应用程序's/developer 丢失)和这个字段在整个系统中必须是唯一的,所以我的应用程序(安装后)得到 -505...
解法:
Here is doc with proper declaration of both packageName and applicationId. 在您的应用程序中定义此字段,它永远不会 "interferre" 与其他应用程序(真正自己的提供商在系统中唯一)。
高级作业:
反编译或 "guess" 其他应用程序 Provider
(或任何其他 should-be-unique 生物)并在您自己的应用程序中声明它。您可能根本不会使用它,但它可能会锁定此原始应用程序的安装。似乎是锁定竞争对手(例如最大的竞争对手)安装的好方法。没试过,希望这个可能性已经"solved"...