medaRTC4.0_android版编译记录

medaRTC4.0_android版编译记录

  • 一、准备编译环境

        下载地址:Download Android Studio and SDK tools  |  Android Developers

        我下载的时候是:Android Studio Chipmunk | 2021.2.1 Patch 1 for Windows 64-bit (929 MiB)

       下载好后,直接安装即可,配置SDK(29)和NDK(21),这些工程编译时会自己下载,但编译依赖的静态库时最好用同样版本的NDK,这些静态库是在Linux下用编译的,Linux下的NDK版本最好选成一样;

  • 二、用AS打开工程开始编译:

这里有两个工程:metapushstream4_android 和 metaplayer4_android

    1. metapushstream4_android编译:

(1)、安装ninja,如果没安装或找不到,编译会提示错误:[CXX1410]

D:\OpenSource\metaRTC\Release\4.0\metartc4.0-b0-android\android\metapushstream4_android\app\.cxx\Debug\3p1em3n5\arm64-v8a\android_gradle_build.json debug|arm64-v8a : expected buildTargetsCommandComponents command 'ninja.exe' to exist

一是可能没安装ninja,如果没有安装先进行安装:windows 安装ninja, 第二种简单点。

二是可能路径不对:手动打开提示中的这个文件:android_gradle_build.json

{
  "buildFiles": [
    "D:\\OpenSource\\metaRTC\\Release\\4.0\\metartc4.0-b0-android\\android\\metapushstream4_android\\app\\src\\main\\cpp\\CMakeLists.txt"
  ],
  "cleanCommandsComponents": [
    [
       "C:\\ProgramData\\chocolatey\\bin\\ninja.exe",
      "-C",
      "D:\\OpenSource\\metaRTC\\Release\\4.0\\metartc4.0-b0-android\\android\\metapushstream4_android\\app\\.cxx\\Debug\\3p1em3n5\\arm64-v8a",
      "clean"
    ]
  ],
  "buildTargetsCommandComponents": [
     "C:\\ProgramData\\chocolatey\\bin\\ninja.exe",
    "-C",
    "D:\\OpenSource\\metaRTC\\Release\\4.0\\metartc4.0-b0-android\\android\\metapushstream4_android\\app\\.cxx\\Debug\\3p1em3n5\\arm64-v8a",
    "{LIST_OF_TARGETS_TO_BUILD}"
  ],
  "libraries": {
    "push::@6890427a1f51a3e7e1df": {
      "toolchain": "toolchain",
      "abi": "arm64-v8a",
      "artifactName": "push",
      "output": "D:\\OpenSource\\metaRTC\\Release\\4.0\\metartc4.0-b0-android\\android\\metapushstream4_android\\app\\build\\intermediates\\cxx\\Debug\\3p1em3n5\\obj\\arm64-v8a\\libpush.so",
      "runtimeFiles": []
    }
  },
  "toolchains": {
    "toolchain": {
      "cCompilerExecutable": "E:\\Android\\SDK\\ndk\\21.4.7075529\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe",
      "cppCompilerExecutable": "E:\\Android\\SDK\\ndk\\21.4.7075529\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe"
    }
  },
  "cFileExtensions": [],
  "cppFileExtensions": [
    "cpp"
  ]
}

 

自动构建是这个样子的,报错的是buildTargetsCommandComponents 这个子项,把两个红框处的路径改成前面安装的ninja目录,不太清楚作者是在哪里配置ninja的默认目录的,在工程里也没找到。

  1. 、编译依赖静态库,没有会提示错误:

ninja: error:

'D:/OpenSource/metaRTC/Release/4.0/metartc4.0-b0-android/android/bin/lib_android/arm64-v8a/libmetartc4.a', needed by 'D:/OpenSource/metaRTC/Release/4.0/metartc4.0-b0-android/android/metapushstream4_android/app/build/intermediates/cxx/Debug/3p1em3n5/obj/arm64-v8a/libpush.so', missing and no known rule to make it

这里一共有两个静态库需要在工程外编译(libmetartc4.a、libmetartccore4.a)

编译libmetartc4.a

      源代码在metartc4.0-b0-android\android\libmetartc4目录,要在linux下运行该目录下的cmake_android.sh批处理,我直接用windows10带的ubuntu环境编译。

a、安装cmake,安装命令:

sudo apt install cmake

b、安装ndk,NDK各个版本链接

https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip

解压到指定目录即可,并更新批处理文件中的ndk路径:

NDK_ROOT=/home/zl/android/ndk/ndk-r21e/android-ndk-r21e
rm -rf build
mkdir build
cd build
#armeabi armeabi-v7a arm64-v8a x86_64
ARCH=arm64-v8a
API=29
cmake -DCMAKE_TOOLCHAIN_FILE=$NDK_ROOT/build/cmake/android.toolchain.cmake -DANDROID_NDK=$NDK_ROOT -DCMAKE_SYSTEM_NAME=Android -DANDROID_PLATFORM=android-${API} -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=${ARCH} -DAndroid=ON -DANDROID_STL=c++_static -DCMAKE_CXX_STANDARD=11 -DANDROID_NATIVE_API_LEVEL=${API} ..
make
if [ ! -d "../../bin/lib_android" ] ; then
mkdir -p ../../bin/lib_android
fi

if [ ! -d "../../bin/lib_android/$ARCH" ] ; then
mkdir -p ../../bin/lib_android/$ARCH
fi
cp libmetartc4.a ../../bin/lib_android/$ARCH

 c、执行编译:

sudo ./cmake_android.sh

成功后在如下目录生成libmetartc4.a

 编译libmetartccore4.a

      源代码在metartc4.0-b0-android\android\libmetartccore4目录,要在linux下运行该目录下的cmake_android.sh批处理,编译方法同libmetartc4.a。

AS工程默认配置编译arm64-v8a","x86_64"这两种架构,根据自己需要调整并编译对应的静态库。

          AS编译,前述编译完成后,就可成功编译了。新版的AS不熟,apk找了半天,在这个地方找到了。

 metaplayer4_android编译:同metapushstream4_android编译。

三、 第三方依赖库编译:

        主要在低版本Android环境开发,还要编译armeabi armeabi-v7a 下的依赖库,还没搞完,搞完了再补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要基于 Android 的 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的源代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDK 和 Android SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试、测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值