将开源JniLibs合并到自己的android项目中

时间:2016-04-28 08:41:33

标签: android c++ refactoring ndk-build

我有一个演示应用程序的源代码,涉及一些本机编码。我想将该代码的某些部分集成到我自己的应用程序中。

这就是代码的结构:

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

显然,本机代码中有一些特定于应用程序包名称的部分,例如caffe_jni.cpp

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

如何重构这些名称,以便可以从我的应用com.myUsername调用它? 或者是否有另一种方法可以在android studio中包含来自另一个应用程序的代码?

1 个答案:

答案 0 :(得分:1)

本机代码在demoClassName类中调用java方法demoMethodName()。确保您已在班级中定义了该方法。

对于他的第二部分 您可以按照以下规则更改功能名称

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.

在您的情况下,使用您的用户名

更改demoUser
JNIEXPORT void JNICALL
Java_com_myUsername_caffe_1android_1lib_CaffeMobile_extractFeatures(
someArgs...) {
   ...
}