Подтвердить что ты не робот

Пользователи приложений Android Получают "Приложение не установлено" при попытке обновления

ОБНОВЛЕНИЕ:. Тем, кто спрашивает, какие коды ошибок получат пользователи: нет кодов ошибок. Он просто открывает пустую страницу после установки, в которой говорится: "Приложение не установлено" с большим "X" рядом с ним. Возможно, разные версии Android могут иметь разные сообщения. Нет никаких указаний на то, что пошло не так во время установки.

ОБНОВЛЕНИЕ 2:. Некоторые пользователи сообщили, что они получают код ошибки "-504", когда они пытаются установить/обновить из Play Маркета, а сообщение "приложение не установлено" при попытке вручную установить .apk. Я не знаю, какая корреляция имеет эта ошибка с тем, что пользователи не могут установить, но решения только из двух вопросов на SO по этой теме ничего не исправить для меня. Я включил обновленные манифесты и файлы сборки.

ОБНОВЛЕНИЕ 3:. Похоже, пользователи сообщают об этой проблеме в версиях после успешной установки IAB, что еще более де-легитимизирует концепцию, что эта проблема вызвана введением IAB.

ОБНОВЛЕНИЕ 4: Похоже, проблема связана с тем, что старые пользователи пытаются обновить до новой версии, а не с новыми пользователями. Имея это в виду, существует высокая вероятность того, что эта проблема является результатом INSTALL_FAILED_UID_CHANGED. Просматривая историю версий, значительное изменение, внесенное мной в проблемную версию, которую пользователи не могут обновить, - это удаление чертежей, которые я больше не хотел использовать.

Попросить пользователей пройти процедуру исправления, это не правдоподобно. Если есть решение, которое я могу обеспечить, чтобы исправить его для ошибочных пользователей, замечательно... если нет, то наименьшее, что я могу сделать в этот момент, - это контроль над повреждениями и гарантировать, что этого не произойдет в будущем.

ПРИМЕЧАНИЕ. Ниже приведено оригинальное сообщение о том, что проблема связана с введением IAB в приложение. С тех пор это становится все более и более маловероятным, чтобы быть причиной. Несмотря на это, сообщение все еще имеет соответствующую информацию.

------------------------------------------------------------------------------------------

Оригинальное название: Пользователи Android-приложения Получают "Приложение не установлено" после представления IAB

Недавно я представил IAB в своем приложении, опубликованном в Google Play. Через некоторое время я начал получать отчеты от некоторых пользователей о том, что при попытке установить или обновить их при попытке установить "неудачную установку". Что заставляет меня думать, что это вызвано внедрением IAB, так это то, что один долговременный пользователь отправил мне по электронной почте сообщение о том, что, когда он пытается обновить версию с помощью IAB, установщик упоминает, что были введены новые разрешения и требует разрешения пользователя. После того, как он предоставлен, он говорит, что приложение не удалось установить.

Я сделал некоторый Googling, и это, кажется, проблема с их конца, один пользователь даже попытался вручную установить .apk с указанными разрешениями, удаленными без каких-либо успехов. Я не хочу, чтобы это не то, что я сделал неправильно, но неизбежность, которую я должен принять с некоторыми пользователями.

Обратите внимание, что подавляющее большинство не имеет проблем с установкой приложения, и я не получал никаких сообщений об этом до тех пор, пока не была введена IAB. Меня это не беспокоило бы, если бы это было небольшое количество потерянных пользователей, но проблема в том, что эти пользователи вредят моему рейтингу приложения. Пользователи также отметили, что они могут устанавливать приложения, за исключением моих собственных, отлично.

Я не исключаю, что пользователи могли получать эти ошибки даже до ввода IAB, и связь может быть ошибочной.

Вот мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest package = "com.jjsoftware.fullscientificcalculator"
      xmlns:android = "http://schemas.android.com/apk/res/android">

<uses-permission android:name = "android.permission.VIBRATE"/>
<uses-permission android:name = "com.android.vending.BILLING"/>

<application
    android:allowBackup = "true"
    android:fullBackupContent = "true"
    android:icon = "@drawable/logo"
    android:label = "@string/app_name">
    <activity
        android:name = ".MainActivity"
        android:hardwareAccelerated = "false"
        android:label = "@string/app_name"
        android:screenOrientation = "portrait"
        android:theme="@style/AppTheme">
        <intent-filter>
            <action android:name = "android.intent.action.MAIN"/>
            <category android:name = "android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <activity
        android:name = ".SettingsActivity"
        android:theme = "@style/PreferencesTheme">
        <intent-filter>
            <action android:name = ".SettingsActivity"/>
            <category android:name = "android.intent.category.PREFERENCE"/>
        </intent-filter>
    </activity>
</application>

Вот файл Gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.jjsoftware.fullscientificcalculator"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 102
        versionName "1.679"
    }

    sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] } }
}

dependencies {
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.google.android.gms:play-services-ads:8.4.0'
    compile 'com.android.support:gridlayout-v7:23.2.1'
    compile files('libs/exp4j-0.4.5.jar')
    compile files('libs/EJML-core-0.28.jar')
    compile files('libs/EJML-dense64-0.28.jar')
    compile files('libs/Jama-1.0.3.jar')
    compile files('libs/EJML-simple-0.28.jar')
}

И, если нужно, сборка верхнего уровня:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
4b9b3361

Ответ 1

В файле манифеста есть строка в строке android:largeHeap="true">>. xml заканчивается на >>. Это может вызвать ошибку.

Ответ 2

это могут быть телефоны с более низкой версией сервисов Google Play, чем минимум, который вы определили в APK.

Вы ничего не можете сделать, если это так, за исключением того, что пользователи могут обновлять свои сервисы google (https://play.google.com/store/apps/details?id=com.google.android.gms&hl=en) или вы уменьшаете свою версию.

также может потребоваться добавить в манифест следующего содержания. (я думаю, что это используется для сравнения версий, установленных в телефонах с версиями, требуемыми apk)

<application ...>

    <!-- This meta-data tag is required to use Google Play Services. -->
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" /> 

</application>

Ответ 3

Помните, что последняя версия Android (версия Marshmallow) изменила разрешения, чтобы предоставить больше доступа к разрешениям для пользователя. Поэтому недостаточно определить разрешения в манифесте.

С помощью кода вы должны убедиться, что разрешение на выставление счетов включено пользователями при использовании этого приложения. Самый простой способ обойти это - установить целевой SDK на v-22. Это должно временно решить вашу проблему.

Реальное решение, однако, должно обрабатывать новые разрешения, внесенные в Marshmallow. Вот как это сделать:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

    switch(requestCode) {
        case BILLING_REQUEST:
            if (canAccessBilling()) {
                callBillingPerms();
            }
            break;
    }
}

private void callBillingPerms() {
    Toast.makeText(this, "We need your permission to access Billing", Toast.LENGTH_SHORT).show();
}

private boolean canAccessSMS() {
    return(hasPermission(Manifest.vending.BILLING));
}

@TargetApi(Build.VERSION_CODES.M)
private boolean hasPermission(String perm) {
    return(PackageManager.PERMISSION_GRANTED==this.checkSelfPermission(perm));
}

Надеюсь, что это поможет:)

Ответ 4

Возможно, ошибка указана на стороне пользователя.

В этой статье указано следующее:

Google Play - Ошибка 504

Проблема

Приложение не может быть загружено из-за ошибки.

Первое решение

Обычно, пожалуйста: зайдите в Настройки > Приложения > Все > Хранилище Google Play и очистите кэш и очистите данные. Также Очистить кеш и Очистить данные для Google Services Framework.

Второе решение

Попробуйте удалить свой аккаунт GMail

В этом ответе на столбец обсуждались подобные идеи.

В соответствии с список кодов состояния в Википедии, ошибка 504 означает следующее:

504 Тайм-аут шлюза
  Сервер действовал как шлюз или прокси и не получал своевременного ответа от восходящего сервера.

Попросите своих пользователей, если выполнение вышеописанного решения проблемы.

Ответ 5

Я получил эту ошибку, установив на своем Android-устройстве новый APK для приложения, которое я разрабатываю.

Я проверил журнал отладки на устройстве (используя "adb -d logcat > log.txt" ) и нашел запись "PackageManager: обнаружено понижение: обновление версии кода 2 старше текущего 10000". Очевидно, что что-то пошло не так с версией.

Я удалил пакет, а затем смог установить APK без проблем.