diff --git a/build.gradle b/build.gradle index ced0327e39..dea3f313db 100644 --- a/build.gradle +++ b/build.gradle @@ -81,6 +81,7 @@ dependencies { implementation 'androidx.gridlayout:gridlayout:1.0.0' implementation 'androidx.exifinterface:exifinterface:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0' @@ -151,6 +152,8 @@ dependencies { testImplementation 'org.powermock:powermock-classloading-xstream:1.6.1' testImplementation 'androidx.test:core:1.3.0-rc03' + androidTestImplementation 'androidx.multidex:multidex:2.0.1' + androidTestImplementation 'androidx.multidex:multidex-instrumentation:2.0.0' androidTestImplementation 'com.google.dexmaker:dexmaker:1.2' androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2' androidTestImplementation ('org.assertj:assertj-core:1.7.1') { @@ -208,6 +211,7 @@ android { minSdkVersion 21 targetSdkVersion 29 + multiDexEnabled true vectorDrawables.useSupportLibrary = true project.ext.set("archivesBaseName", "Signal") diff --git a/src/org/thoughtcrime/securesms/ApplicationContext.java b/src/org/thoughtcrime/securesms/ApplicationContext.java index e1d44b7ceb..685894dcd9 100644 --- a/src/org/thoughtcrime/securesms/ApplicationContext.java +++ b/src/org/thoughtcrime/securesms/ApplicationContext.java @@ -16,18 +16,17 @@ */ package org.thoughtcrime.securesms; -import android.app.Application; +import androidx.lifecycle.DefaultLifecycleObserver; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.ProcessLifecycleOwner; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Build; import android.os.Handler; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.DefaultLifecycleObserver; -import androidx.lifecycle.LifecycleOwner; -import androidx.lifecycle.ProcessLifecycleOwner; +import androidx.multidex.MultiDexApplication; import com.google.firebase.iid.FirebaseInstanceId; @@ -116,10 +115,10 @@ import org.whispersystems.signalservice.loki.protocol.closedgroups.SharedSenderK import org.whispersystems.signalservice.loki.protocol.mentions.MentionsManager; import org.whispersystems.signalservice.loki.protocol.meta.SessionMetaProtocol; import org.whispersystems.signalservice.loki.protocol.meta.TTLUtilities; -import org.whispersystems.signalservice.loki.protocol.sessionmanagement.SessionManagementProtocol; -import org.whispersystems.signalservice.loki.protocol.sessionmanagement.SessionManagementProtocolDelegate; import org.whispersystems.signalservice.loki.protocol.shelved.multidevice.DeviceLink; import org.whispersystems.signalservice.loki.protocol.shelved.multidevice.MultiDeviceProtocol; +import org.whispersystems.signalservice.loki.protocol.sessionmanagement.SessionManagementProtocol; +import org.whispersystems.signalservice.loki.protocol.sessionmanagement.SessionManagementProtocolDelegate; import org.whispersystems.signalservice.loki.protocol.shelved.syncmessages.SyncMessagesProtocol; import java.io.File; @@ -145,10 +144,11 @@ import static nl.komponents.kovenant.android.KovenantAndroid.stopKovenant; * * @author Moxie Marlinspike */ -public class ApplicationContext extends Application implements DependencyInjector, DefaultLifecycleObserver, LokiP2PAPIDelegate, +public class ApplicationContext extends MultiDexApplication implements DependencyInjector, DefaultLifecycleObserver, LokiP2PAPIDelegate, SessionManagementProtocolDelegate, SharedSenderKeysImplementationDelegate { private static final String TAG = ApplicationContext.class.getSimpleName(); + private final static int OK_HTTP_CACHE_SIZE = 10 * 1024 * 1024; // 10 MB private ExpiringMessageManager expiringMessageManager; private TypingStatusRepository typingStatusRepository;