web-dev-qa-db-fra.com

Comment puis-je tester les mises à jour intégrées à l'application sur Android?

Récemment, Google a introduit des `` mises à jour intégrées à l'application '' dans Google I/O 2019.

J'essaie donc de l'utiliser.

val appUpdateManager = AppUpdateManagerFactory.create(this)
val appUpdateInfo = appUpdateManager.appUpdateInfo
appUpdateInfo.addOnCompleteListener {
    val result = it.result
    if (result.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
            && result.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {

        info("should show update")
        appUpdateManager.startUpdateFlowForResult(
                        result,
                        AppUpdateType.FLEXIBLE,
                        this,
                        1)
    } else {
        info("This is already latest version: ${result.updateAvailability()}")
    }
}

Mais la result.updateAvailability() est toujours UpdateAvailability.UPDATE_NOT_AVAILABLE.

Pour ce faire, j'ai fait une version apk signée avec le code de la version précédente. Mais ça ne marche pas.

Selon la démo du Developer Keynote (16:40 ~)

Il le fait avec l'émulateur. Cela ressemble au mode débogage.

Comment puis-je faire la même chose?

18
yoonhok

La bonne façon de tester la mise à jour dans l'application est d'utiliser le partage d'application interne (à ne pas confondre avec Internal Testing Track).

  1. Configurez d'abord votre partage d'application interne à l'aide de ces instructions . Contrairement à Internal Testing Track, le partage d'application interne rend l'application disponible immédiatement. Il n'y a donc pas de temps d'attente.
  2. Activez la signature d'application par Google Play. Cela permettra à Google Play de signer l'apk généré pour l'appareil à partir du bundle d'applications que vous fournissez. Détails ici .
  3. Créez votre ensemble d'applications. Grâce à la ligne de commande, c'est simplement ./gradlew bundleRelease ou ./gradlew bundle<variant>.
  4. Accédez à https://play.google.com/apps/publish/internalappsharing/ et importez le fichier aab généré qui se trouve sous app/build/outputs/bundle/<variant>/. Donnez un nom décent qui inclut le code de version.
  5. Cela fournira un lien à copier. Utilisez-le pour installer cet ensemble sur votre appareil.
  6. Bump le code de version dans votre application build.gradle et créez un autre ensemble.
  7. De même, téléchargez ce nouvel ensemble sur le partage d'application interne. Nommez-le avec le code de version.
  8. Cela fournira un autre lien. Ouvrez le lien et cela ouvre Google Play et vous devriez voir l'option "Mettre à jour". Ne cliquez pas sur Mettre à jour!
  9. Ouvrez votre application et vous devriez maintenant voir l'invite de mise à jour dans l'application.

Si vous ne voyez pas l'invite et si vous avez suivi ces étapes exactement, il y a probablement un problème avec votre code. Ajoutez un peu de journalisation pour voir ce qui se passe dans votre code.

Lors de nos tests, les éléments suivants n'ont PAS aidé à tester les mises à jour dans l'application (qui ont été suggérées ailleurs):

  • Re-télécharger le même bundle/apk sans augmenter le code de version
  • Code de version décroissant pour être inférieur à la version publiée
12
rpattabi

Dans mon cas, j'ai fait les étapes suivantes:

  1. Désinstallez l'application d'origine de l'appareil.
  2. Installez l'application à partir de Google Play Store (j'avais déjà mon application dans Store, mais si vous ne l'avez pas, vous pouvez créer une version alpha ou bêta, sans la publier en magasin).
  3. Désinstallez à nouveau l'application.
  4. Générez un apk signé avec la nouvelle fonctionnalité, avec un code de version inférieur à la version Google Play
  5. Installez cette apk.

Lorsqu'il démarre, il vérifie la nouvelle version dans Google Play Store et montre à l'assistant de la mettre à jour. Si cette solution fonctionne sur un appareil mais pas sur un autre, essayez de vous connecter avec le même compte Google et recommencez les 5 étapes sur cet appareil. Ensuite, vous pouvez à nouveau utiliser votre compte d'origine. Pour une raison folle, il semble que Google Play "active" le contrôle de version et il renvoie qu'une version est à nouveau disponible dans le reste des appareils.

Je ne connais pas exactement le comportement ...

5
fvaldivia

Vous pouvez également utiliser cette classe comme test UNIT pour la simulation des mises à jour intégrées à l'application

FakeAppUpdateManager

Cela a quelques méthodes prédéfinies.

5
Dr. aNdRO

Hmm ... j'ai trouvé la solution. Ce n'est pas la même chose que la démo sur Google I/O 2019 - Developer Keynotes.

J'ai publié la version signée apk dans la version développeur interne. Et ça marche bien.

Ou vous pouvez le publier sur le "Alpha/Beta close test publish".

4
yoonhok

Je ne sais pas si à ce moment-là vous l'avez déjà baissé, mais après un certain temps de test, j'ai compris que diminuer le versionName était ce que je devais faire pour pouvoir le tester correctement, avant de testé ne diminuant que le versionCode... Je pense que l'API devrait être capable de gérer chaque fois que le versionName ou versionCode sont obsolètes, mais apparemment ce n'est pas le cas.

3
Caio Melo

Les pistes de test internes dans la console Google Play sont un excellent outil à utiliser lors du test des mises à jour intégrées à l'application.

2
Gulzar Bhat

Pour moi, la dernière étape de la section Dépannage dans docs l'a fait fonctionner!

Fondamentalement, après avoir modifié la version de l'application (nom et code de version), procédez comme suit:

Assurez-vous que le compte est éligible et que le cache Google Play est à jour. Pour ce faire, lorsque vous êtes connecté au compte Google Play Store sur l'appareil de test, procédez comme suit:
Assurez-vous de fermer complètement l'application Google Play Store.
Ouvrez l'application Google Play Store et accédez à l'onglet Mes applications et jeux.
Si l'application que vous testez n'apparaît pas avec une mise à jour disponible, vérifiez que vous avez correctement configuré vos pistes de test.

0
sorry_I_wont