【问题标题】:Incorporate open source JniLibs into own android project将开源 JniLibs 合并到自己的 android 项目中
【发布时间】:2016-04-28 08:41:33
【问题描述】:

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

这就是代码的结构:

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 中包含来自另一个应用程序的代码?

【问题讨论】:

    标签: android c++ refactoring ndk-build


    【解决方案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...) {
       ...
    }
    

    【讨论】:

    • 是的,方法已声明。问题是它使用myPackageName而不是编译本机库的用户的包名com_demoUser
    • 我试图编辑我的问题。关于如何改编/重构其他人的代码以使其可以在我自己的应用程序中使用,这是一个更普遍的问题。我想我可以自己解决细节
    猜你喜欢
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多