2016-04-28 10 views
0

デモアプリケーションのソースコードには、ネイティブコードが含まれています。私は自分のアプリにそのコードの一部を統合したいと思います。オープンソースのJniLibを独自のAndroidプロジェクトに組み込む

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

方法:

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

はApparantly caffe_jni.cppのように、アプリのパッケージ名に向けた具体的なされているネイティブコードでいくつかの部分があります。

これは、コードが構成されている方法ですこれらの名前を私のアプリケーションから呼び出すことができるようにリファクタリングすることはできますかcom.myUsername? また、別のアプリのコードをAndroidスタジオに組み込む別の方法はありますか?

答えて

1

ネイティブコードは、demoClassNameクラスのjavaメソッドdemoMethodName()を呼び出しています。あなたのクラスでメソッドを定義していることを確認してください。

は彼第二部 のために自分のユーザー名とdemoUserを変更するあなたの場合は、以下のルール

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. 

次の関数名を変更することができます

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

はいメソッドが宣言されています。問題は、ネイティブライブラリ 'com_demoUser'をコンパイルしたユーザのパッケージ名の代わりに' myPackageName'を使用していることです。 – mcExchange

+0

コードで質問を更新できますか? – somia

+0

質問を編集しようとしました。それは、他の人から自分のアプリケーションで使用できるようにコードを適合/リファクタリングする方法に関するより一般的な質問です。私は自分で詳細に取り組むことができると思う – mcExchange

関連する問題