web-dev-qa-db-fra.com

Comment puis-je m'assurer que les applications Android phonegap / cordova utilisent Chrome vues Web?

J'écris une application de jeu qui tord les graphiques SVG jusqu'à ce qu'ils crient "Oncle!". Le programme fonctionne bien sur un iPad (safari/webkit) lorsqu'il est hébergé à partir d'un serveur Web, pour lequel plus besoin d'être dit ici. Il fonctionne également bien sur une tablette Android lorsqu'elle est hébergée à partir d'un serveur Web, tant qu'une version récente de Chrome (comme la v.25 ou ultérieure) est utilisée.

Le programme n'accède pas du tout à Internet, mais joue avec ses graphiques SVG, exécute Javascript et stocke le statut dans HTML5 localStorage ().

Si j'exécute le programme sur le "navigateur par défaut" d'anciennes tablettes Android, les graphiques SVG ne sont pas traités correctement, d'où mon exigence d'une version récente de Chrome sur la tablette.

Je viens de créer un APK pour mon application et je constate qu'elle n'utilise pas le navigateur Chrome lorsque je l'installe sur ma toute nouvelle tablette Android. Il semble plutôt utiliser un navigateur intégré à l'APK, ou du moins appelé à partir de l'APK pour lequel des bibliothèques résiduelles existent dans la tablette.

Mon but avec l'APK est de faire afficher mon code par un navigateur Webkit récent, ce qui semble signifier qu'il s'exécute dans l'environnement Chrome.

Pour ma question, je dois changer quelque chose. Mais quoi?

  • intégrer un navigateur Chrome dans mon APK?
  • dire à l'APK d'utiliser le navigateur Chrome de la tablette?
  • renoncer à utiliser APK pour distribuer le programme?
  • ???

Mes chers lecteurs ont-ils une idée de moi?

Merci,
Jérôme.

43
Jerome P Mrozak

Je recommanderais Crosswalk , cependant, depuis le 19 mars 2017, il a été déclaré EOL (plus d'informations ci-dessous). Pourtant, c'est de loin la solution la plus stable du marché, notre équipe l'utilise actuellement dans une application de production. En termes simples, il intègre une vue Web basée sur Chromium dans votre apk et il est soutenu par Intel. Vous pouvez l'utiliser à partir de Android 4.X.

Argumentaire de vente officiel:

Crosswalk est un runtime web pour des applications HTML5 ambitieuses. Il fournit toutes les fonctionnalités d'un navigateur moderne, combinées à une intégration approfondie des appareils et à une API pour ajouter des extensions natives. Il est particulièrement adapté aux appareils mobiles, avec un support pour les deux Android et Tizen.

Pour Cordova 4.0.0 et versions ultérieures, il existe un plugin Crosswalk officiel, ce qui facilite la mise en route et la mise en service: https: // github.com/crosswalk-project/cordova-plugin-crosswalk-webview

Si votre projet Cordova est en cours d'exécution, il vous suffit de

cordova plugin add cordova-plugin-crosswalk-webview --save

pour ajouter le plugin Crosswalk webview. La prochaine génération va récupérer toutes les dépendances et tout bien emballer.

Android 4.4.x

Sur Android 4.4 votre application hybride fonctionnera sur une WebView basée sur Chromium, cependant, elle restera bloquée pour toujours sur la même version (si je ne me trompe pas, c'est Chromium 33). À mon avis, serait également préférable d'utiliser Crosswalk ici.

Android 5.0 +

Si vous codez pour Android 5.0 et supérieur, le Chromium WebView sera mis à jour via Google Play. Plus d'informations ici: http://developer.Android.com/about/versions/ Lollipop.html # WebView

CrossWalk version 20 et plus

CrossWalk supprimera le support pour Android 4.0.X à partir de la version 20. Si vous avez vraiment besoin de garder 4.0.X dans votre matrice de support, ne mettez pas à niveau. Je recommanderais de construire un autre APK pour = Android 5.X et au-dessus qui n'inclut plus du tout CrossWalk. Plus d'informations à ce sujet

Crosswalk v23 est la dernière version (EOL)

Crosswalk a décidé de sortir une dernière version stable en janvier 2017, la version 23. Cela met fin au support officiel de Crosswalk et laisse les corrections de bugs et autres à la communauté. Plus d'informations dans le blogpost

Remarquez!

J'ai trouvé que l'exécution de mon application hybride mobile avait de meilleures performances graphiques sur Crosswalk que lorsque je comptais sur la vue Web du système (testé sur un Sony Xperia ZL, qui est sur Android 5.x, donc la vue Web est mis à jour via le Play Store.) Pourquoi, je n'en ai aucune idée, peut-être que Crosswalk configure la vue Web de certaines manières? Cela nécessite une enquête plus approfondie.

50
smets.kevin

essayez https://github.com/thedracle/cordova-Android-chromeview c'est un nouveau projet et a besoin de plus de travail mais combine le projet chromeview avec cordova pour incorporer le chrome dans une cordova Android application

7
albi90

Cela ressemble à une option prometteuse: Crosswalk + Cordova .

Avantages:

  • Utiliser l'API Cordova
  • Utiliser l'API Crosswalk
  • Cordova utilisera Crosswalk comme vue Web
  • Crosswalk n'utilise pas le Android webview, son basé sur Chromium

Dépôt Github: https://github.com/crosswalk-project/crosswalk-cordova-Android .

5
givanse

Réponse mise à jour pour 2014 : Android 4.4 et versions plus récentes Chrome webview par défaut . This est actuellement basé sur Chrome version 30.

3
mikemaccana

Une option serait de lancer le navigateur Chrome avec un lien vers le site approprié.

Ce n'est pas une excellente expérience utilisateur, mais cela pourrait vous aider à y arriver.

Vous pouvez vérifier et lancer le navigateur Chrome avec quelque chose comme:

    String url = "http://www.totallyawesomeurl.com";
    String packageName = "com.Android.chrome";

    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    browserIntent.setPackage(packageName);
    browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    List<ResolveInfo> activitiesList = context.getPackageManager().queryIntentActivities(
            browserIntent, -1);
    if(activitiesList.size() > 0) {
        // Found the browser on the device, launch it
        context.startActivity(browserIntent);
    } else {
        // The browser isn't installed, so we should Prompt the user to get
        Intent playStoreIntent = new Intent(Intent.ACTION_VIEW);
        playStoreIntent.setData(Uri.parse("market://details?id="+packageName));
        playStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(playStoreIntent);
    }

Il convient de noter que Chrome for Android is only available for ICS devices and above, so you might want to sure you you) définissez le minimumTargetSDK sur 14 et passez peut-être à l'utilisation de Opera pour une ancienne version de Android si votre site fonctionne en Opera qui a le nom de package "com.opera.browser"

0
Matt Gaunt