7
votes

JavaScript à Android

est-il possible d'utiliser JavaScript dans Android ?? si c'est le cas, comment? Veuillez fournir quelques exemples.

Merci.


2 commentaires

Le moteur de navigateur Androids WebKit peut exécuter JavaScript. Vous créez donc un fichier HTML avec JS incorporé ou un autre fichier référencé et l'utiliser.


Ce n'est pas un script Java. C'est JavaScript, une langue qui n'a rien à voir avec Java (en fait, C ++ est plus étroitement liée à Java que JavaScript).


4 Réponses :


1
votes

Voulez-vous dire quelque chose comme faire une application natale à l'aide de JavaScript? Je sais qu'il existe des outils tels que Mobile de titane qui vous permet de faire des applications indigènes Utilisation d'outils Web / langues.

Vous pouvez également créer des applications Web. Il existe des charges de ressources et de didacticiels pour cela. Il suffit de rechercher "Tutoriel d'application Web Android" ou quelque chose de similaire.


0 commentaires

1
votes

Oui, vous pouvez simplement créer un code de conclusion qui pointe vers la page HTML et inclut votre JavaScript et votre CSS.

Il existe différentes bibliothèques qui peuvent vous aider avec ceci:


0 commentaires

9
votes

Je suis bien en retard à la fête ici, mais j'ai eu ce besoin exact. iOS 7 comprend maintenant JavaScriptcore Nativement et il est vraiment facile à utiliser (malgré une documentation limitée). Le problème est que Je ne voulais pas l'utiliser à moins que je puisse aussi utiliser quelque chose de similaire sur Android. J'ai donc créé le Projet AndroidJScore . Il vous permet d'utiliser votre code JavaScript Nativement dans Android sans avoir besoin d'une vision Web volumineuse et d'une injection. Vous pouvez aussi faire de manière transparente de manière asynchrone Appels entre Java et JavaScript.

Mise à jour 27 mars 17 mars: strong> AndroidJScore a été obsolète en faveur de LiquidCore . LiquidCore est basé sur V8 plutôt que JavaScriptcore, mais fonctionne essentiellement de la même manière. Voir le Documentation sur l'utilisation de liquidscore en tant que moteur JavaScript brut .

from La documentation: p>

... Pour commencer, vous devez créer un code JavaScript jscontext code>. L'exécution du code JS se produit dans ce contexte et des contextes distincts sont des machines virtuelles isolées qui N'interagissez pas les uns avec les autres. P>

context.property("factorial", factorial);
context.evaluateScript("var f = factorial(10);")
JSValue f = context.property("f");
System.out.println(df.format(f.toNumber())); // 3628800.0


15 commentaires

Je viens de donner Androidjscore un essai et il semble très bien fonctionner! J'ai remarqué cependant qu'il ne fonctionne que sur des machines 32 bits. Vous envisagez d'ajouter un support 64 bits? Puisque la plupart des nouveaux téléphones sont 64 bits, c'est à peu près un showstopper ...


Oui. Le support 64 bits est prévu pour la version 2.1. Il s'avère que le compilateur du NDK est basé sur GCC 4.9.2. Il a un bug lié à des atomes que Javascriptcore dépend de. Je travaille sur une construction de GCC 4.9.3 qui aurait corrigé le problème. Une fois que je peux le faire fonctionner, je le libérerai. Devrait être bientôt.


Oh, génial! Merci, je suis vraiment impatient d'y être.


AndroidJScore 2.1 est maintenant publié, y compris un support 64 bits. En tant que bonus supplémentaire, j'ai élargi la prise en charge de Jellybean, donc 94% des appareils sont maintenant couverts.


Super! Je vais l'essayer dans quelques jours!


J'ai une fonction JavaScript pour être exécutée à partir de l'activité Android. Je souhaite transmettre un objet Java comme un argument sur cette méthode et cartographier un objet Java avec une variable dans cette fonction. Veuillez suggérer comment réaliser cela en utilisant la bibliothèque AndroidJScore.


@Andengine: Cela peut être facilement fait avec AndroidJScore. jscontext context = nouveau jscontext (); context.evaluatescript (my_js_code); Jsobject myjsfunc = jscontext.property ("MyGlobalFunctionNameName"). TOObject (); Jsvalue retval = myjsfunc.callasfunction (null, nouvel objet [] {javaarg1, javaarg2, ...}); Cliquez sur le lien pour des exemples détaillés.


@Ericlange myjsfunc.Callasfunction () 2ème argument semble être faux. Il attend un tableau de JSValue. J'utilise la dernière version. Y a-t-il une option pour ajouter une dépendance via Maven Repo dans Android Studio


@Andengine essaie nouvelle JSValue [] {...} à la place.


@Ericlange pourriez-vous modifier votre réponse pour inclure LiquidCore


@ERICLANGE: J'ai un fichier JavaScript dans le dossier RES local et tout ce que je dois faire est d'accéder au fichier et d'appeler une méthode in celle-ci appelée chiffrer (A, B) et transmettez 2 paramètres de mon activité pour le calcul. Pouvez-vous s'il vous plaît dire comment atteindre cela


@Animehjena: Consultez ma réponse à Andengine ci-dessus.


@ERICLANGE: Cela ne fonctionne pas dans LiquidCore. Principalement myjsfunc.callascunction


@Animeshjena Veuillez poster le problème à github.com/liquidplayer/liquidcore/issues . Ce n'est pas le lieu de débogage.


@ERICLANGE Bonjour, j'essaie d'utiliser liquideCorejs pour exécuter JS Nativement à Android. Le problème que je suis confronté est que je suis incapable d'utiliser des bibliothèques dans le script (disons xmlhttprequest) dans mon script. Comment puis-je résoudre ce problème ? . Toute suggestion sera très appréciée



0
votes

Vous venez de poster ceci pour la postérité mais réagir est une excellente solution dans cet espace. Vous pouvez écrire une application complète en JS à l'aide de vues natales sous la hotte ou incorporer un composant JS à l'intérieur d'une application Java existante. https://reactnative.dev/


0 commentaires