学习雷神Android HelloWold CMake版本

本文介绍如何在Android Studio中通过CMake集成FFmpeg库,并详细展示了配置过程,包括设置CMakeLists.txt文件及修改build.gradle文件的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

雷神Android HelloWorld

地址http://blog.csdn.NET/leixiaohua1020/article/details/47008825


步骤

1,开启Android studio,新建项目,“Include C++ support”打钩,一直下一步,最后完成。

2,雷神工程下,编好的so库,拷贝至libs目录,如下。

3,雷神工程下,头文件,拷贝至main目录,如下。


4,CMakeLists.txt修改

4.1设置工程绝对路径 set(ProjectRoot E:/Android/hello)

4.2添加库

add_library( avcodec
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       avcodec

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libavcodec-56.so )
4.3添加头 include_directories( src/main/include/ )
4.4修改目标连接库
target_link_libraries( # Specifies the target library.
                       native-lib

                       avcodec
                       avdevice
                       avfilter
                       avformat
                       avutil
                       postproc
                       swresample
                       swscale

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )
4.5完整CMakeList.txt
# 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.

add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             src/main/cpp/native-lib.cpp )

# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

set(ProjectRoot E:/Android/hello)

add_library( avcodec
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       avcodec

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libavcodec-56.so )

add_library( avdevice
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       avdevice

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libavdevice-56.so )

add_library( avfilter
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       avfilter

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libavfilter-5.so )

add_library( avformat
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       avformat

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libavformat-56.so )

add_library( avutil
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       avutil

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libavutil-54.so )

add_library( postproc
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       postproc

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libpostproc-53.so )

add_library( swresample
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       swresample

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libswresample-1.so )

add_library( swscale
             SHARED
             IMPORTED )
set_target_properties( # Specifies the target library.
                       swscale

                       # Specifies the parameter you want to define.
                       PROPERTIES IMPORTED_LOCATION

                       # Provides the path to the library you want to import.
                       ${ProjectRoot}/app/libs/jni/armeabi/libswscale-3.so )

include_directories( src/main/include/ )

target_link_libraries( # Specifies the target library.
                       native-lib

                       avcodec
                       avdevice
                       avfilter
                       avformat
                       avutil
                       postproc
                       swresample
                       swscale

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )
5 build.gradle修改
5.1 defaultConfig {}中添加
ndk {
    moduleName "avcodec"
    abiFilters  'armeabi'
}
5.2 android {}中添加
sourceSets {
    main {
        jniLibs.srcDirs = ['./libs/jni']
    }
}

参考文章

http://blog.youkuaiyun.com/mxw3755/article/details/56676923

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值