Подключение
Минимальные требования
Убедитесь, что ваш проект соответствует следующим требованиям:
- Уровень 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 настройки:
- https://github.com/square/retrofit/blob/trunk/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro - proguard retrofit
- https://raw.githubusercontent.com/square/okhttp/master/okhttp/src/main/resources/META-INF/proguard/okhttp3.pro - proguard okhttp
Обратите внимание: приведённые выше ссылки на ProGuard-файлы Retrofit и OkHttp даны только как пример.
Перед использованием обязательно сверяйтесь с актуальной версией документации к используемым версиям
Retrofit/OkHttp и с содержимым META-INF/proguard/*.pro внутри подключаемых артефактов.
Помимо Gson/Retrofit/OkHttp, SDK использует также следующие библиотеки, для которых могут потребоваться дополнительные правила ProGuard/R8:
com.squareup.picasso:picassoio.noties.markwon:markwon(и плагины)org.jsoup:jsoupcom.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.0androidx.preference:preference-ktx:1.2.1androidx.security:security-crypto-ktx:1.1.0androidx.appcompat:appcompat:1.7.1com.google.android.material:material:1.13.0androidx.swiperefreshlayout:swiperefreshlayout:1.1.0androidx.activity:activity-ktx:1.8.2androidx.sqlite:sqlite-ktx:2.4.0com.annimon:stream:1.2.1com.google.firebase:firebase-messaging:23.4.1io.noties.markwon:core:4.6.2io.noties.markwon:ext-strikethrough:4.6.2io.noties.markwon:image:4.6.2org.jsoup:jsoup:1.15.2com.writingminds:FFmpegAndroid:0.3.2com.squareup.okhttp3:okhttp:4.12.0com.squareup.okhttp3:logging-interceptor:4.12.0com.squareup.picasso:picasso:2.8com.squareup.retrofit2:retrofit:2.9.0com.squareup.retrofit2:converter-gson:2.9.0com.google.code.gson:gson:2.11.0androidx.work:work-runtime-ktx:2.9.0com.google.crypto.tink:tink-android:1.7.0com.google.android.flexbox:flexbox:3.0.0