Les utilisateurs de l'application Android reçoivent "L'application n'est pas installée" Lorsqu'ils tentent de mettre à jour
mise à jour: à ceux qui ont demandé quels codes d'erreur les utilisateurs recevaient: il n'y a pas de codes d'erreur. Il ouvre juste une page vierge, post-installation qui dit "l'application n'a pas été installée" avec un grand 'X' à côté. Il est possible que différentes versions D'Android pourraient avoir des messages différents. Rien n'indique ce qui a mal tourné pendant l'installation.
UPDATE 2: certains utilisateurs ont indiqué qu'ils reçoivent le code d'erreur "-504" lorsqu'ils essaient de installez/mettez à jour depuis le Play Store, et le message "app not installed" lors de l'installation manuelle de la .apk. Je ne sais pas quelle corrélation cette erreur a avec les utilisateurs étant incapable d'installer, mais les solutions des 2 seules questions sur SO sur ce sujet n'a rien corrigé pour moi. J'ai inclus les manifestes mis à jour et construire des fichiers.
UPDATE 3: il semble que les utilisateurs signalent ce problème dans des versions après que L'IAB a été installé avec succès, ce qui dé-légitimation du concept selon lequel cette question est causée par la mise en place du CCI.
UPDATE 4: on dirait que le problème vient des anciens utilisateurs qui essayent de mettre à jour vers une nouvelle version, et pas des nouveaux utilisateurs. Avec cela à l'esprit, il y a de fortes chances que cette question soit le résultat de INSTALL_FAILED_UID_CHANGED. En regardant à travers l'histoire de version, le changement significatif que j'ai fait dans la version problématique que les utilisateurs ne peuvent pas mettre à jour est la suppression des tirages que je n'ai pas plus longtemps destiné à l'utilisation.
demander aux utilisateurs de passer par la procédure pour corriger cela n'est pas plausible. S'il y a une solution que je peux appliquer qui pourrait la réparer pour les utilisateurs défectueux, merveilleux... si pas, le moins que je puisse faire à ce stade est dommage de contrôle et de s'assurer que cela n'arrive pas dans l'avenir.
NOTE: ci-dessous est le post original spéculant que le problème est le résultat de l'introduction D'IAB dans l'application. Depuis, il est devenu de plus en plus improbable que pour être la cause. Peu importe, la poste a encore de l'information pertinente.
------------------------------------------------------------------------------------------
Titre Original: Android App les Utilisateurs à Obtenir une "Application non installée" Après l'Introduction de l'IAB
j'ai récemment présenté IAB dans mon application qui a été publiée sur Google Play. Après un certain temps, j'ai commencé à recevoir des rapports de certains utilisateurs qu'ils obtiennent une "erreur d'installation infructueuse" quand ils essaient de l'installer ou de le mettre à jour. Qu'est-ce qui me fait penser que c'est causé par présentation de IAB est qu'un utilisateur de longue date particulier m'a envoyé un e-mail que quand il tente de mettre à jour à la version avec IAB, l'installateur mentionne que de nouvelles permissions ont été introduites et nécessite la permission de l'utilisateur. Une fois accordé, il dit que l'application n'a pas réussi à installer.
j'ai fait quelques recherches sur Google et il semble que ce soit un problème de leur côté, un utilisateur a même essayé d'installer manuellement un .apk avec dit autorisations supprimé sans aucun succès. Je ne veux pas m'assurer que ce n'est pas quelque chose que j'ai fait de mal, mais une fatalité que je dois accepter avec certains utilisateurs.
notez que la grande majorité n'a aucun problème d'installation de l'application, et je n'ai reçu aucun rapport à ce sujet jusqu'à ce que L'IAB ait été introduit. Cela ne me dérangerait pas tellement s'il y avait une petite quantité d'utilisateurs perdus, mais le problème est, ces utilisateurs blessent la cote de mon application. Les utilisateurs ont également mentionné qu'ils peuvent installer des applications, à l'exclusion de mon propre, parfaitement bien.
Je n'exclus pas le il est possible que les utilisateurs aient eu ces erreurs même avant L'introduction de L'IAB, et le lien pourrait être erroné.
Voici mon manifeste:
<?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>
voici le fichier 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')
}
et, si besoin est, la construction de haut niveau:
// 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()
}
}
5 réponses
il y a une faute de frappe dans le fichier manifeste sur la ligne android:largeHeap="true">>
. la ligne xml se termine par >>
. Cela peut être la cause de l'erreur.
il se peut que les téléphones aient une version des services Google play inférieure au minimum que vous avez défini dans L'APK.
Il n'y a pas grand chose que vous pouvez faire si c'est le cas, sauf pour les utilisateurs de mettre à jour leurs services google (https://play.google.com/store/apps/details?id=com.google.android.gms&hl=en) ou vous réduisez votre version.
aussi, vous pouvez avoir besoin d'ajouter ce qui suit à votre manifeste. (je pense que c'est utilisé pour comparer les versions installé dans les téléphones avec les versions requises par l'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>
rappelez-vous que le dernier épisode D'Android (version Marshmallow) a changé les permissions pour donner plus d'accès aux permissions à l'utilisateur. Il ne suffit donc plus de définir les permissions dans le manifeste.
via le code, vous devez vous assurer que la permission de facturation est activée par les utilisateurs lorsqu'ils utilisent l'application. La façon la plus simple de contourner cela est de définir le SDK cible à v-22. Cela devrait temporairement résoudre votre problème.
Les vrais la solution est cependant de gérer les nouvelles permissions introduites dans Marshmallow. Voici comment faire:
@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));
}
Espérons que cela aide :)
peut-être que l'erreur est du côté de l'utilisateur.
Cet article déclare ce qui suit:
Google Play - Erreur 504
Problème
Application n'a pas pu être téléchargé en raison d'une erreur.
première solution
l'habituel, s'il vous plaît: allez à Paramètres > Apps > All > Google Play Store et effacer le cache et Effacer les données. Aussi Clear cache et Clear data pour Google Services Framework.
deuxième solution
essayez de supprimer votre compte GMail
Stack Exchange answer discuté des idées semblables.
Selon liste des codes de statut sur Wikipedia, une erreur 504 moyens suivants:
504 Gateway Timeout
Le serveur agit comme une passerelle ou proxy et n'a pas reçu de réponse en temps voulu du serveur amont.
demandez à vos utilisateurs si faire ce qui précède résout leur problème.
j'ai eu cette erreur en installant sur mon appareil Android un nouvel APK pour l'application que je développe.
j'ai vérifié le journal de débogage de l'appareil (en utilisant "adb-d logcat > log.txt") et a trouvé une entrée disant "PackageManager: Downgrade detected: Update version code 2 est plus ancienne que actuelle 10000". Apparemment, quelque chose s'est mal passé avec la version.
j'ai désinstallé le paquet et j'ai pu installer APK sans problème.