2016-04-28 4 views
0

Ich habe Quellcode von einer Demo-App, die einige native Codierung beinhaltet. Ich möchte einen Teil dieses Codes in meine eigene App integrieren.Integrieren Sie Open Source JniLibs in eigenes Android-Projekt

Dies ist, wie der Code strukturiert ist:

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

Apparantly einige Teile in den nativen Code gibt, die in Richtung der Paketnamen der App spezifisch sind, wie in caffe_jni.cpp:

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

Wie kann ich diese Namen so umgestalten, dass sie von meiner App com.myUsername aufgerufen werden können? Oder gibt es eine andere Möglichkeit, Code aus einer anderen App in Android Studio zu integrieren?

Antwort

1

Der systemeigene Code ruft eine Java-Methode demoMethodName() in Ihrer demoClassName-Klasse auf. Stellen Sie sicher, dass Sie die Methode in Ihrer Klasse definiert haben.

Denn er zweiten Teil Sie können die Funktionsnamen

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. 

In Ihrem Fall nach den folgenden Regeln ändern, um die Demouser mit Ihrem Benutzername deklariert

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

Ja, die Methoden ändern. Das Problem ist, dass es 'myPackageName' anstelle des Paketnamens des Benutzers verwendet, der die nativen Bibliotheken' com_demoUser' kompiliert hat. – mcExchange

+0

Können Sie bitte die Frage mit dem Code aktualisieren? – somia

+0

Ich habe versucht, meine Frage zu bearbeiten. Es ist eher eine allgemeine Frage, wie Code von jemand anderem so angepasst/refaktorisiert werden kann, dass er in meiner eigenen Anwendung verwendet werden kann. Ich denke, ich kann die Details selbst angehen – mcExchange