经历一周时间的研究,终于编译成功了。 对经历的过程简单总结一下,仅供参考!
源码下载:
https://github.com/jitsi/jitsi-meet/releases/tag/android-sdk-5.0.2
环境:
$ node -v && npm -v && gradle -v
v14.18.0
6.14.15
------------------------------------------------------------
Gradle 7.0
------------------------------------------------------------
Build time: 2021-04-09 22:27:31 UTC
Revision: d5661e3f0e07a8caff705f1badf79fb5df8022c4
Kotlin: 1.4.31
Groovy: 3.0.7
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 11.0.14 (Oracle Corporation 11.0.14+8-LTS-263)
OS: Mac OS X 10.15.7 x86_64
$ java -version
java version "11.0.14" 2022-01-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.14+8-LTS-263)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.14+8-LTS-263, mixed mode)
使用如下版本: react-native 0.66.4
源码下载后: npm install 或者 yarn install 下载node_modules依赖(这个我就下载了一周,才下载完整,成功前是家里的宽带网络,今天改用了移动手机流量热点 , 全部有外网)
下载完成,编译 参考资料 https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-android-sdk
首先确保您的开发环境设置正确。
关于依赖项的说明:除了 SDK 之外,Jitsi 还向 Jitsi Maven 存储库发布了一些 SDK 依赖项(否则不公开)的二进制 Maven 工件。当您计划使用从源代码构建的 SDK 时,您可能会使用比用于创建二进制 SDK 工件的源代码版本更新(或至少不同)的源代码版本. 因此,您的项目需要的依赖项也可能与 Jitsi Maven 存储库中发布的依赖项不同。这可能会导致构建问题,由不可用的依赖项引起。
如果您想使用从源代码构建的 SDK,您可能会从编写包含这些依赖项的本地 Maven 存储库中受益。下面的文本描述了如何创建一个包含 SDK 以及这些依赖项的存储库。出于说明目的,我们将这个本地 Maven 存储库的位置定义为/tmp/repo
在源代码形式中,Android SDK 依赖项由 Jitsi Meet 项目的 package.json 和 package-lock.json 锁定/固定。获取数据,在jitsi-meet项目目录下执行npm:
npm install
这将以二进制格式或源代码格式在 /node_modules/ 下的某个位置引入依赖项
Jitsi Meet SDK for Android 所依赖的第三方 React Native模块由 NPM 以源代码或二进制形式下载。这些需要组装成 Maven 工件,然后发布到本地 Maven 存储库。提供了一个脚本来促进这一点。从 jitsi-meet 项目存储库的根目录运行:
./android/scripts/release-sdk.sh /tmp/repo
在编译的过程中会出现问题的解决参考资料: https://github.com/react-native-webrtc/react-native-webrtc/issues/1130 出现的问题现象(只是其中之一)
yarn run v1.22.10
$ react-native run-android
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 892 file(s) to forward-jetify. Using 8 workers...
info JS server already running.
info Installing the app...
Configure project :app
WARNING:: The option setting 'android.enableDexingArtifactTransform.desugaring=false' is experimental.
The current default is 'true'.
Task :react-native-webrtc:compileDebugJavaWithJavac FAILED
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings
27 actionable tasks: 2 executed, 25 up-to-date
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java:5: 错误: 程序包org.webrtc不存在
import org.webrtc.VideoFrame;
^
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java:6: 错误: 程序包org.webrtc不存在
import org.webrtc.VideoSink;
^
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java:7: 错误: 程序包org.webrtc不存在
import org.webrtc.VideoTrack;
^
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java:69: 错误: 找不到符号
private class TrackMuteUnmuteImpl implements VideoSink {
^
符号: 类 VideoSink
位置: 类 com.oney.WebRTCModule.VideoTrackAdapter
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/WebRTCModule.java:31: 错误: 程序包org.webrtc不存在
import org.webrtc.;
^
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/WebRTCModule.java:32: 错误: 程序包org.webrtc.audio不存在
import org.webrtc.audio.AudioDeviceModule;
^
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/WebRTCModule.java:33: 错误: 程序包org.webrtc.audio不存在
import org.webrtc.audio.JavaAudioDeviceModule;
^
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java:38: 错误: 找不到符号
public void addAdapter(String streamReactTag, VideoTrack videoTrack) {
^
符号: 类 VideoTrack
位置: 类 com.oney.WebRTCModule.VideoTrackAdapter
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java:53: 错误: 找不到符号
public void removeAdapter(VideoTrack videoTrack) {
^
符号: 类 VideoTrack
位置: 类 com.oney.WebRTCModule.VideoTrackAdapter
/Users/mac/demo/RTC-demo/RTC_RNdemo/node_modules/react-native-webrtc/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java:84: 错误: 找不到符号
public void onFrame(VideoFrame frame) {
^
还有可能出现其他问题:
上述问题就是依赖版本的问题 react-native-reanimated 版本太高造成的,不能高于 2.2.0 所以可以使用如下方法安装低版本
npm i react-native-reanimated@1.13.4
or
yarn add react-native-reanimated@1.13.4
or
yarn add react-native-reanimated@0.0.0 选择版本
其他问题如果是依赖版本的问题,均可以使用上述方法来改变版本。
对于依赖下载的源改变,可以参考我的博客中的其他文章解决。
上述只是自己在编译过程中的总结,有问题欢迎留言讨论。
2022年4月4日(不平凡的4月,从4月1日开始)
努力就可以战胜一切困难,虽然困难很多!!!!
|