【问题标题】:Google Play APK wont deactivate - Ionic 2Google Play APK 不会停用 - Ionic 2
【发布时间】:2017-01-27 16:04:19
【问题描述】:

虽然 ionic 2 的开发 iv 一直在构建我的应用程序并在 Google Play 的 BETA 频道中对其进行测试,但一切进展顺利,今天我更新到 ionic 2 final 并将其传递给 ionic 包为我构建一个 APK。 ..

ionic package build android --profile android --release

我已经将它上传到了 Google Play 并且我正在...

A device with API levels in range 17+ is eligible to receive version 76, which is optimised for higher API levels, but actually receives version 3000328 because it has a higher version code. This would occur when Release track containing any of [BETA] and Screen layouts containing any of [small, normal, large, xlarge] and Native platforms containing any of [arm64-v8a, armeabi, armeabi-v7a, x86, x86_64] and Features containing all of [android.hardware.FAKETOUCH, android.hardware.LOCATION, android.hardware.location.GPS, android.hardware.location.NETWORK, android.hardware.screen.PORTRAIT].

A device upgrading from API levels = 16 to API levels in range 17+ would become eligible to receive version 76, which is optimised for higher API levels, but would actually receive version 3000328 because it has a higher version code. This would occur when Release track containing any of [BETA] and Screen layouts containing any of [small, normal, large, xlarge] and Native platforms containing any of [arm64-v8a, armeabi, armeabi-v7a, x86, x86_64] and Features containing all of [android.hardware.FAKETOUCH, android.hardware.LOCATION, android.hardware.location.GPS, android.hardware.location.NETWORK, android.hardware.screen.PORTRAIT].

A device with API levels in range 17+ is eligible to receive version 76, which is optimised for higher API levels, but actually receives version 3000258 because it has a higher version code. This would occur when Release track containing any of [BETA] and Screen layouts containing any of [small, normal, large, xlarge] and Features containing all of [android.hardware.FAKETOUCH, android.hardware.LOCATION, android.hardware.location.GPS, android.hardware.location.NETWORK, android.hardware.screen.PORTRAIT].

A device upgrading from API levels = 16 to API levels in range 17+ would become eligible to receive version 76, which is optimised for higher API levels, but would actually receive version 3000258 because it has a higher version code. This would occur when Release track containing any of [BETA] and Screen layouts containing any of [small, normal, large, xlarge] and Features containing all of [android.hardware.FAKETOUCH, android.hardware.LOCATION, android.hardware.location.GPS, android.hardware.location.NETWORK, android.hardware.screen.PORTRAIT].

Some devices are eligible to run multiple APKs. In such a scenario, the device will receive the APK with the higher version code.

76 是我从 2015 年 8 月 20 日开始的当前生产版本(API 级别 16+)

3000258 是 12 月的旧 BETA(API 级别 16+)

3000328 是我今天最新的 BETA 版本(API 级别 16+)

我只想使用 3000328,但 Google Play 不允许我停用 3000258,当我这样做时显示...

It is forbidden to downgrade devices which previously used M permissions (target SDK 23 and above) to APKs which use old style permissions (target SDK 22 and below). This occurs in the change from version 3000258 (target SDK 23) to version 76 (target SDK 0).

任何想法为什么我不能停用 3000258?谢谢

【问题讨论】:

    标签: android ionic-framework google-play apk


    【解决方案1】:

    我看到您列出了使用的 API 级别(API 级别 16+),我假设这是 minSdkVersion 但要检查的重要属性,在这种情况下设置是 @ 987654325@.

    这是从 Android 6 开始由 Google/Android 的新权限系统引起的问题。本质上,如果应用发布时的 targetSdkVersion 为 23,则存在 newer method of permissions management, that is not backward compatible。因此,Google 不允许您将当前使用旧权限系统(sdkVersion 23+ 的一部分)的用户降级到较低版本。


    ionic build --release 似乎默认选择了最高可用的 sdk 版本,这可能是您过去提交了更高版本的 SDK 版本而没有在 config.xml 中明确说明的原因。现在由于某种原因,您的构建使用的是较低的 sdk 版本,并导致您看到的错误。

    快速的解决方案是为 SDK v23 强制执行 targetSdkVersion 以确保它将通过激活过程。但是,这意味着只有 Android 6+ 的设备可以下载和使用该应用程序。

    您可以在 Ionic 项目的根目录中强制执行此 sdk 版本 config.xml,方法是添加 <preference name="android-targetSdkVersion" value="23" />

    重新运行构建过程后,仔细检查 android 清单以确保它在 this format 中正确传播:

    <uses-sdk android:minSdkVersion="16"
              android:targetSdkVersion="23"
              android:maxSdkVersion="23" />
    

    所有这些都失败了,StackOverflow 用户报告了a potential workaround,这涉及完全禁用 beta 测试。

    【讨论】:

    • 做了所有这些,当我把它上传到谷歌播放时,它说API levels 14+ Target SDK 23。当我尝试发布时,我得到 此配置无法发布,原因如下:禁止将以前使用 M 权限的设备(目标 SDK 23 及更高版本)降级为使用旧式权限的 APK(目标SDK 22 及以下版本)。这发生在从版本 3000258(目标 SDK 23)到版本 76(目标 SDK 0)的更改中。
    【解决方案2】:

    问题不是3000258的问题。76有问题,可能是Target SDK版本问题,所以你必须专注于76,解决SDK Target问题,然后你可以禁用3000258问题。

    我写这篇文章是为了以防万一您尝试更改 3000258 SDK 版本。如果您已经尝试将 SDK Target 更改为 76,请不要介意这个答案。

    【讨论】:

    • 版本 76 有 API levels 17+ 和 Target SDK -
    • 这两个错误都表明版本 76 的 API 级别低于旧版本。你检查好了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2017-07-13
    相关资源
    最近更新 更多