2 votes

Projet contenant un fichier jni

J'essaie d'importer un projet Android dans mon Eclipse. Lorsque j'exécute ce projet, j'obtiens une erreur, "library is null". J'ai compris que ce projet était différent, il contient un fichier nommé "jni". Ma bibliothèque se trouve dans ce fichier. Je suppose que la bibliothèque contenue dans ce fichier n'a jamais été compilée (je ne sais pas pourquoi). J'ai vu dans certains sujets que je devais utiliser le NDK ? J'ai vu dans un article que je devais utiliser le NDK. Quelqu'un a t-il une réponse claire à ce sujet ?

1voto

Agarwal Shankar Points 14558

Voir les liens ci-dessous. lien pour télécharger le ndk échantillon 1 échantillon 2

Étape 1 : Créez d'abord un projet, puis créez un dossier nommé jni dans votre répertoire de projet.

Étape 2 : Créez le fichier addition.c dans le dossier jni et ajoutez les lignes ci-dessous.

#include "com_ndkadd_Addition.h"

JNIEXPORT jint JNICALL Java_com_ndkadd_Addition_messageFromNativeCode

(JNIEnv * env, jobject jObj,jint value1, jint value2)
{

return (value1 + value2);

}

Étape 3 : Créer le fichier Android.mk dans le dossier jni et le code suivant

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := Addition
LOCAL_SRC_FILES := addition.c

include $(BUILD_SHARED_LIBRARY)

Étape 4 : Naviguez dans le dossier bin de votre projet à partir de l'invite de commande. Tapez la ligne ci-dessous et appuyez sur entrée.

javah -jni com.ndkadd.Addition

Étape 5 : Déplacer le fichier créé com_ndkadd_Addition.h dans le dossier jni.

Étape 6 : Maintenant, compiler le code natif comme ci-dessous à partir de l'invite de commande.

location_of_ndk\project_name> location_of_ndk\ndk-build

Étape 7 : ci-dessous le code de votre activité et l'utilisation du fichier .so créé dans votre dossier libs.

public class Addition extends Activity {
    TextView txtHello;

    static
    {
    System.loadLibrary("Addition");
    }
    public native int messageFromNativeCode(int v1,int v2);
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView txtHello = new TextView(this);
        txtHello.setText(""+messageFromNativeCode(5,5));        
        setContentView(txtHello);        
    }
}

Note: : Il est préférable d'avoir le NDK à l'endroit où vous avez le SDK et le projet contenant la JNI dans le dossier Android-ndk-r8.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X