gpt4 book ai didi

用于构建 OpenCV 3.2 的 Android.mk 和 Application.mk

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:07 26 4
gpt4 key购买 nike

我已经下载了 OpenCV for Android 版本 3.2 并将其 java 模块导入到我的项目中。我已将 native (c++) 代码复制到 openCVLibrary320/app/src/main/jni 中的模块目录中。

如何创建用于编译此 sdk 的 Application.mk 和 Android.mk? (据我所知,ndk-build 需要这两个文件)

最佳答案

很容易按照我的全部观点去做,

  1. 导入您的 Opencv(就像您已经做的一样)
  2. 现在转到您的项目结构选择应用程序而不是添加新的依赖项并选择您的 opencv 模块单击确定
  3. 创建一个名为 NativeClass.java 的类,它将包含您的 native 函数和变量
  4. 在您的 nativeClass.java 中创建一个来自 JNI 的方法 getMessage 并构建它 enter image description here
  5. 现在打开终端并写这个

    1)  cd app/src/main

    2) javah -d jni -classpath ../../build/intermediates/classes/debug write_your_Pakage_Name.className
    My pakage name is com.example.cvlab.ndktest
    class name -->nativeClass

    enter image description here

  6. 当你在终端中输入上面的代码时,点击进入它会创建 jni 文件夹,它会有头文件
  7. 现在复制头文件并将其粘贴到同一文件夹中,但写入 .cpp 而不是 .h
  8. 从头文件中复制函数 jni 函数并将其复制到您的 cpp 文件中 enter image description here
  9. 构建如果显示错误转到 gradle 文件并写入android.usedeprecatedndk=true
  10. 现在在您的 jni 文件夹中创建 android.mk 文件并添加此代码

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    #opencv
    OPENCVROOT:= your opencv location
    OPENCV_CAMERA_MODULES:=on
    OPENCV_INSTALL_MODULES:=on
    OPENCV_LIB_TYPE:=SHARED
    include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk

    LOCAL_SRC_FILES := your cpp file name

    LOCAL_LDLIBS += -llog
    LOCAL_MODULE := MyLibs

    include $(BUILD_SHARED_LIBRARY)
  11. 现在创建 Application.mk 文件并编写这段代码

    APP_STL := gnustl_static
    APP_CPPFLAGS := -frtti -fexceptions
    APP_ABI := armeabi-v7a
    APP_PLATFORM := android-16
  12. 现在转到您的 build.gradel 文件并在 defultConfiguation 之后放置它

        sourceSets.main {
    jni.srcDirs = [] //disable automatic ndk-build call
    }
    task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
    commandLine "C:/Users/do/AppData/Local/Android/sdk/ndk-bundle /ndk-build.cmd",
    'NDK_PROJECT_PATH=build/intermediates/ndk',
    'NDK_LIBS_OUT=src/main/jniLibs',
    'APP_BUILD_SCRIPT=src/main/jni/Android.mk',
    'NDK_APPLICATION_MK=src/main/jni/Application.mk'
    }
    tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn ndkBuild
    }

    注意:如果你安装了你的 android stdk 和 ndk,你必须像这样在 commond 行中给出该文件夹位置 C:/Users/do/AppData/Local/Android/sdk/ndk-bundle

  13. 现在构建它将创建 jnilibs fodler 并且它将包含您的 libs 文件

  14. 现在转到您的 mainjava 文件并加载它

static { System.loadLibrary("MyLibs"); }

  1. 调用您的 native 代码编写 NativeClass.getMessageFromJNI()并在 TextView 中显示 enter image description here

关于用于构建 OpenCV 3.2 的 Android.mk 和 Application.mk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com