Перейти к основному содержимому
Версия: 5.16.0

Подключение

Минимальные требования

Убедитесь, что ваш проект соответствует следующим требованиям:

  • Уровень API 21 (Lollipop) или выше.
  • Android 5.0 или выше
  • Используется Jetpack (AndroidX), который включает в себя следующие версии:
    • com.android.tools.build:gradle v8.6.1 или новее
    • Gradle Wrapper 8.x, совместимый с используемой версией Android Gradle Plugin
    • targetSdk 35 или новее
    • compileSdkVersion 35 или новее
    • kotlin 1.9.10 или новее

Подключение библиотеки edna Chat Center Android

Для работы чата необходимо добавить зависимости:

allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://maven-pub.edna.ru/repository/maven-public/' }
}
}
Рекомендуется вынести номер версии SDK в отдельную переменную Gradle, чтобы упростить обновление:

def edna_chatcenter_version = "5.16.0"

releaseImplementation "edna.chatcenter.ui.android:release:$edna_chatcenter_version"
debugImplementation "edna.chatcenter.ui.android:debug:$edna_chatcenter_version"

## Настройки обфускации

Для корректной работы рекомендуется добавить в ProGuard следуюшие строки:

```kotlin
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**

# Application classes that will be serialized/deserialized over Gson
-keep class edna.chatcenter.** { *; }

# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}

Кроме того, SDK использует дополнительные библиотеки, для которых также рекомендуется добавить правила ProGuard/R8:

# Picasso (загрузка изображений)
-dontwarn com.squareup.picasso.**
-keep class com.squareup.picasso.** { *; }

# Markwon (рендеринг Markdown)
-dontwarn io.noties.markwon.**
-keep class io.noties.markwon.** { *; }

# Jsoup (парсинг HTML/OpenGraph)
-dontwarn org.jsoup.**
-keep class org.jsoup.** { *; }

# FFmpeg (конвертация аудио)
-dontwarn com.github.hiteshsondhi88.libffmpeg.**
-keep class com.github.hiteshsondhi88.libffmpeg.** { *; }

# WorkManager (фоновые задачи и уведомления)
-dontwarn androidx.work.**
-keepclassmembers class * extends androidx.work.ListenableWorker {
<init>(android.content.Context, androidx.work.WorkerParameters);
}

SDK также использует Retrofit и OKHTTP. Необходимо добавить их proguard настройки:

Обратите внимание: приведённые выше ссылки на ProGuard-файлы Retrofit и OkHttp даны только как пример. Перед использованием обязательно сверяйтесь с актуальной версией документации к используемым версиям Retrofit/OkHttp и с содержимым META-INF/proguard/*.pro внутри подключаемых артефактов.

Помимо Gson/Retrofit/OkHttp, SDK использует также следующие библиотеки, для которых могут потребоваться дополнительные правила ProGuard/R8:

  • com.squareup.picasso:picasso
  • io.noties.markwon:markwon (и плагины)
  • org.jsoup:jsoup
  • com.writingminds:FFmpegAndroid (внутри — com.github.hiteshsondhi88.libffmpeg)
  • androidx.work:work-runtime-ktx

Ниже приведён пример базовых правил, которые можно использовать как отправную точку. Обязательно сверяйтесь с актуальными рекомендациями в документации библиотек перед тем, как копировать их в свой proguard-rules.pro:

# Picasso
-dontwarn com.squareup.picasso.**
-keep class com.squareup.picasso.** { *; }

# Markwon
-dontwarn io.noties.markwon.**
-keep class io.noties.markwon.** { *; }

# Jsoup
-dontwarn org.jsoup.**
-keep class org.jsoup.** { *; }

# WorkManager
-keep class androidx.work.ListenableWorker { *; }
-keepclassmembers class * extends androidx.work.ListenableWorker { *; }

# FFmpeg (com.writingminds:FFmpegAndroid)
-dontwarn com.github.hiteshsondhi88.libffmpeg.**
-keep class com.github.hiteshsondhi88.libffmpeg.** { *; }

В зависимости от вашей конфигурации shrinker-а и других используемых библиотек, этот список может потребовать доработки. Рекомендуется сравнивать ваши правила с теми, что используются в демо-приложении, и с примерами из официальной документации библиотек.

осторожно

В build.gradle (на уровне приложения) установите параметр debuggable в false для релизной конфигурации.

Иначе это может привести к дополнительным падениям

Используемые библиотеки

SDK использует несколько библиотек для своей работы. Пожалуйста, не используйте версии библиотек ниже указанных.

  • androidx.core:core-ktx:1.12.0
  • androidx.preference:preference-ktx:1.2.1
  • androidx.security:security-crypto-ktx:1.1.0
  • androidx.appcompat:appcompat:1.7.1
  • com.google.android.material:material:1.13.0
  • androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
  • androidx.activity:activity-ktx:1.8.2
  • androidx.sqlite:sqlite-ktx:2.4.0
  • com.annimon:stream:1.2.1
  • com.google.firebase:firebase-messaging:23.4.1
  • io.noties.markwon:core:4.6.2
  • io.noties.markwon:ext-strikethrough:4.6.2
  • io.noties.markwon:image:4.6.2
  • org.jsoup:jsoup:1.15.2
  • com.writingminds:FFmpegAndroid:0.3.2
  • com.squareup.okhttp3:okhttp:4.12.0
  • com.squareup.okhttp3:logging-interceptor:4.12.0
  • com.squareup.picasso:picasso:2.8
  • com.squareup.retrofit2:retrofit:2.9.0
  • com.squareup.retrofit2:converter-gson:2.9.0
  • com.google.code.gson:gson:2.11.0
  • androidx.work:work-runtime-ktx:2.9.0
  • com.google.crypto.tink:tink-android:1.7.0
  • com.google.android.flexbox:flexbox:3.0.0