restructure build setup
14
annotation-processor/build.gradle
Normal file
|
@ -0,0 +1,14 @@
|
|||
apply plugin: "java-library"
|
||||
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
}
|
||||
dependencies {
|
||||
|
||||
implementation project(':annotation')
|
||||
|
||||
annotationProcessor 'com.google.auto.service:auto-service:1.0.1'
|
||||
compileOnly 'com.google.auto.service:auto-service:1.0.1'
|
||||
|
||||
}
|
6
annotation/build.gradle
Normal file
|
@ -0,0 +1,6 @@
|
|||
apply plugin: "java-library"
|
||||
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
}
|
127
app/build.gradle
Normal file
|
@ -0,0 +1,127 @@
|
|||
apply plugin: "com.android.application"
|
||||
apply plugin: "androidx.navigation.safeargs"
|
||||
apply plugin: "com.diffplug.spotless"
|
||||
|
||||
|
||||
android {
|
||||
namespace 'im.conversations.android'
|
||||
compileSdk 33
|
||||
|
||||
defaultConfig {
|
||||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode 1
|
||||
versionName "3.0.0-alpha"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
}
|
||||
buildFeatures {
|
||||
dataBinding true
|
||||
}
|
||||
flavorDimensions "product"
|
||||
productFlavors {
|
||||
quicksy {
|
||||
dimension "product"
|
||||
applicationId = "im.quicksy.client"
|
||||
|
||||
def appName = "Quicksy"
|
||||
|
||||
resValue "string", "applicationId", applicationId
|
||||
resValue "string", "app_name", appName
|
||||
buildConfigField "String", "APP_NAME", "\"$appName\""
|
||||
}
|
||||
conversations {
|
||||
dimension "product"
|
||||
applicationId "im.conversations.android"
|
||||
|
||||
def appName = "Conversations"
|
||||
|
||||
resValue "string", "applicationId", applicationId
|
||||
resValue "string", "app_name", appName
|
||||
buildConfigField "String", "APP_NAME", "\"$appName\""
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
spotless {
|
||||
java {
|
||||
target '**/*.java'
|
||||
googleJavaFormat('1.8').aosp().reflowLongStrings()
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(':annotation')
|
||||
annotationProcessor project(':annotation-processor')
|
||||
|
||||
// make Java 8 API available
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2'
|
||||
|
||||
|
||||
// Jetpack / AndroidX libraries
|
||||
implementation "androidx.appcompat:appcompat:$rootProject.ext.appcompatVersion"
|
||||
|
||||
implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.ext.lifecycleVersion"
|
||||
implementation "androidx.navigation:navigation-fragment:$rootProject.ext.navVersion"
|
||||
implementation "androidx.navigation:navigation-ui:$rootProject.ext.navVersion"
|
||||
|
||||
implementation "androidx.room:room-runtime:$rootProject.ext.roomVersion"
|
||||
implementation "androidx.room:room-guava:$rootProject.ext.roomVersion"
|
||||
annotationProcessor "androidx.room:room-compiler:$rootProject.ext.roomVersion"
|
||||
|
||||
implementation "androidx.security:security-crypto:1.0.0"
|
||||
|
||||
|
||||
// Google material design libraries
|
||||
implementation "com.google.android.material:material:$rootProject.ext.material"
|
||||
|
||||
|
||||
// crypto libraries
|
||||
implementation 'org.whispersystems:signal-protocol-java:2.6.2'
|
||||
implementation 'org.conscrypt:conscrypt-android:2.5.2'
|
||||
implementation 'org.bouncycastle:bcmail-jdk15on:1.64'
|
||||
|
||||
|
||||
// XMPP Address library
|
||||
implementation 'org.jxmpp:jxmpp-jid:1.0.3'
|
||||
|
||||
// DNS library (XMPP needs to resolve SRV records)
|
||||
implementation 'de.measite.minidns:minidns-hla:0.2.4'
|
||||
|
||||
// Guava
|
||||
implementation 'com.google.guava:guava:31.1-android'
|
||||
|
||||
// HTTP library
|
||||
implementation "com.squareup.okhttp3:okhttp:4.10.0"
|
||||
|
||||
// JSON parser
|
||||
implementation 'com.google.code.gson:gson:2.10.1'
|
||||
|
||||
// logging framework + logging api
|
||||
implementation 'org.slf4j:slf4j-api:1.7.36'
|
||||
implementation 'com.github.tony19:logback-android:2.0.1'
|
||||
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
testImplementation 'org.robolectric:robolectric:4.9.2'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
||||
androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.ext.espressoVersion"
|
||||
}
|
21
app/proguard-rules.pro
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
92
app/src/main/AndroidManifest.xml
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.READ_PROFILE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.location"
|
||||
android:required="false" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.location.gps"
|
||||
android:required="false" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.location.network"
|
||||
android:required="false" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.camera"
|
||||
android:required="false" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.camera.autofocus"
|
||||
android:required="false" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.microphone"
|
||||
android:required="false" />
|
||||
|
||||
<queries>
|
||||
<package android:name="org.torproject.android" />
|
||||
<intent>
|
||||
<action android:name="eu.siacs.conversations.location.request" />
|
||||
</intent>
|
||||
<intent>
|
||||
<action android:name="eu.siacs.conversations.location.show" />
|
||||
</intent>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<data android:mimeType="resource/folder" />
|
||||
</intent>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
</intent>
|
||||
<intent>
|
||||
<action android:name="org.unifiedpush.android.connector.MESSAGE"/>
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
|
||||
|
||||
|
||||
<application
|
||||
android:name="im.conversations.android.Conversations"
|
||||
android:allowBackup="true"
|
||||
android:appCategory="social"
|
||||
android:icon="@mipmap/new_launcher"
|
||||
android:roundIcon="@mipmap/new_launcher_round"
|
||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||
android:fullBackupContent="@xml/backup_rules"
|
||||
android:label="@string/app_name"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.Conversations3"
|
||||
tools:targetApi="31">
|
||||
|
||||
<activity
|
||||
android:name="im.conversations.android.ui.activity.SetupActivity"
|
||||
android:exported="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
|
@ -1,7 +1,11 @@
|
|||
package im.conversations.android;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
|
||||
import com.google.android.material.color.DynamicColors;
|
||||
import im.conversations.android.dns.Resolver;
|
||||
import im.conversations.android.xmpp.ConnectionPool;
|
||||
import java.security.SecureRandom;
|
||||
import java.security.Security;
|
||||
|
@ -23,7 +27,9 @@ public class Conversations extends Application {
|
|||
} catch (final Throwable throwable) {
|
||||
LOGGER.warn("Could not initialize security provider", throwable);
|
||||
}
|
||||
Resolver.init(this);
|
||||
ConnectionPool.getInstance(this).reconfigure();
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); //For night mode theme
|
||||
DynamicColors.applyToActivitiesIfAvailable(this);
|
||||
}
|
||||
}
|