lcreely | 2022-03-30 08:36:43 UTC | #1
Is it still possible to use the SDK on Android, when trying to install the library using maven from the link provided here: https://developer.genesys.cloud/api/rest/client-libraries/java/#using-the-sdk.
I get the following message: Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Could not resolve com.mypurecloud:platform-client-v2:146.0.2.
build.gradle file:
plugins { Preformatted text`id 'com.android.application' }
android { compileSdk 32
defaultConfig { applicationId "com.example.test" minSdk 30 targetSdk 32 versionCode 1 versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION18 targetCompatibility JavaVersion.VERSION18 } }
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'com.mypurecloud:platform-client-v2:146.0.2' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
I have also downloaded the jar library and added it that way, but I get a lot of fatal exceptions. For example I get java.lang.NoClassDefFoundError: Failed resolution of: Lcom/fasterxml/jackson/databind/ObjectMapper; when executing: ApiClient apiClient = ApiClient.Builder.standard().withBasePath(region).build();
Are there any tutorials on how to set up the SDK on Android Studio?
anon11147534 | 2022-03-30 08:39:41 UTC | #2
Hi,
We have updated some of the Java SDK dependencies in last few months and that might have caused some incompatiblities with Android. We'll look into this and issue a fix for Android.
I'm not certain what version the changes were added in but an older version such as 100.x.x should be more likely to work with Android.
lcreely | 2022-03-30 22:44:50 UTC | #3
Hello,
I was able to to implement 100.x.x but I get a lot of fatal exceptions when trying to run anything Are there any resources available on how to use the SDK with Android?
build.gradle:
plugins { id 'com.android.application' }
android {
packagingOptions { pickFirst "META-INF/LICENSE" pickFirst "META-INF/*.properties" pickFirst "META-INF/AL2.0" pickFirst "META-INF/LGPL2.1" pickFirst "META-INF/DEPENDENCIES" pickFirst "META-INF/LICENSE.md" pickFirst "META-INF/NOTICE.md" pickFirst "META-INF/INDEX.LIST" }
compileSdk 32
defaultConfig { applicationId "com.example.test" minSdk 30 targetSdk 32 versionCode 1 versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION18 targetCompatibility JavaVersion.VERSION18 } }
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation ('com.mypurecloud:platform-client-v2:100.0.0') implementation 'net.sourceforge.htmlunit:htmlunit:2.15' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
configurations { all { exclude group: "com.google.guava" exclude group: "javax.xml.bind" } }
MainActivity:
package com.example.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.mypurecloud.sdk.v2.ApiClient; import com.mypurecloud.sdk.v2.ApiException; import com.mypurecloud.sdk.v2.Configuration; import com.mypurecloud.sdk.v2.api.UsersApi; import com.mypurecloud.sdk.v2.model.User; import com.mypurecloud.sdk.v2.model.UserMe; import com.mypurecloud.sdk.v2.PureCloudRegionHosts;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
String clientId = ""; String clientSecret = "";
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
PureCloudRegionHosts region = PureCloudRegionHosts.euwest1; ApiClient apiClient = ApiClient.Builder.standard().withBasePath(region).build();
} }
Fatal Exception(When App Opens):
2022-03-30 23:22:23.929 4036-4036/com.example.test E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.test, PID: 4036 java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar!classes4.dex) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144) at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:966) at com.mypurecloud.sdk.v2.connector.apache.ApacheHttpClientConnectorProvider.create(ApacheHttpClientConnectorProvider.java:62) at com.mypurecloud.sdk.v2.connector.ApiClientConnectorLoader.load(ApiClientConnectorLoader.java:22) at com.mypurecloud.sdk.v2.ApiClient.buildHttpConnector(ApiClient.java:167) at com.mypurecloud.sdk.v2.ApiClient.<init>(ApiClient.java:127) at com.mypurecloud.sdk.v2.ApiClient.<init>(ApiClient.java:64) at com.mypurecloud.sdk.v2.ApiClient$Builder.build(ApiClient.java:833) at com.example.test.MainActivity.onCreate(MainActivity.java:30) at android.app.Activity.performCreate(Activity.java:7994) at android.app.Activity.performCreate(Activity.java:7978) 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) 2022-03-30 23:30:02.336 4207-4207/com.example.test E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.test, PID: 4207 java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar!classes4.dex) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144) at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:966) at com.mypurecloud.sdk.v2.connector.apache.ApacheHttpClientConnectorProvider.create(ApacheHttpClientConnectorProvider.java:62) at com.mypurecloud.sdk.v2.connector.ApiClientConnectorLoader.load(ApiClientConnectorLoader.java:22) at com.mypurecloud.sdk.v2.ApiClient.buildHttpConnector(ApiClient.java:167) at com.mypurecloud.sdk.v2.ApiClient.<init>(ApiClient.java:127) at com.mypurecloud.sdk.v2.ApiClient.<init>(ApiClient.java:64) at com.mypurecloud.sdk.v2.ApiClient$Builder.build(ApiClient.java:833) at com.example.test.MainActivity.onCreate(MainActivity.java:30) at android.app.Activity.performCreate(Activity.java:7994) at android.app.Activity.performCreate(Activity.java:7978) 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) 2022-03-30 23:40:18.528 4294-4294/com.example.test E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.test, PID: 4294 java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar!classes4.dex) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144) at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:966) at com.mypurecloud.sdk.v2.connector.apache.ApacheHttpClientConnectorProvider.create(ApacheHttpClientConnectorProvider.java:62) at com.mypurecloud.sdk.v2.connector.ApiClientConnectorLoader.load(ApiClientConnectorLoader.java:22) at com.mypurecloud.sdk.v2.ApiClient.buildHttpConnector(ApiClient.java:167) at com.mypurecloud.sdk.v2.ApiClient.<init>(ApiClient.java:127) at com.mypurecloud.sdk.v2.ApiClient.<init>(ApiClient.java:64) at com.mypurecloud.sdk.v2.ApiClient$Builder.build(ApiClient.java:833) at com.example.test.MainActivity.onCreate(MainActivity.java:30) at android.app.Activity.performCreate(Activity.java:7994) at android.app.Activity.performCreate(Activity.java:7978) 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)
anon11147534 | 2022-03-31 13:35:40 UTC | #4
Hi,
I'm sorry to hear that. As far as I'm aware, the only android specific documentation is available in the README: https://github.com/MyPureCloud/platform-client-sdk-java#android-support
This is an area we will aim to improve as we carry out a refresh of the SDKs.
anon11147534 | 2022-04-04 10:21:48 UTC | #5
Have you tried using the OkHttpClientConnectorProvider? It is recommended for Android: https://github.com/MyPureCloud/platform-client-sdk-java#setting-the-http-connector. The exceptions you are getting appear to be coming from the Apache HTTP client.
system | 2022-05-05 10:22:46 UTC | #6
This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.
This post was migrated from the old Developer Forum.
ref: 14078