communication-ui-library-android
communication-ui-library-android copied to clipboard
while using call with Chat Android App crash when start chat
I import SDK locally like this: api project(path: ':calling') api(project(path: ':chat')) { exclude group: 'com.microsoft', module: 'trouter-client-android' } call is work fine but when start chat it crash and give me this error:
`E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.moj.najiz, PID: 27463
com.azure.android.communication.ui.chat.models.ChatCompositeException: App store exception while reducing state
at com.azure.android.communication.ui.chat.redux.AppStore$exceptionHandler$1$1.run(AppStore.kt:27)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/microsoft/trouterclient/registration/ISkypetokenProvider;
at com.azure.android.communication.chat.ChatAsyncClient.<init>(ChatAsyncClient.java:58)
at com.azure.android.communication.chat.ChatClientBuilder.buildAsyncClient(ChatClientBuilder.java:236)
at com.azure.android.communication.chat.ChatClientBuilder.buildClient(ChatClientBuilder.java:178)
at com.azure.android.communication.ui.chat.service.sdk.ChatSDKWrapper.createChatClient(ChatSDKWrapper.kt:358)
at com.azure.android.communication.ui.chat.service.sdk.ChatSDKWrapper.initialization(ChatSDKWrapper.kt:98)
at com.azure.android.communication.ui.chat.service.ChatService.initialize(ChatService.kt:12)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatActionHandler.initialization(ChatActionHandler.kt:181)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatActionHandler.onAction(ChatActionHandler.kt:32)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatMiddlewareImpl$invoke$1$1.invoke(ChatMiddleware.kt:40)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatMiddlewareImpl$invoke$1$1.invoke(ChatMiddleware.kt:28)
at com.azure.android.communication.ui.chat.redux.AppStore$dispatch$1.invokeSuspend(AppStore.kt:48)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:929)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.microsoft.trouterclient.registration.ISkypetokenProvider" on path: DexPathList[[zip file "/data/app/com.moj.najiz-2UfCH6U76_hwskoV1Sj5vw==/base.apk"],nativeLibraryDirectories=[/data/app/com.moj.najiz-2UfCH6U76_hwskoV1Sj5vw==/lib/arm64, /data/app/com.moj.najiz-2UfCH6U76_hwskoV1Sj5vw==/base.apk!/lib/arm64-v8a, /system/lib64, /hw_product/lib64, /system/product/lib64, /prets/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:209)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.azure.android.communication.chat.ChatAsyncClient.<init>(ChatAsyncClient.java:58)
at com.azure.android.communication.chat.ChatClientBuilder.buildAsyncClient(ChatClientBuilder.java:236)
at com.azure.android.communication.chat.ChatClientBuilder.buildClient(ChatClientBuilder.java:178)
at com.azure.android.communication.ui.chat.service.sdk.ChatSDKWrapper.createChatClient(ChatSDKWrapper.kt:358)
at com.azure.android.communication.ui.chat.service.sdk.ChatSDKWrapper.initialization(ChatSDKWrapper.kt:98)
at com.azure.android.communication.ui.chat.service.ChatService.initialize(ChatService.kt:12)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatActionHandler.initialization(ChatActionHandler.kt:181)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatActionHandler.onAction(ChatActionHandler.kt:32)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatMiddlewareImpl$invoke$1$1.invoke(ChatMiddleware.kt:40)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatMiddlewareImpl$invoke$1$1.invoke(ChatMiddleware.kt:28)
at com.azure.android.communication.ui.chat.redux.AppStore$dispatch$1.invokeSuspend(AppStore.kt:48)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:929)
To Reproduce Steps to reproduce the behavior:
- add call, and chat SDKs in same project
- for import add
api project(path: ':calling')
api(project(path: ':chat')) {
exclude group: 'com.microsoft', module: 'trouter-client-android'
}
- Try open chat after joining call like this
package com.moj.najiz.AzureCommunicationService;
import android.content.Context;
import android.view.View;
import com.azure.android.communication.common.CommunicationTokenCredential;
import com.azure.android.communication.common.CommunicationTokenRefreshOptions;
import com.azure.android.communication.common.CommunicationUserIdentifier;
import com.azure.android.communication.ui.chat.ChatAdapter;
import com.azure.android.communication.ui.chat.ChatAdapterBuilder;
import com.azure.android.communication.ui.chat.presentation.ChatThreadView;
import java.util.concurrent.ExecutionException;
public class ACSChatHandler {
private Context context;
private String userToken;
private String userId;
private String threadId;
private String endpoint;
private static ACSChatHandler instance;
public static ACSChatHandler init(Context context, String token, String userId, String threadId, String endpoint) {
if (instance == null) {
instance = new ACSChatHandler();
instance.userToken = token;
instance.userId = userId;
instance.context = context;
instance.threadId = threadId;
instance.endpoint = endpoint;
}
return instance;
}
public static ACSChatHandler getInstance() {
return instance;
}
private ACSChatHandler() {
}
public View getChatView() throws ExecutionException, InterruptedException {
CommunicationTokenRefreshOptions communicationTokenRefreshOptions =
new CommunicationTokenRefreshOptions(this::fetchToken, true);
CommunicationTokenCredential communicationTokenCredential = new CommunicationTokenCredential(communicationTokenRefreshOptions);
String userDisplayName = "Ahmed Khattab";
ChatAdapter chatAdapter = new ChatAdapterBuilder()
.endpoint(endpoint)
.credential(communicationTokenCredential)
.identity(new CommunicationUserIdentifier(userId))
.displayName(userDisplayName)
.threadId(threadId)
.build();
chatAdapter.connect(context);
ChatThreadView chatThreadView = new ChatThreadView(context, chatAdapter);
return chatThreadView;
}
private String fetchToken() {
return userToken;
}
}
Expected behavior should return chat view and can interact Screenshots If applicable, add screenshots to help explain your problem.
AzureCommunicationUILibrary (please complete the following information):
- all versions
Smartphone (please complete the following information):
- Device: [Huwawie Nova 5t with google services]
- API: Android 10
Call Logs
`E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.moj.najiz, PID: 27463
com.azure.android.communication.ui.chat.models.ChatCompositeException: App store exception while reducing state
at com.azure.android.communication.ui.chat.redux.AppStore$exceptionHandler$1$1.run(AppStore.kt:27)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/microsoft/trouterclient/registration/ISkypetokenProvider;
at com.azure.android.communication.chat.ChatAsyncClient.<init>(ChatAsyncClient.java:58)
at com.azure.android.communication.chat.ChatClientBuilder.buildAsyncClient(ChatClientBuilder.java:236)
at com.azure.android.communication.chat.ChatClientBuilder.buildClient(ChatClientBuilder.java:178)
at com.azure.android.communication.ui.chat.service.sdk.ChatSDKWrapper.createChatClient(ChatSDKWrapper.kt:358)
at com.azure.android.communication.ui.chat.service.sdk.ChatSDKWrapper.initialization(ChatSDKWrapper.kt:98)
at com.azure.android.communication.ui.chat.service.ChatService.initialize(ChatService.kt:12)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatActionHandler.initialization(ChatActionHandler.kt:181)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatActionHandler.onAction(ChatActionHandler.kt:32)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatMiddlewareImpl$invoke$1$1.invoke(ChatMiddleware.kt:40)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatMiddlewareImpl$invoke$1$1.invoke(ChatMiddleware.kt:28)
at com.azure.android.communication.ui.chat.redux.AppStore$dispatch$1.invokeSuspend(AppStore.kt:48)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:929)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.microsoft.trouterclient.registration.ISkypetokenProvider" on path: DexPathList[[zip file "/data/app/com.moj.najiz-2UfCH6U76_hwskoV1Sj5vw==/base.apk"],nativeLibraryDirectories=[/data/app/com.moj.najiz-2UfCH6U76_hwskoV1Sj5vw==/lib/arm64, /data/app/com.moj.najiz-2UfCH6U76_hwskoV1Sj5vw==/base.apk!/lib/arm64-v8a, /system/lib64, /hw_product/lib64, /system/product/lib64, /prets/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:209)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.azure.android.communication.chat.ChatAsyncClient.<init>(ChatAsyncClient.java:58)
at com.azure.android.communication.chat.ChatClientBuilder.buildAsyncClient(ChatClientBuilder.java:236)
at com.azure.android.communication.chat.ChatClientBuilder.buildClient(ChatClientBuilder.java:178)
at com.azure.android.communication.ui.chat.service.sdk.ChatSDKWrapper.createChatClient(ChatSDKWrapper.kt:358)
at com.azure.android.communication.ui.chat.service.sdk.ChatSDKWrapper.initialization(ChatSDKWrapper.kt:98)
at com.azure.android.communication.ui.chat.service.ChatService.initialize(ChatService.kt:12)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatActionHandler.initialization(ChatActionHandler.kt:181)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatActionHandler.onAction(ChatActionHandler.kt:32)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatMiddlewareImpl$invoke$1$1.invoke(ChatMiddleware.kt:40)
at com.azure.android.communication.ui.chat.redux.middleware.sdk.ChatMiddlewareImpl$invoke$1$1.invoke(ChatMiddleware.kt:28)
at com.azure.android.communication.ui.chat.redux.AppStore$dispatch$1.invokeSuspend(AppStore.kt:48)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:929)
Additional info: found this threads https://stackoverflow.com/questions/70931525/noclassdeffounderror-failed-resolution-of-lcom-microsoft-trouterclient-registr https://learn.microsoft.com/en-us/answers/questions/514705/class-duplication-error-with-calling-and-chat-sdk
but there is no solution till now is this the state right now? or should use a specific version?
@ahammer @iaulakh any update on this or how can I implement and use chat, and call together?
Hi @AhmedKhattab95,
Thank you for reporting this issue. Please find similar issue and let us know if more information is required.
Thank you.
@iaulakh it's not solved in this url also Is there is any way to make chat work with call in any release?
Hi @AhmedKhattab95 , Thank you for reporting this issue. We are aware that the call-with-chat functionality is not working properly in the demo app. We previously added the call-with-chat variant because we were spiking on a proof of concept to showcase a call with chat integration experience. We will be looking at some architectural/system improvements in upcoming quarters to put us in a better position to support call-with-chat functionality.
Please request the feature using this form to help us prioritize this work in upcoming quarters. Azure Feedback
@AhmedKhattab95
Issue with running call and chat in the same App is now resolved. Please use latest calling and chat versions. No need to exclude group: 'com.microsoft', module: 'trouter-client-android' when importing chat.