Comment utiliser .donc fichier dans le code Android pour utiliser le natif de méthodes

J'ai libmath.donc le fichier qui ont des méthodes indigènes. J'ai besoin d'appeler le natif de méthodes dans mon code android. J'ai créé un exemple de l'application android, et à l'ajout de la libmath.donc, à l'intérieur libs/armeabi dossier, Puis a couru "clic Droit de la souris" -> Android Outils -> Ajouter le support natif. Maintenant les fichiers suivants avec le contenu ci-dessous sont créés à l'intérieur jni dossier de l'application.

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := libmath
LOCAL_SRC_FILES := libmath.cpp
include $(BUILD_SHARED_LIBRARY)

libmath.cpp

#include <jni.h>

Quand je lance le Projet de l'application android, il montre de la façon suivante dans la console :-

17:58:41 **** Build of configuration Default for project math ****
"F:\\Vinay\\Softwares\\android-ndk-r10d\\ndk-build.cmd" all 
[armeabi] Compile++ thumb: math <= libmath.cpp
[armeabi] StaticLibrary  : libstdc++.a
[armeabi] SharedLibrary  : libmath.so
[armeabi] Install        : libmath.so => libs/armeabi/libmath.so
17:58:53 Build Finished (took 11s.695ms)

Voici le code de la façon dont je suis le chargement de la bibliothèque:-

public class MathJni {
static {
    System.loadLibrary("math");
}
public native String calc(String paramString);

}

public static final MathJni math = new MathJni();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String s= math.calc("help");

    }

Une fois après l'exécution de l'application android lorsque je lance l'application via l'émulateur, j'obtiens l'erreur ci-dessous.

02-06 07:38:36.900: D/dalvikvm(831): Trying to load lib /data/app-lib/com.example.math-2/libmath.so 0xb3cd0848
02-06 07:38:36.900: D/dalvikvm(831): Added shared lib /data/app-lib/com.example.math-2/libmath.so 0xb3cd0848
02-06 07:38:36.910: D/dalvikvm(831): No JNI_OnLoad found in /data/app-lib/com.example.math-2/libmath.so 0xb3cd0848, skipping init
02-06 07:38:37.540: W/dalvikvm(831): No implementation found for native Lcom/example/math/MathJni;.calc:(Ljava/lang/String;)Ljava/lang/String;
02-06 07:38:37.540: D/AndroidRuntime(831): Shutting down VM
02-06 07:38:37.550: W/dalvikvm(831): threadid=1: thread exiting with uncaught exception (group=0xb3a20ba8)
02-06 07:38:37.570: E/AndroidRuntime(831): FATAL EXCEPTION: main
02-06 07:38:37.570: E/AndroidRuntime(831): Process: com.example.math, PID: 831
02-06 07:38:37.570: E/AndroidRuntime(831): java.lang.UnsatisfiedLinkError: Native method not found: com.example.math.MathJni.calc:(Ljava/lang/String;)Ljava/lang/String;
02-06 07:38:37.570: E/AndroidRuntime(831):  at com.example.math.MathJni.calc(Native Method)
02-06 07:38:37.570: E/AndroidRuntime(831):  at com.example.math.MainActivity.onCreate(MainActivity.java:16)

Ce qui peut être la cause possible de cette erreur.

code android? Depuis quand est originaire de code pas de code android?
Vous n'avez pas montré votre code C++.
Michael est l'extrême droite. Malgré le manque d'information, j'ai toujours suppose que vous n'avez pas de calc méthode dans MathJni classe qui acceps java.lang.Instance String en paramètre...
Je n'ai pas de code c++. lorsque j'ajoute le .donc pour projet android et a couru la "Android Outils -> Ajouter le support natif".rpc fichier a été généré et c'est ce que j'ai joint ici.
Désolé j'ai oublié d'ajouter public String natif calc(String paramString); ligne MathJni classe. Maintenant que j'ai ajouté.

OriginalL'auteur Vinay | 2015-02-06