怎么编译Android动态库

发布时间:2022-04-19 14:08:50 作者:iii
来源:亿速云 阅读:218

这篇“怎么编译Android动态库”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么编译Android动态库”文章吧。

C++ 2.FFmpeg-4.3.2 编译 Android 动态库 (ubuntu 18.04 , r21b)

编译环境

Linux 系统:

ubuntu18.04

NDK

ndk/android-ndk-r21b

FFmpeg

ffmpeg-4.3.2

ffmpeg 下载后的文件名

ffmpeg_4.3.2.orig.tar.xz

解压方式

tar xvJf ffmpeg_4.3.2.orig.tar.xz

在 root 权限下操作

编译

新建文件 build_android.sh

#!/bin/bash# ndk路径NDK=/home/build/workspace/hqq/vision/vision-app/ndk/android-ndk-r21b# 编译工具链目录,ndk17版本以上用的是clang,以下是gccTOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64# 版本号API=21# 交叉编译树的根目录(查找相应头文件和库用)SYSROOT="${TOOLCHAIN}/sysroot"# 定义执行configure的shell方法function build_android() {    ./configure \        --prefix=$PREFIX \        --enable-shared \        --disable-static \        --enable-jni \        --enable-gpl \        --enable-small \        --disable-doc \        --disable-programs \        --disable-symver \        --target-os=android \        --arch=$ARCH \        --cpu=$CPU \        --cc=$CC \        --cxx=$CXX \        --enable-cross-compile \        --cross-prefix=$CROSS_COMPILE \        --sysroot=$SYSROOT \        --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \        --extra-ldflags="" \        --disable-asm \        $COMMON_FF_CFG_FLAGS    make clean    make -j16    make install}# armOUTPUT_FOLDER=armARCH=armCPU=armv7-aTOOL_CPU_NAME=armv7aTOOL_PREFIX=$TOOLCHAIN/bin/${TOOL_CPU_NAME}-linux-androideabiOPTIMIZE_CFLAGS="-marm -march=$CPU"PREFIX=${PWD}/android/$OUTPUT_FOLDERCROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-CC=${TOOL_PREFIX}${API}-clangCXX=${TOOL_PREFIX}${API}-clang++build_android# arm64,这个指令集最低支持api21OUTPUT_FOLDER=arm64-v8aARCH=aarch64CPU=armv8-aTOOL_CPU_NAME=aarch64TOOL_PREFIX=$TOOLCHAIN/bin/${TOOL_CPU_NAME}-linux-androidOPTIMIZE_CFLAGS="-march=$CPU"PREFIX=${PWD}/android/$OUTPUT_FOLDERCROSS_COMPILE=$TOOLCHAIN/bin/aarch64-linux-android-CC=${TOOL_PREFIX}${API}-clangCXX=${TOOL_PREFIX}${API}-clang++build_android# x86OUTPUT_FOLDER=x86ARCH=x86CPU=x86TOOL_CPU_NAME=i686TOOL_PREFIX=$TOOLCHAIN/bin/${TOOL_CPU_NAME}-linux-androidOPTIMIZE_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"PREFIX=${PWD}/android/$OUTPUT_FOLDERCROSS_COMPILE=$TOOLCHAIN/bin/i686-linux-android-CC=${TOOL_PREFIX}${API}-clangCXX=${TOOL_PREFIX}${API}-clang++build_android# x86_64,这个指令集最低支持api21OUTPUT_FOLDER=x86_64ARCH=x86_64CPU=x86-64TOOL_CPU_NAME=x86_64TOOL_PREFIX=$TOOLCHAIN/bin/${TOOL_CPU_NAME}-linux-androidOPTIMIZE_CFLAGS="-march=$CPU -mtune=intel -msse4.2 -mpopcnt -m64"# 输出目录PREFIX=${PWD}/android/$OUTPUT_FOLDERCROSS_COMPILE=$TOOLCHAIN/bin/x86_64-linux-android-# so的输出目录, --libdir=$LIB_DIR 可以不用指定,默认会生成在$PREFIX/lib目录中#LIB_DIR="${PWD}/android/libs/$OUTPUT_FOLDER"# 编译器CC=${TOOL_PREFIX}${API}-clangCXX=${TOOL_PREFIX}${API}-clang++build_android

修改文件权限

chmod 777 build_android.sh

执行 build_android.sh

可编译出 "armeabi-v7a", "arm64-v8a", "x86", "x86_64"

假如编译失败,在打开文件粘贴时

:set ff #查看文件的格式会看到fileformat=dos 或者者 fileformat=unix

:set ff=unix #设置为unix格式

:wq #保存退出

编译后文件

怎么编译Android动态库怎么编译Android动态库

怎么编译Android动态库

取 .so 库放到 Android 项目中

怎么编译Android动态库

github lib 库

android_ffmpeg_lib

taxiao213/android_ffmpeg_lib

以上就是关于“怎么编译Android动态库”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

推荐阅读:
  1. Thrift 动态库编译
  2. OpenSSL Linux动态库编译

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android

上一篇:cordova打包android常见问题怎么解决

下一篇:Android各版本迭代改动与适配的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》