Created
March 21, 2019 06:32
-
-
Save happyj2me/48cc6d67582522bcb336f61037c141ae to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1.获取webrtc代码拉取以及编译的工具 | |
cd /home/kevin/webrtc | |
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git | |
export PATH=/home/kevin/webrtc/depot_tools:$PATH | |
2. 获取webrtc-master分支的最新代码 | |
cd /home/kevin/webrtc/linux | |
fetch --no-hooks webrtc_android | |
gclient sync | |
cd src | |
git checkout master | |
3. 选择一个release分支来工作,比如72 | |
git checkout -b 72 refs/remotes/branch-heads/72 | |
gclient sync | |
3.编译 | |
gn gen out/android --args='target_os="android" target_cpu="arm"' | |
ninja -C out/android | |
4.生成AppRTCMobile工程 --split-projects --use-gradle-process-resources 这两个不用,否则生成的工程有很多的模块, | |
看起来很复杂,而且编译问题难搞定,--canary不指定就是生成适合稳定版本Android Studio用的 | |
build/android/gradle/generate_gradle.py --output-directory $PWD/out/android --target "//examples:AppRTCMobile" | |
5.使用Android Studio import /home/kevin/webrtc/linux/src/out/android/gradle 工程: | |
5.1 如果提示使用webrtc的sdk还是其他sdk,选择使用webrtc的 | |
5.2 如果提示是否使用gradle wrapper,选择OK | |
5.3 删除步骤3生成的一些重复类,比如R.java | |
cd /home/kevin/webrtc/linux/src/out/android/gradle/examples/AppRTCMobile | |
rm -rf build | |
rm extracted-srcjars/org/appspot/apprtc/R.java | |
rm extracted-srcjars/org/chromium/base/BuildConfig.java | |
6. 由于webrtc代码大量使用了lambada表达式,所以最低需要安装jdk-1.8 | |
7. Android Studio build.gradle内容注释掉两行,如下: | |
// Generated by //build/android/generate_gradle.py | |
apply plugin: "com.android.application" | |
android { | |
compileSdkVersion 28 | |
defaultConfig { | |
vectorDrawables.useSupportLibrary = true | |
minSdkVersion 16 | |
targetSdkVersion 28 | |
} | |
compileOptions { | |
sourceCompatibility JavaVersion.VERSION_1_8 | |
targetCompatibility JavaVersion.VERSION_1_8 | |
} | |
sourceSets { | |
main { | |
aidl.srcDirs = [] | |
assets.srcDirs = [] | |
java.srcDirs = [] | |
jni.srcDirs = [] | |
renderscript.srcDirs = [] | |
res.srcDirs = [] | |
resources.srcDirs = [] | |
} | |
test { | |
aidl.srcDirs = [] | |
assets.srcDirs = [] | |
java.srcDirs = [] | |
jni.srcDirs = [] | |
renderscript.srcDirs = [] | |
res.srcDirs = [] | |
resources.srcDirs = [] | |
} | |
androidTest { | |
aidl.srcDirs = [] | |
assets.srcDirs = [] | |
java.srcDirs = [] | |
jni.srcDirs = [] | |
renderscript.srcDirs = [] | |
res.srcDirs = [] | |
resources.srcDirs = [] | |
} | |
debug { | |
aidl.srcDirs = [] | |
assets.srcDirs = [] | |
java.srcDirs = [] | |
jni.srcDirs = [] | |
renderscript.srcDirs = [] | |
res.srcDirs = [] | |
resources.srcDirs = [] | |
} | |
release { | |
aidl.srcDirs = [] | |
assets.srcDirs = [] | |
java.srcDirs = [] | |
jni.srcDirs = [] | |
renderscript.srcDirs = [] | |
res.srcDirs = [] | |
resources.srcDirs = [] | |
} | |
main { | |
manifest.srcFile "../../../../../examples/androidapp/AndroidManifest.xml" | |
java.srcDirs = [ | |
"../../../../../build/android/buildhooks/java", | |
"../../../../../examples/androidapp/src", | |
"../../../../../modules/audio_device/android/java/src", | |
"extracted-srcjars", | |
"../../../../../rtc_base/java/src", | |
"../../../../../sdk/android/api", | |
"../../../../../sdk/android/src/java", | |
"../../../../../third_party/jsr-305/src/ri/src/main/java", | |
] | |
java.filter.exclude( | |
"org/chromium/build/BuildHooksAndroidImpl.java", | |
"org/chromium/build/BuildHooksAndroid.java", | |
) | |
jniLibs.srcDirs = [ | |
"symlinked-libs", | |
] | |
res.srcDirs = [ | |
"../../../../../examples/androidapp/res", | |
"extracted-res", | |
] | |
} | |
} | |
} | |
dependencies { | |
implementation files("../../../lib.java/examples/androidapp/third_party/autobanh/autobanh.jar") | |
} | |
afterEvaluate { | |
def tasksToDisable = tasks.findAll { | |
return (it.name.equals('generateDebugSources') // causes unwanted AndroidManifest.java | |
|| it.name.equals('generateReleaseSources') | |
|| it.name.endsWith('BuildConfig') // causes unwanted BuildConfig.java | |
|| it.name.equals('preDebugAndroidTestBuild') | |
|| it.name.endsWith('Assets') | |
|| it.name.endsWith('Resources') | |
|| it.name.endsWith('ResValues') | |
|| it.name.endsWith('Aidl') | |
|| it.name.endsWith('Renderscript') | |
|| it.name.endsWith('Shaders')) | |
} | |
tasksToDisable.each { Task task -> | |
//task.enabled = false | |
} | |
tasks.withType(JavaCompile) { | |
//options.bootClasspath = "[u'/home/kevin/webrtc/linux/src/out/android/lib.java/third_party/android_tools/android.jar']" | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment