android studio 3.6.3 引入ncnn


 

先安裝好ndkcmake

一、下載ncnn-android-lib.zip

https://github.com/Tencent/ncnn/releases

一、設置項目的ndk版本對應ncnn

 

 

 

 

 

 

 

 

二、cpp下新建jniLibs文件夾,將對應文件復制進jniLibs

 

 

 

 

 

三、include的頭文件放至cpp目錄下(沒有ncnn文件夾)

 

 

 

 

 

四、把要用到的c++的接口文件放在cpp目錄下

 

 

 

五、CmakeList文件的編寫

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.


#include頭文件目錄
include_directories(include)

#source directory源文件目錄
file(GLOB MTCNN_SRC *.h
        *.cpp)
set(MTCNN_COMPILE_CODE ${MTCNN_SRC})


#添加ncnn
add_library(libncnn STATIC IMPORTED )
set_target_properties(libncnn
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libncnn.a)

#編譯為動態庫
add_library(mtcnn SHARED ${MTCNN_COMPILE_CODE})

#添加工程所依賴的庫
find_library(  log-lib log )
target_link_libraries( mtcnn
        libncnn
        android
        jnigraphics
        z
        ${log-lib} )

六、修改app/build.gradle, defaultConfig里面加入下面的代碼

externalNativeBuild {
    cmake {
        arguments "-DANDROID_TOOLCHAIN=clang"
        cFlags "-fopenmp -O2 -fvisibility=hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math "
        cppFlags "-fopenmp -O2 -fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math "
        arguments "-DANDROID_STL=c++_shared", "-DANDROID_CPP_FEATURES=rtti exceptions"
        cppFlags ""
        cppFlags "-std=c++14"
        cppFlags "-frtti"
        cppFlags "-fexceptions"
    }
}
ndk {
    abiFilters 'armeabi-v7a'// , 'arm64-v8a' //,'x86', 'x86_64', 'armeabi'
    stl "gnustl_static"
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM