Installation
Repository
Add both the Chatvisor repository and jcenter
to your top level build.gradle
(Gradle) or pom.xml
(Maven) file.
The address of the Chatvisor repository is available upon request
allprojects {
repositories {
...
jcenter()
maven { url '<your url>' }
}
}
<repositories>
...
<repository>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
<repository>
<id>chatvisor-android</id>
<name>Chatvisor Android</name>
<url>your-url</url>
</repository>
</repositories>
Library
Now you can add the library itself to the dependeny section of the module of your choice:
dependencies {
...
implementation('com.chatvisor.android:liveview:1.2.16@aar') {
transitive = true
}
}
<dependencies>
...
<dependency>
<groupId>com.chatvisor.android</groupId>
<artifactId>liveview</artifactId>
<version>1.2.16</version>
<type>aar</type>
</dependency>
</dependencies>
There are two different versions available:
- liveview: Without conferencing
- liveview-c: With conferencing
Manual download
Download the aar file for your desired version directly:
https://your-url/com/chatvisor/android/liveview/1.2.16/liveview-1.2.16.aar
or
https://your-url/com/chatvisor/android/liveview-c/1.2.16/liveview-c-1.2.16.aar
Put the file is a directory called libs
(or any other name of your choice) in the root folder of your app.
Add a repository for the create folder to your top level build.gradle
file:
allprojects {
repositories {
...
flatDir {
dirs 'libs'
}
}
}
Then include the library into the module of your choice:
dependencies {
compile(name:'liveview-1.2.16', ext:'aar')
}
or
dependencies {
compile(name:'liveview-c-1.2.16', ext:'aar')
}
ProGuard
If you use ProGuard to minify and obfuscate your application, add the following rules:
## Library
-keep class com.chatvisor.** {*;}
-dontwarn com.chatvisor.**
-dontwarn okhttp3.**
## Dependencies
### Protocol Buffers
-keep class com.google.**
-dontwarn com.google.**
### Moshi (https://github.com/square/moshi/blob/master/moshi/src/main/resources/META-INF/proguard/moshi.pro)
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
-keepclasseswithmembers class * {
@com.squareup.moshi.* <methods>;
}
-keep @com.squareup.moshi.JsonQualifier interface *
# Enum field names are used by the integrated EnumJsonAdapter.
# values() is synthesized by the Kotlin compiler and is used by EnumJsonAdapter indirectly
# Annotate enums with @JsonClass(generateAdapter = false) to use them with Moshi.
-keepclassmembers @com.squareup.moshi.JsonClass class * extends java.lang.Enum {
<fields>;
**[] values();
}
### Retrofit (https://github.com/square/retrofit/blob/master/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro)
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
# EnclosingMethod is required to use InnerClasses.
-keepattributes Signature, InnerClasses, EnclosingMethod
# Retrofit does reflection on method and parameter annotations.
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
# Retain service method parameters when optimizing.
-keepclassmembers,allowshrinking,allowobfuscation interface * {
@retrofit2.http.* <methods>;
}
# Ignore annotation used for build tooling.
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
# Ignore JSR 305 annotations for embedding nullability information.
-dontwarn javax.annotation.**
# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
-dontwarn kotlin.Unit
# Top-level functions that can only be used by Kotlin.
-dontwarn retrofit2.KotlinExtensions
-dontwarn retrofit2.KotlinExtensions$*
# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>
### Kotlin
-keep class kotlin.**
-dontwarn kotlin.**
Additional steps when using liveview-c
In order to use Chatvisor conferencing, you have to add the Jitsi-Meet repository to your top level build.gradle
(Gradle) or pom.xml
(Maven) file.
allprojects {
repositories {
...
jcenter()
maven { url '<your url>' }
maven { url 'https://github.com/jitsi/jitsi-maven-repository/raw/master/releases' }
}
}
<project>
...
<repositories>
<repository>
<id>jitsi</id>
<url>https://github.com/jitsi/jitsi-maven-repository/raw/master/releases</url>
</repository>
</repositories>
...
</project>
If you use ProGuard you have to add rules for Jitsi-Meet: proguard-rules.pro