例如,我有适用于 Android 的 LiveKit SDK,我需要将此插件集成到我的 Android 设备 Unity 项目中。
我搜索了很多教程,但没有一个很好地解释了如何在我的项目中实现整个 SDK 并正确使用它
另外,我刚刚从.gradle文件夹中取出livekit.aar文件并将其放入unity项目中 然后,我就这样编码了
private void Start() {
AndroidJavaClass liveKit = new AndroidJavaClass("io.livekit.android.LiveKit");
devInf.text = "Found LiveKit Class";
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject applicationContext = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
AndroidJavaObject room = liveKit.CallStatic<AndroidJavaObject>("create", applicationContext);
token = PlayerPrefs.GetString("stream-token", "");
Debug.LogWarning(token);
StartCoroutine(ConnectCoroutine(room, url, token));
//Invoke("CreateRoomWithDelay", 3f);
}
IEnumerator ConnectCoroutine(AndroidJavaObject room, string url, string token) {
devInf.text = "Starting Connection";
yield return room.Call<IEnumerator>("connect", url, token);
AndroidJavaObject localParticipant = room.Call<AndroidJavaObject>("localParticipant");
if (localParticipant != null) {
AndroidJavaObject audioTrack = localParticipant.Call<AndroidJavaObject>("createAudioTrack");
AndroidJavaObject videoTrack = localParticipant.Call<AndroidJavaObject>("createVideoTrack");
localParticipant.Call("publishAudioTrack", audioTrack);
localParticipant.Call("publishVideoTrack", videoTrack);
localParticipant.Call("setCameraEnabled", true);
localParticipant.Call("setMicrophoneEnabled", true);
}
}
这就是我在android studio中实现livekit的方式
fun startStream() {
val cfgData = getCfgData.getData()
viewModelScope.launch {
if (token != null) {
room.connect(STREAM_URL, token)
val localParticipant = room.localParticipant
val videoTrack = localParticipant.createVideoTrack(
"video",
LocalVideoTrackOptions(position = CameraPosition.BACK)
)
localParticipant.publishVideoTrack(videoTrack)
val audioTrack = localParticipant.createAudioTrack(
"audio",
LocalAudioTrackOptions()
)
localParticipant.publishAudioTrack(audioTrack)
localParticipant.setCameraEnabled(true)
localParticipant.setMicrophoneEnabled(true)
}
}
}
LiveKit 有 Unity 插件,因此您不需要单独安装 Android SDK。
但是如果您想知道如何将 android 库添加到 Unity,请按照以下步骤操作:
<dependencies>
<androidPackages>
<repositories>
<repository>https://repo1.maven.org/maven2</repository>
</repositories>
<androidPackage spec="io.livekit:livekit-android:2.0.1"/>
</androidPackages>
</dependencies>
Custom Main Gradle Template
中启用 Custom Gradle Properties Templete
和 Edit > Project Setting > Player > Android > Publishing Settings
。启用模板后,外部依赖管理器将使用 Gradle 来解析依赖关系,这比依赖管理器自己的实现要好得多。Assets > External Dependency Manager > Android Resolver > Resolve
Publishing Settings
中启用了缩小,并且正在使用 C# 添加的 Android 库,您可能会面临类未找到/定义的错误。在这种情况下,您需要启用 Custom Proguard File
并添加:
-keep class io.livekit.** { public *; }
将.aar文件复制到
Assets/Plugins/Android
目录
如果需要,添加自定义 Proguard 规则以避免代码混淆。
注意,许多 Android 库都具有传递依赖项,这意味着还需要添加依赖项的 aar 文件。