AppRTCMobile是webrtc android上的一个demo客户端,通常我们用它来分析webrtc的在android的流程。
一、AppRTCMobile的Android Studio工程建立
webrtc for android的代码编译和配置完成后(编译方式如下)
gn gen out/Release --args='is_debug=false is_component_build=false proprietary_codecs=true target_os="android" target_cpu="arm" is_chrome_branded=true use_custom_libcxx=false use_custom_libcxx_for_host=false is_component_ffmpeg=false rtc_use_h264=true rtc_build_examples=true android32_ndk_api_level=18 rtc_enable_protobuf=true is_clang=true treat_warnings_as_errors=false use_rtti=true dcheck_always_on=true'
autoninja -C out/Release
可以通过自动化的脚本来进行
build/android/gradle/generate_gradle.py --output-directory out/Release --target "//examples:AppRTCMobile" --use-gradle-process-resources --split-projects --canary
上面指令生成AppRTCMobile工程 也可以不用参数--split-projects --use-gradle-process-resources ,否则生成的工程有很多的模块(看用户自己的选择,如果需要改到sdk依赖,可以使用上面命令)。看起来很复杂,而且编译问题难搞定,--canary不指定就是生成适合稳定版本Android Studio用的。
为了简单起见,本文使用如下命令来生成工程。
build/android/gradle/generate_gradle.py --output-directory out/Release --target "//examples:AppRTCMobile"
会在out/Release/gradle目录生成器一个android studio可以打开的工程。用 android studio打开后就可以构建了。
二、遇到的问题
1. Cannot resolve external dependency com.android.tools.build:aapt2:7.2.0-7984345
详细内容:
Execution failed for task ':examples.AppRTCMobile:processDebugAndroidTestResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
> Could not isolate value com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskWorkActionParameters_Decorated@3be5e11 of type LinkApplicationAndroidResourcesTask.TaskWorkActionParameters
> Could not resolve all files for configuration ':examples.AppRTCMobile:detachedConfiguration1'.
> Cannot resolve external dependency com.android.tools.build:aapt2:7.2.0-7984345 because no repositories are defined.
Required by:
project :examples.AppRTCMobile
解决方法:
project的build.gradle中添加
allprojects {
repositories {
google()
mavenCentral()
}
}
2. 重复定义的R class
out/Release/gen/examples/AppRTCMobile_javalib/generated_java/input_srcjars/org/appspot/apprtc/R.java:5: error: duplicate class: org.appspot.apprtc.R
public final class R {
解决方法:
AppRtcMobile的build.gradle中注释掉多余的依赖
// "../../../gen/examples/AppRTCMobile/generated_java",
// "../../../gen/examples/AppRTCMobile_javalib/generated_java",
三、编译执行
Android studio编译后,可以直接连接手机进行调试了。生成的apk位于如下路径上:
out/Release/gradle/examples/AppRTCMobile/build/outputs/apk/debug/examples.AppRTCMobile-debug.apk