如何解决无法初始化 Agora EtcEngine
我正在使用 Agora https://docs.agora.io/en/All/downloads?platform=All%20Platforms 在 Android Kotlin 中构建一个群组视频聊天应用程序。当我初始化 RtcEngine 时,活动崩溃并停止工作。
这是我的代码:
package com.example.agorachat
import android.Manifest
import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.FrameLayout
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import io.agora.rtc.Constants
import io.agora.rtc.IRtcEngineEventHandler
import io.agora.rtc.RtcEngine
import io.agora.rtc.video.VideoCanvas
import io.agora.rtc.video.VideoEncoderConfiguration
class VideoCallActivity: AppCompatActivity() {
private lateinit var rtcEngine: RtcEngine
private val PERMISSION_REQ_ID = 22
private val REQUESTED_PERMISSIONS =
arrayOf<String>(Manifest.permission.RECORD_AUDIO,Manifest.permission.CAMERA)
private var mRtcEventHandler: IRtcEngineEventHandler = object: IRtcEngineEventHandler() {
override fun onJoinChannelSuccess(channel: String?,uid: Int,elapsed: Int) {
super.onJoinChannelSuccess(channel,uid,elapsed)
}
override fun onFirstRemoteVideoDecoded(uid: Int,width: Int,height: Int,elapsed: Int) {
super.onFirstRemoteVideoDecoded(uid,width,height,elapsed)
}
override fun onUserOffline(uid: Int,reason: Int) {
super.onUserOffline(uid,reason)
}
override fun onUserJoined(uid: Int,elapsed: Int) {
super.onUserJoined(uid,elapsed)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_video_call)
//check for permissions
if (checkPermission(REQUESTED_PERMISSIONS[0],PERMISSION_REQ_ID) && checkPermission(REQUESTED_PERMISSIONS[1],PERMISSION_REQ_ID)) {
initAgoraEngine()
}
}
private fun checkPermission(permission: String,requestCode: Int): Boolean {
if (ContextCompat.checkSelfPermission(this,permission) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,REQUESTED_PERMISSIONS,requestCode)
return false
}
return true
}
override fun onRequestPermissionsResult(
requestCode: Int,permissions: Array<out String>,grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode,permissions,grantResults)
when (requestCode) {
PERMISSION_REQ_ID -> {
if (grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {
// permission is not granted
} else {
initAgoraEngine()
}
}
}
}
private fun initAgoraEngine() {
try {
rtcEngine =
RtcEngine.create(
baseContext,getString(R.string.agora_app_id),mRtcEventHandler
)
} catch (e: Exception) {
throw RuntimeException(
"""
NEED TO check rtc sdk init fatal error
""".trimIndent()
)
}
}
}
调用 initAgoraEngine 函数时,我在 Logcat 中收到以下错误。
2021-06-28 09:37:59.993 11548-11548/com.example.agorachat E/linker: "/data/app/~~vd25AI6J-d7k8chWmWQbTQ==/com.example.agorachat-tLg-Suyq3XSSnjxf_NK3iQ==/base.apk!/lib/x86/libagora-ffmpeg.so" has text relocations (https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23)
2021-06-28 09:37:59.994 11548-11548/com.example.agorachat D/AndroidRuntime: Shutting down VM
2021-06-28 09:38:00.002 11548-11548/com.example.agorachat E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.agorachat,PID: 11548
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/~~vd25AI6J-d7k8chWmWQbTQ==/com.example.agorachat-tLg-Suyq3XSSnjxf_NK3iQ==/base.apk!/lib/x86/libagora-ffmpeg.so" has text relocations (https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23)
at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
at java.lang.System.loadLibrary(System.java:1664)
at io.agora.rtc.internal.RtcEngineImpl.loadNativeLibrary(RtcEngineImpl.java:135)
at io.agora.rtc.internal.RtcEngineImpl.initializeNativeLibs(RtcEngineImpl.java:183)
at io.agora.rtc.RtcEngine.create(RtcEngine.java:41)
at com.example.agorachat.VideoCallActivity.initAgoraEngine(VideoCallActivity.kt:86)
at com.example.agorachat.VideoCallActivity.onCreate(VideoCallActivity.kt:52)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2021-06-28 09:38:00.107 11548-11548/com.example.agorachat I/Process: Sending signal. PID: 11548 SIG: 9
我的代码有什么问题,我该如何修复?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。