编译SDK从下载源代码到编译成功,经过一周时间,每天都是在下载依赖过程中。
今天是4月4日,突然想使用移动手机流量进行下载试试(有外网),居然今天下载的依赖成功了,依赖全了,编译环境符合就可以编译成功了。
环境:
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
参考虑的资料:
https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-android-sdk
构建您自己的,或使用预构建的 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
出现问题解决地址:
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) {
^
详细解决资料
https://github.com/react-native-webrtc/react-native-webrtc/issues/1130
可以观察下载的进度,查看这个目录下的文件是否存在,并增加文件长度
最新的SDK源码地址:
https://github.com/jitsi/jitsi-meet/releases/tag/android-sdk-5.0.2
编译成功:
BUILD SUCCESSFUL in 5m 22s
798 actionable tasks: 689 executed, 109 up-to-date
> Configure project :app
WARNING:: The option setting 'android.enableDexingArtifactTransform.desugaring=false' is experimental.
The current default is 'true'.
> Configure project :react-native-reanimated
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.9/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 5s
83 actionable tasks: 83 executed
编译步骤:
1、下载源码
2、配置环境
3、编译
4、解决编译中出现的问题
根据不同的问题,查找解决方案