2016-04-28 1 views
0

J'ai le code source d'une application de démonstration qui implique un certain codage natif. J'aimerais intégrer une partie de ce code dans ma propre application.Intégrez des JniLibs open source dans votre propre projet android

Voici comment le code est structuré:

app/ 
    java/ 
     com.demoUser/ 
      caffe_android_demo/ 
       MainActivity 
      caffe_android_lib/ 
       CaffeMobile 
    jniLibs/ 
     libcaffe_jni.so 

Apparantly il y a certaines parties du code natif qui sont spécifiques vers le nom du package de l'application, comme dans caffe_jni.cpp:

JNIEXPORT void JNICALL 
Java_com_demoUser_caffe_1android_1lib_CaffeMobile_extractFeatures(
someArgs...) { 
... 
} 

Comment est-ce que je peux refactoriser ces noms de sorte qu'il puisse être appelé de mon application com.myUsername? Ou existe-t-il un autre moyen d'inclure du code provenant d'une autre application dans le studio android?

Répondre

1

Le code natif appelle une méthode java demoMethodName() dans votre classe demoClassName. Assurez-vous d'avoir défini la méthode dans votre classe.

Car il seconde partie Vous pouvez modifier le nom de la fonction en suivant les règles ci-dessous

Prepend Java_ to the function name. 

Describe the filepath relative to the top-level source directory. 

Use underscores in place of forward slashes. 

Omit the .java file extension. 

After the last underscore, append the function name. 

Dans votre cas, changer le demouser avec votre nom d'utilisateur

JNIEXPORT void JNICALL 
Java_com_myUsername_caffe_1android_1lib_CaffeMobile_extractFeatures(
someArgs...) { 
    ... 
} 
+0

Oui les méthodes sont déclarées. Le problème est qu'il utilise 'myPackageName' au lieu du nom de paquet de l'utilisateur qui a compilé les bibliothèques natives' com_demoUser' – mcExchange

+0

Pouvez-vous mettre à jour la question avec le code? – somia

+0

J'ai essayé de modifier ma question. Il s'agit plus d'une question générale sur la façon d'adapter/refactoriser le code de quelqu'un d'autre afin qu'il puisse être utilisé dans ma propre application. Je suppose que je peux aborder les détails par moi-même – mcExchange