android jni通过cmake使用第三方静态库和动态库
2017-02-16 10:21
519 查看
google 官方现在推荐使用cmake来构建jni。本人正好工作需要使用第三方的静态库和动态库,写此文 权当做个记录。首先修改app的build.gradle文件
ndk { abiFilter 'armeabi' } externalNativeBuild { cmake { arguments '-DANDROID_PLATFORM=android-13', '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static' } }
externalNativeBuild { cmake { path 'src/main/cpp/CMakeLists.txt' } } sourceSets { main { // copy libusb1.0.so to APK jniLibs.srcDirs = ['/home/chenhf/libusb/android/libs'] } }
创建CMakeLists.txt文件
# Sets the minimum version of CMake required to build the native# library. You should either keep the default value or only pass a# value of 3.4.0 or lower.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 it for you.# Gradle automatically packages shared libraries with your APK.set(LIBHARDWARE_DIR /home/chenhf/workspace/android/PSAMDemo/app/libhardware)add_library(hardware STATIC IMPORTED)set_target_properties(hardware PROPERTIES IMPORTED_LOCATION ${LIBHARDWARE_DIR}/${ANDROID_ABI}/libhardware.a)set(LIBUSB_DIR /home/chenhf/libusb/android/libs)add_library(usb SHARED IMPORTED)set_target_properties(usb PROPERTIES IMPORTED_LOCATION ${LIBUSB_DIR}/${ANDROID_ABI}/libusb1.0.so)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")add_library(psamwrapper SHARED psamwrapper.cpp)target_link_libraries(psamwrapper hardware usb android log)最后会生成so文件,最终结果见下图
相关文章推荐
- 使用Android JNI调用第三方静态库并且生成静态库和动态库(armeabi/arm64-v8a版本)的配置操作
- 一个使用第三方静态库(*.a)的jni实例以及 ndk 使用第三方静态库生成动态库的实例
- Jni中执行ndk-build,编译第三方静态库(.a)和动态库(.so)的Android.mk文件写法
- 关于android studio使用cmake 编写jni调用静态库、动态库的方式
- android(NDK+JNI)---NDK 编译和使用静态库、动态库
- Android下使用CMake链接已有静态库.a生成新的静态库.a,以及动态库.so链接静态库生成新的动态库.so
- 在Android中通过jni方式使用编译好的FFmpeg库-Android中使用FFmpeg媒体库
- android JNI 调用第三方动态库
- android开发 NDK编译和使用静态库、动态库
- cmake的使用二:链接第三方静态库
- android开发 NDK 编译和使用第三方静态库
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
- 在Android中通过jni方式使用编译好的FFmpeg库-Android中使用FFmpeg媒体库(二)
- HelloWorld CMake Demo 03:CMake中构建静态库与动态库及其使用
- windows下使用cmake和ndk编译android所用动态库.so和静态库.a
- android开发 NDK 编译和使用静态库、动态库
- 在Android中通过jni方式使用编译好的FFmpeg库-Android中使用FFmpeg媒体库(二)
- NDK/JNI 已有第三方静态库(动态库),编译静态库(动态库) -- 试试
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库