zoukankan      html  css  js  c++  java
  • Android Studio中的CmakeList NDK配置

    Android Studio2.2之后直接可以在创建工程时添加NDK支持了,添加之后,main文件夹下会多出一个native-lib.cpp这个文件,如果只为了一个简单的NDK接口,貌似这就结束了。直接在native-lib.cpp下编程即可。

      但是,如果使用第三方库,就得重新配置了。到目前为止,网上大半文章都是.mk的配置方法,按照他们的步骤,在AS上一步一步做下去好像很难成功。

      Android Studio2.2使用Cmake作为跨平台编译工具,创建完一个工程后,JNI的配置都由Cmake来管理,在priject文件夹下的CmakeList文件中。

    CMake有一套自己的编写规则,按照引入方式的不同,先写两个demo

    1,native-lib文件调用第三方库

      第三方库是被编译成so库直接调用的,配置so库的时候,对应的头文件也要添加上

      

         #譬如加载一个FFMPEG模块

    1 include_directories(${pathToFFMPEG}/include) #添加ffmpeg对应的头文件目录,${pathToFFMPEG}为前面配置过的路径,可以替换为include_directories(E:/ffmpeg/include)这种路径格式
    2 add_library( ffmpeg SHARED IMPORTED) #添加库文件,实际上就是引入so文件,IMPORT代表从第三方引入的意思
    3 set_target_properties( ffmpeg PROPERTIES IMPORTED_LOCATION ${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libffmpeg.so#这句话是ffmpeg对应的so文件,so文件是放到JNILibs这个文件夹中
    4 target_link_libraries( ${log-lib} native-lib ffmpeg)
     #为native-lib加载ffmpeg库.

      这样配置好就可以在native-lib里调用ffmpeg模块了

    2,自己编写的cpp文件

    #加载coreAlg核心代码
    add_library(coreAlg SHARED src/main/cpp/coreAlg.cpp )#添加库文件,这种实际上是有AS给编译成so文件了
    target_link_libraries(native-lib ${log-lib} coreAlg)#native-lib里调用coreAlg
  • 相关阅读:
    input 特殊字符限制
    angular $http服务
    angular $resouse服务
    ng-model-options 时延
    Pytorch之数据处理
    python 小顶堆
    刷题套路总结
    数组分成和尽可能相等的子数组
    python3.7 sorted 自定义排序
    Leetcode 二维数组周游 54
  • 原文地址:https://www.cnblogs.com/meadow-glog/p/6130568.html
Copyright © 2011-2022 走看看