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 下的依赖库,还没搞完,搞完了再补充。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值