android 在module内创建CMakeLists.txt来实现生成多个.so文件
2017-11-10 10:34
513 查看
公司要做sdk,而且大部分代码都是c++的,这就需要在项目中生成多个.so文件,一个是sdk主体,一个是测试代码,通过网上查了相关资料有不同的方法
没有module的实现方法
AndroidStudio项目CMakeLists解析
有module的实现方法
Android Studio中通过CMake使用NDK并编译自定义库和添加预编译库
我只参考了有module的方法
首先在自己的项目下创建module,我的module名叫sdklib,再引入项目,再在sdklib\src\main下创建cpp文件夹,创建个xxx.cpp,名字什么的随便取,把项目的CMakeLists.txt复制到sdklib下,修改文件
修改sdklib的build.gradle文件,在android{}内添加
至于cpu架构也要添加,根据情况添加,在defaultConfig{}内添加
上面文章有说的,我就不多说了,有些东西我没用上,我是把.so文件保存到项目的app/libs文件夹,根据需求改
然后改项目的CMakeLists.txt
如果有.h文件需要添加
指向module内.h所在的文件夹,如果用第三方sdk也有需要引入的.h文件就在加一行指向第三方的.h文件
然后引入生成的.so文件
如果提示找不到libXXXX.so的时候可以Build->Make Module 一下,清除下缓存
没有module的实现方法
AndroidStudio项目CMakeLists解析
有module的实现方法
Android Studio中通过CMake使用NDK并编译自定义库和添加预编译库
我只参考了有module的方法
首先在自己的项目下创建module,我的module名叫sdklib,再引入项目,再在sdklib\src\main下创建cpp文件夹,创建个xxx.cpp,名字什么的随便取,把项目的CMakeLists.txt复制到sdklib下,修改文件
add_library( XXXX SHARED src/main/cpp/xxx.cpp ) #加入android库 find_library( android-lib android ) find_library( log-lib log ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") set(CMAKE_VERBOSE_MAKEFILE on) set(distribution_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../app) set_target_properties(XXXX PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${distribution_DIR}/libs/${ANDROID_ABI}) target_link_libraries( XXXX ${log-lib} ${android-lib} )
修改sdklib的build.gradle文件,在android{}内添加
externalNativeBuild { cmake { path "CMakeLists.txt" } }
至于cpu架构也要添加,根据情况添加,在defaultConfig{}内添加
externalNativeBuild { cmake { abiFilters 'arm64-v8a','armeabi', "armeabi-v7a","x86","x86_64" } }
上面文章有说的,我就不多说了,有些东西我没用上,我是把.so文件保存到项目的app/libs文件夹,根据需求改
然后改项目的CMakeLists.txt
如果有.h文件需要添加
include_directories(${CMAKE_SOURCE_DIR}/../sdklib/src/main/cpp)
指向module内.h所在的文件夹,如果用第三方sdk也有需要引入的.h文件就在加一行指向第三方的.h文件
include_directories(${CMAKE_SOURCE_DIR}/libs/include) include_directories(${CMAKE_SOURCE_DIR}/../sdklib/src/main/cpp)
然后引入生成的.so文件
set(distribution_DIR ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}) add_library(XXXX SHARED IMPORTED) set_target_properties(HMSDK PROPERTIES IMPORTED_LOCATION ${distribution_DIR}/libXXXX.so)
target_link_libraries( native-lib XXXX ${log-lib})
如果提示找不到libXXXX.so的时候可以Build->Make Module 一下,清除下缓存
相关文章推荐
- Android NDK入门漂流记(二)-----踩坑出坑记(单.so文件生成和多.so文件生产,以及对CMakeLists.txt的探索)
- ROS-indigo下创建工作空间,创建程序包,package.xml,CMakeLists.txt相关代码记录及文件解析
- ROS编程中如何配置CMakelists.txt来调用外部的动态链接库(.so文件)
- Android Studio NDK CMake 指定so输出路径以及生成多个so的案例与总结 # 设置so文件生成路径 # set(CMAKE_LIBRARY_OUTPUT_DIRECTORY $
- ros中创建msg和srv文件时,配置CMakeLists.txt文件问题
- linux下使用CmakeLists.txt生成makefile文件进行编译
- ros中创建msg和srv文件时,配置CMakeLists.txt文件问题
- Android Lame 3.99.5 生成so文件 来实现录音功能
- CMakeLists.txt文件写法(1):要求CMake根据指定的源文件生成可执行文件
- Android使用JNI生成.so文件并调用(使用CMake的方法)
- Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,
- CMakeLists.txt文件写法(6):要求CMake根据指定的源文件生成库文件
- Android Studio JNI cmake 不能生成.so文件
- Android Studio CMakeLists.txt文件配置
- 创建android项目无法生成R文件
- 手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾,其余对应的数据相加,三个文本的内容如下
- 创建Android项目后R文件没有自动生成
- CMakeLists.txt文件写法
- 信号实现文件创建(1.txt - 10.txt),然后合并到data.txt
- Android NDK入门实例 计算斐波那契数列二生成.so库文件