如何在unity中使用android插件sdk?

问题描述 投票:0回答:1

例如,我有适用于 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)
        }
    }
}
android unity-game-engine plugins
1个回答
0
投票

LiveKit 有 Unity 插件,因此您不需要单独安装 Android SDK。

但是如果您想知道如何将 android 库添加到 Unity,请按照以下步骤操作:

从 Maven 存储库添加 Android 库:

  1. 下载并安装 Unity 的外部依赖管理器。 https://github.com/googlesamples/unity-jar-resolver(有external-dependency-manager-latest.unitypackage)
  2. 在您的 Assets 目录中,创建“Editor”目录
  3. 在“编辑器”中创建 XML 文件并根据需要命名,例如我的依赖项.xml
  4. 在 XML 中添加:
    <dependencies>
      <androidPackages>
        <repositories>
          <repository>https://repo1.maven.org/maven2</repository>
        </repositories>
        <androidPackage spec="io.livekit:livekit-android:2.0.1"/>
      </androidPackages>
    </dependencies>
    
  5. 我建议在
    Custom Main Gradle Template
    中启用
    Custom Gradle Properties Templete
    Edit > Project Setting > Player > Android > Publishing Settings
    。启用模板后,外部依赖管理器将使用 Gradle 来解析依赖关系,这比依赖管理器自己的实现要好得多。
  6. 然后继续
    Assets > External Dependency Manager > Android Resolver > Resolve
  7. 如果您在
    Publishing Settings
    中启用了缩小,并且正在使用 C# 添加的 Android 库,您可能会面临类未找到/定义的错误。在这种情况下,您需要启用
    Custom Proguard File
    并添加:
    -keep class io.livekit.** { public *; }
    

将 Android 库添加为 .aar 存档:

  1. 将.aar文件复制到

    Assets/Plugins/Android
    目录

  2. 如果需要,添加自定义 Proguard 规则以避免代码混淆。

    注意,许多 Android 库都具有传递依赖项,这意味着还需要添加依赖项的 aar 文件。

© www.soinside.com 2019 - 2024. All rights reserved.