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
  • 相关阅读:
    Qt模拟C#的File类对文件进行操作
    Qt Creator (C++)保存文件
    winfrom LED时钟
    winfrom 水晶按钮
    C#语言的Image和byte数组的互相转换
    GDI+ 绘图闪烁解决方法
    vue webpack 架构下使用 bootstrap 的模态框modal 做遮罩效果组件及应用
    windows 版Tomcat 7.0的配置
    转:说说JSON和JSONP
    HttpWebRequest在GetResponse时总是超时
  • 原文地址:https://www.cnblogs.com/meadow-glog/p/6130568.html
Copyright © 2011-2022 走看看