Exécutez du code Java à partir de cpp sur cocos2dx

environnement

cocos2dx 3.17 (JavaScript) Android

problème

En parlant de natif sur Android de cocos2dx, vous écrivez du code en Java, mais selon la librairie que vous utilisez, vous devez toucher cpp. Le flux de js-> java-> cpp. Au contraire, en ce qui concerne le mécanisme d'exécution des fonctions js à partir de natif, il y a java-> js, mais je veux faire cpp-> js. Les cocos2djs plus anciens utilisaient ScriptingCore :: evalString (code). Mais si je mettais à jour cocos2dx, cela planterait.

exemple de crash

https://github.com/cocos2d/cocos2d-x/issues/17718 https://github.com/cocos2d/cocos2d-x/issues/13807

Après de nombreuses recherches, il semble que JniHelper devrait être utilisé.

Exemple d'appel

http://developer.wonderpla.net/entry/blog/engineer/cocos2d-x_jni2/

En implémentant comme suit, cpp-> java (-> javascript) a été réalisé.

la mise en oeuvre

#include "platform/android/jni/JniHelper.h"

void executeJavaScript()
{
    cocos2d::JniMethodInfo t;

    if (cocos2d::JniHelper::getStaticMethodInfo(t,
                                       "jp/example/java",       //Classe Java
                                       "executeJs",             //Nom de la méthode Java (statique)
                                       "(Ljava/lang/String;)V"  //argument
    )) {

        // jstring - C++ representation of Java String
        //Convertir le nom de la méthode JS en l'écrivant sous forme de chaîne de caractères
        jstring stringArg = t.env->NewStringUTF("javascriptMethod('arg')");

        // call the method, with arguments
        t.env->CallStaticVoidMethod(t.classID, t.methodID, stringArg);
    }
}

Recommended Posts

Exécutez du code Java à partir de cpp sur cocos2dx
Coder Java depuis Emacs avec Eclim
Exécuter du code Java packagé avec des commandes
Exécuter des instructions non-Java à partir de Java
Construire Java avec Mac vs Code
Travailler avec des feuilles de calcul Google à partir de Java
Exemple de code utilisant Minio de Java
Rechercher et exécuter une méthode à partir d'une instance avec traitement (java)
Ce que j'ai appris en travaillant Java avec Visual Studio Code
Préparer l'environnement de développement Java avec VS Code
[JaCoCo (Java Code Coverage)] Utilisation avec NetBeans
[Java] Flux du code source à l'exécution
Exécutez le code Java stocké dans le presse-papiers.
Générer le code source à partir du fichier JAR avec JD-GUI du projet Java Decompiler
Exécuter du code Java de manière scriptée
Exécuter Rust depuis Java avec JNA (Java Native Access)
Utiliser les bibliothèques natives de Scala via Java CPP + Java
CONSEILS relatifs au code Java
Analyse de code statique par Checkstyle avec Java + Gradle
[Java] Réglez l'heure depuis le navigateur avec jsoup
Exemple de code Java 02
Exemple de code Java 03
Extraction de texte en Java à partir de PDF avec pdfbox-2.0.8
Couverture de code Java plus confortable avec Jacoco 0.8.0
Utilisez Matplotlib depuis Java ou Scala avec Matplotlib4j
En utilisant Gradle avec VSCode, compilez Java → exécutez
Exemple de code Java 01
Code de caractère Java
Essayez de déboguer un programme Java avec VS Code
Créer un environnement de développement Java avec VS Code
Prise en main des programmes Java à l'aide de Visual Studio Code
Créer un environnement VS Code + WSL + Java + Gradle à partir de zéro
[Java 11] J'ai essayé d'exécuter Java sans compiler avec javac
Appeler une méthode avec le bloc de rappel de Kotlin depuis Java
Pourquoi pouvez-vous développer Java avec Visual Studio Code?
J'ai essayé d'appeler du code natif Java / Objective-C depuis Flutter
[Note] Créez un environnement Java à partir de zéro avec docker
Comment créer un environnement de développement Java avec VS Code
Lire la température / l'humidité avec Java de Raspberry Pi 3 & DHT11
Installez java avec Homebrew
Appeler Java depuis JRuby
Lombok avec VS Code
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Changer de siège avec Java
Installez Java avec Ansible
Évaluer la source Java à partir de Java
Téléchargement confortable avec JAVA
Accédez à API.AI depuis Java
Changer java avec direnv
De Java à Ruby !!
Construire Java avec Wercker
Conversion Endian avec JAVA
Surveillez les modifications du code source avec Guard-Shell et créez et exécutez automatiquement
Comment inverser la compilation du fichier apk en code source Java avec MAC
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java
[Java] Obtenir le jeu de caractères avec Apathce Tika / Initialiser la chaîne à partir du jeu de caractères [Kotlin]
Construction d'environnement de développement d'applications Web Java avec VS Code (struts2)