2014-08-30 1 views
1

Je suis en train de tester JNI sur Android dans Eclipse. J'ai un projet Android simple avec une activité. Dans l'explorateur de projet Eclipse, j'ai ajouté:Construire la bibliothèque native dans le dossier JNI?

  • jni/ dossier
  • Android.mk dans le dossier jni/
  • prng.c dans le dossier jni/

Le fichier source est nommé prng.c parce qu'il enveloppe de nombre aléatoire Crypto ++ Générateur. Crypto ++ est déjà compilé pour ARMv7, donc j'ai libcryptopp.so en attente.

Lorsque je sélectionne Projet → Projet de construction, la bibliothèque n'est pas construite. J'ai confirmé qu'il n'était pas construit après le nettoyage du projet.

Android-PRNG$ find . -iname *.so 
Android-PRNG$ 

Question: Pourquoi Eclipse pas la construction de l'objet partagé? Que faut-il faire d'autre?


Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := prng 
LOCAL_SRC_FILES := prng.c 

include $(BUILD_SHARED_LIBRARY) 

prng.c

Son essentiellement vide au moment parce que je ne peux pas javah à exécuter sur le fichier de classe Java qui appelle les méthodes natives. J'espère pouvoir résoudre ce problème ensuite.

#include <string.h> 
#include <jni.h> 

#include <cryptopp/osrandom.h> 

static RandomNumberGenerator& GetPRNG() 
{ 
    static AutoSeededRandomPool prng; 

    return prng; 
} 
+0

Vous pouvez essayer d'exécuter ** 'ndk-build' ** à partir de la ligne de commande. J'oublie à quel point Eclipse supporte NDK. – CommonsWare

+0

Merci @CommonsWare. Quel est le point d'utiliser Eclipse si j'ai besoin d'utiliser le NDK? Eclipse n'est-il pas supposé gérer toutes ces choses une fois que les fichiers Android.mk et les fichiers source pertinents sont ajoutés? Ou est-ce un malentendu de ma part (et probablement beaucoup d'autres)? – jww

+0

"Quel est le point d'utiliser Eclipse si j'ai besoin d'utiliser le NDK?" - um, le NDK est inévitable. Essayer ** 'ndk-build' ** est une étape de diagnostic, car vous pouvez apprendre quelque chose de la sortie que vous ne voyez pas à l'intérieur d'Eclipse. Il se peut également que vous deviez [configurer le plugin NDK pour Eclipse] (http://tools.android.com/recent/usingthendkplugin), au cas où vous ne l'auriez pas encore fait. Personnellement, je n'utilise pas Eclipse pour construire mon code NDK; Je ne fais que suggérer des pistes d'investigation. – CommonsWare

Répondre

2

C'est vraiment très facile avec ADT ces dernières années; c'était bien pire avant. Le plugin décrit dans le post est préinstallé; vous avez encore besoin

1 installation NDK

2 définir le chemin d'accès dans le menu Preferences/Android/NDK

3 faites un clic droit sur votre projet Android, Android Tools/Add Native Support

... et maintenant vous êtes tous ensemble .

Questions connexes