summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyberta <cyberta@riseup.net>2022-08-08 23:30:32 +0000
committercyberta <cyberta@riseup.net>2022-08-08 23:30:32 +0000
commit8e0fa913e098087d73f8ce63888b2213c2c63741 (patch)
tree1f5865a9e30286f726ee0751e535572f3c4fee2d
parent8d06c86a2fedf7a758801ac0b029b53b54977bd7 (diff)
parent6d705263bf0fd616926d2c64ada98e2ee7740024 (diff)
Merge branch 'update_dependencies' into 'master'
update API version and dependencies Closes #9057 See merge request leap/bitmask_android!206
-rw-r--r--app/build.gradle36
-rw-r--r--app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java6
-rw-r--r--app/src/main/AndroidManifest.xml7
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java3
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/BitmaskApp.java46
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java30
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java9
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java11
m---------bitmaskcore0
-rw-r--r--build.gradle6
-rw-r--r--docker/android-emulator/Dockerfile6
-rw-r--r--docker/android-sdk/Dockerfile14
-rw-r--r--gradle/wrapper/gradle-wrapper.properties6
m---------ics-openvpn0
-rwxr-xr-xscripts/build_deps.sh2
m---------tor-android0
17 files changed, 76 insertions, 108 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 9bfade34..239190fd 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -4,9 +4,9 @@ import java.util.regex.Pattern
apply plugin: 'com.android.application'
android {
- compileSdkVersion 30
+ compileSdkVersion 31
ndkVersion "21.4.7075529"
- buildToolsVersion '30.0.3'
+ buildToolsVersion '31.0.0'
compileOptions {
targetCompatibility 1.8
@@ -25,7 +25,7 @@ android {
versionCode 164000
versionName "1.1.5RC2"
minSdkVersion 16
- targetSdkVersion 30
+ targetSdkVersion 31
vectorDrawables.useSupportLibrary = true
buildConfigField 'boolean', 'openvpn3', 'false'
@@ -404,9 +404,7 @@ dependencies {
//TODO: remove that library
androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3'
testImplementation 'org.json:json:20180813'
- debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.2'
- releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.2'
- betaImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.2'
+ debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
annotationProcessor 'com.squareup.dagger:dagger-compiler:1.2.2'
implementation 'com.jakewharton:butterknife:10.2.1'
@@ -416,15 +414,15 @@ dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.squareup.okhttp3:okhttp:3.12.12'
implementation 'androidx.legacy:legacy-support-core-utils:1.0.0'
- implementation 'androidx.annotation:annotation:1.1.0'
+ implementation 'androidx.annotation:annotation:1.4.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'com.google.android.material:material:1.2.1'
- implementation 'androidx.fragment:fragment:1.2.5'
- implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
+ implementation 'com.google.android.material:material:1.6.1'
+ implementation 'androidx.fragment:fragment:1.5.1'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
+ implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'
@@ -486,23 +484,11 @@ android.applicationVariants.all { variant ->
}
}
-
-// Ensure the no-op dependency is always used in JVM tests.
-configurations.all { config ->
- if (config.name.contains('UnitTest')) {
- config.resolutionStrategy.eachDependency { details ->
- if (details.requested.group == 'com.squareup.leakcanary' && details.requested.name == 'leakcanary-android') {
- details.useTarget(group: details.requested.group, name: 'leakcanary-android-no-op', version: details.requested.version)
- }
- }
- }
-}
-
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
- compileSdkVersion 30
+ compileSdkVersion 31
}
}
}
diff --git a/app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java b/app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java
index 336802c6..687fc66a 100644
--- a/app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java
+++ b/app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java
@@ -33,6 +33,7 @@ import se.leap.bitmaskclient.R;
import static android.content.Intent.CATEGORY_DEFAULT;
import static se.leap.bitmaskclient.appUpdate.DownloadBroadcastReceiver.ACTION_DOWNLOAD;
+import static se.leap.bitmaskclient.base.utils.ConfigHelper.getPendingIntentFlags;
public class DownloadNotificationManager {
private Context context;
@@ -130,12 +131,13 @@ public class DownloadNotificationManager {
private PendingIntent getDownloadIntent() {
Intent downloadIntent = new Intent(context, DownloadBroadcastReceiver.class);
downloadIntent.setAction(ACTION_DOWNLOAD);
- return PendingIntent.getBroadcast(context, 0, downloadIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+
+ return PendingIntent.getBroadcast(context, 0, downloadIntent, getPendingIntentFlags());
}
private PendingIntent getInstallIntent() {
Intent installIntent = new Intent(context, InstallActivity.class);
- return PendingIntent.getActivity(context, 0, installIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getActivity(context, 0, installIntent, getPendingIntentFlags());
}
public void cancelNotifications() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 75b166d9..6a9de68d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -41,6 +41,7 @@
android:theme="@style/BitmaskTheme">
<service
android:name="de.blinkt.openvpn.core.OpenVPNService"
+ android:exported="false"
android:permission="android.permission.BIND_VPN_SERVICE">
<intent-filter>
<action android:name="android.net.VpnService" />
@@ -48,6 +49,7 @@
</service>
<service
android:name=".eip.VoidVpnService"
+ android:exported="false"
android:permission="android.permission.BIND_VPN_SERVICE">
<intent-filter>
<action android:name="android.net.VpnService" />
@@ -62,7 +64,8 @@
<receiver
android:name=".base.OnBootReceiver"
android:enabled="true"
- android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
+ android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
+ android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
@@ -79,6 +82,7 @@
android:label="@string/app_name"
android:launchMode="singleTop"
android:theme="@style/SplashTheme"
+ android:exported="true"
>
<intent-filter android:label="@string/app_name">
@@ -126,6 +130,7 @@
android:icon="@drawable/vpn_disconnected"
android:label="@string/qs_title"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
+ android:exported="true"
android:value="true">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
diff --git a/app/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java b/app/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java
index 2b0c785e..219c1394 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java
@@ -13,6 +13,7 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.os.Handler;
+import android.os.Looper;
import android.preference.PreferenceManager;
import se.leap.bitmaskclient.R;
@@ -133,7 +134,7 @@ public class DeviceStateReceiver extends BroadcastReceiver implements ByteCountL
trafficdata = new LinkedList<>();
mManagement = management;
mManagement.setPauseCallback(this);
- mDisconnectHandler = new Handler();
+ mDisconnectHandler = new Handler(Looper.getMainLooper());
}
diff --git a/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java b/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
index 00147828..0edfeaeb 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
@@ -457,7 +457,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
}
// atuo detection of proxy
- if (proxyType == Connection.ProxyType.NONE) {
+ if (proxyType == Connection.ProxyType.NONE && mProfile != null) {
SocketAddress proxyaddr = ProxyDetection.detectProxy(mProfile);
if (proxyaddr instanceof InetSocketAddress) {
InetSocketAddress isa = (InetSocketAddress) proxyaddr;
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/BitmaskApp.java b/app/src/main/java/se/leap/bitmaskclient/base/BitmaskApp.java
index 3f73e49d..828ef27d 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/BitmaskApp.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/BitmaskApp.java
@@ -17,6 +17,15 @@
package se.leap.bitmaskclient.base;
+import static android.content.Intent.CATEGORY_DEFAULT;
+import static se.leap.bitmaskclient.appUpdate.DownloadBroadcastReceiver.ACTION_DOWNLOAD;
+import static se.leap.bitmaskclient.appUpdate.DownloadServiceCommand.CHECK_VERSION_FILE;
+import static se.leap.bitmaskclient.appUpdate.DownloadServiceCommand.DOWNLOAD_UPDATE;
+import static se.leap.bitmaskclient.base.models.Constants.BROADCAST_DOWNLOAD_SERVICE_EVENT;
+import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES;
+import static se.leap.bitmaskclient.base.utils.ConfigHelper.isCalyxOSWithTetheringSupport;
+import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getSavedProviderFromSharedPreferences;
+
import android.content.Context;
import android.content.IntentFilter;
import android.content.SharedPreferences;
@@ -25,27 +34,14 @@ import androidx.appcompat.app.AppCompatDelegate;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.multidex.MultiDexApplication;
-import com.squareup.leakcanary.LeakCanary;
-import com.squareup.leakcanary.RefWatcher;
-
import se.leap.bitmaskclient.BuildConfig;
import se.leap.bitmaskclient.appUpdate.DownloadBroadcastReceiver;
-import se.leap.bitmaskclient.eip.EipSetupObserver;
import se.leap.bitmaskclient.base.models.ProviderObservable;
-import se.leap.bitmaskclient.tethering.TetheringStateManager;
import se.leap.bitmaskclient.base.utils.PRNGFixes;
-import se.leap.bitmaskclient.tor.TorNotificationManager;
+import se.leap.bitmaskclient.eip.EipSetupObserver;
+import se.leap.bitmaskclient.tethering.TetheringStateManager;
import se.leap.bitmaskclient.tor.TorStatusObservable;
-import static android.content.Intent.CATEGORY_DEFAULT;
-import static se.leap.bitmaskclient.base.models.Constants.BROADCAST_DOWNLOAD_SERVICE_EVENT;
-import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES;
-import static se.leap.bitmaskclient.appUpdate.DownloadBroadcastReceiver.ACTION_DOWNLOAD;
-import static se.leap.bitmaskclient.appUpdate.DownloadServiceCommand.CHECK_VERSION_FILE;
-import static se.leap.bitmaskclient.appUpdate.DownloadServiceCommand.DOWNLOAD_UPDATE;
-import static se.leap.bitmaskclient.base.utils.ConfigHelper.isCalyxOSWithTetheringSupport;
-import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getSavedProviderFromSharedPreferences;
-
/**
* Created by cyberta on 24.10.17.
*/
@@ -53,7 +49,6 @@ import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getSavedProvider
public class BitmaskApp extends MultiDexApplication {
private final static String TAG = BitmaskApp.class.getSimpleName();
- private RefWatcher refWatcher;
private ProviderObservable providerObservable;
private DownloadBroadcastReceiver downloadBroadcastReceiver;
private TorStatusObservable torStatusObservable;
@@ -62,12 +57,6 @@ public class BitmaskApp extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
- if (LeakCanary.isInAnalyzerProcess(this)) {
- // This process is dedicated to LeakCanary for heap analysis.
- // You should not init your app in this process.
- return;
- }
- refWatcher = LeakCanary.install(this);
// Normal app init code...*/
PRNGFixes.apply();
SharedPreferences preferences = getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
@@ -89,17 +78,4 @@ public class BitmaskApp extends MultiDexApplication {
LocalBroadcastManager.getInstance(this.getApplicationContext()).registerReceiver(downloadBroadcastReceiver, intentFilter);
}
}
-
- /**
- * Use this method to get a RefWatcher object that checks for memory leaks in the given context.
- * Call refWatcher.watch(this) to check if all references get garbage collected.
- * @param context
- * @return the RefWatcher object
- */
- public static RefWatcher getRefWatcher(Context context) {
- BitmaskApp application = (BitmaskApp) context.getApplicationContext();
- return application.refWatcher;
- }
-
-
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java
index c5593bf7..cdfee7b2 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/NavigationDrawerFragment.java
@@ -17,6 +17,20 @@
package se.leap.bitmaskclient.base.fragments;
+import static android.content.Context.MODE_PRIVATE;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+import static se.leap.bitmaskclient.base.models.Constants.DONATION_URL;
+import static se.leap.bitmaskclient.base.models.Constants.ENABLE_DONATION;
+import static se.leap.bitmaskclient.base.models.Constants.PREFERRED_CITY;
+import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_KEY;
+import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_SWITCH_PROVIDER;
+import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES;
+import static se.leap.bitmaskclient.base.utils.ConfigHelper.isDefaultBitmask;
+import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getPreferredCity;
+import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getSaveBattery;
+import static se.leap.bitmaskclient.base.utils.PreferenceHelper.saveBattery;
+
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -56,21 +70,6 @@ import se.leap.bitmaskclient.eip.EipStatus;
import se.leap.bitmaskclient.providersetup.ProviderListActivity;
import se.leap.bitmaskclient.tethering.TetheringObservable;
-import static android.content.Context.MODE_PRIVATE;
-import static android.view.View.GONE;
-import static android.view.View.VISIBLE;
-import static se.leap.bitmaskclient.base.BitmaskApp.getRefWatcher;
-import static se.leap.bitmaskclient.base.models.Constants.DONATION_URL;
-import static se.leap.bitmaskclient.base.models.Constants.ENABLE_DONATION;
-import static se.leap.bitmaskclient.base.models.Constants.PREFERRED_CITY;
-import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_KEY;
-import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_SWITCH_PROVIDER;
-import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES;
-import static se.leap.bitmaskclient.base.utils.ConfigHelper.isDefaultBitmask;
-import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getPreferredCity;
-import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getSaveBattery;
-import static se.leap.bitmaskclient.base.utils.PreferenceHelper.saveBattery;
-
/**
* Fragment used for managing interactions for and presentation of a navigation drawer.
* See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction">
@@ -433,7 +432,6 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
@Override
public void onDestroy() {
super.onDestroy();
- getRefWatcher(getActivity()).watch(this);
preferences.unregisterOnSharedPreferenceChangeListener(this);
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
index dbcb55b0..d65f6b52 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
@@ -18,6 +18,7 @@ package se.leap.bitmaskclient.base.utils;
import static se.leap.bitmaskclient.base.models.Constants.DEFAULT_BITMASK;
+import android.app.PendingIntent;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
@@ -312,4 +313,12 @@ public class ConfigHelper {
return BuildConfig.obfsvpn_use_kcp;
}
}
+
+ public static int getPendingIntentFlags() {
+ int flags = PendingIntent.FLAG_CANCEL_CURRENT;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ flags |= PendingIntent.FLAG_IMMUTABLE;
+ }
+ return flags;
+ }
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java b/app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java
index a869210e..31893fb1 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java
@@ -55,6 +55,7 @@ import static se.leap.bitmaskclient.base.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
import static se.leap.bitmaskclient.base.models.Constants.ASK_TO_CANCEL_VPN;
import static se.leap.bitmaskclient.base.models.Constants.EIP_ACTION_START;
import static se.leap.bitmaskclient.base.models.Constants.EIP_ACTION_STOP_BLOCKING_VPN;
+import static se.leap.bitmaskclient.base.utils.ConfigHelper.getPendingIntentFlags;
/**
* Created by cyberta on 14.01.18.
@@ -305,19 +306,19 @@ public class VpnNotificationManager {
private PendingIntent getMainActivityIntent() {
Intent startActivity = new Intent(context, StartActivity.class);
- return PendingIntent.getActivity(context, 0, startActivity, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getActivity(context, 0, startActivity, getPendingIntentFlags());
}
private PendingIntent getStartOpenvpnIntent() {
Intent startIntent = new Intent(context, EIP.class);
startIntent.setAction(EIP_ACTION_START);
- return PendingIntent.getService(context, 0, startIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getService(context, 0, startIntent, getPendingIntentFlags());
}
private PendingIntent getStopVoidVpnIntent() {
Intent stopVoidVpnIntent = new Intent (context, VoidVpnService.class);
stopVoidVpnIntent.setAction(EIP_ACTION_STOP_BLOCKING_VPN);
- return PendingIntent.getService(context, 0, stopVoidVpnIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getService(context, 0, stopVoidVpnIntent, getPendingIntentFlags());
}
private PendingIntent getDisconnectIntent() {
@@ -325,7 +326,7 @@ public class VpnNotificationManager {
disconnectVPN.setAction(ACTION_SHOW_VPN_FRAGMENT);
disconnectVPN.putExtra(ASK_TO_CANCEL_VPN, true);
disconnectVPN.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
- return PendingIntent.getActivity(context, 0, disconnectVPN, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getActivity(context, 0, disconnectVPN, getPendingIntentFlags());
}
private PendingIntent getUserInputIntent(String needed) {
@@ -334,7 +335,7 @@ public class VpnNotificationManager {
intent.putExtra("need", needed);
Bundle b = new Bundle();
b.putString("need", needed);
- PendingIntent pIntent = PendingIntent.getActivity(context, 12, intent, 0);
+ PendingIntent pIntent = PendingIntent.getActivity(context, 12, intent, getPendingIntentFlags());
return pIntent;
}
diff --git a/bitmaskcore b/bitmaskcore
-Subproject a63cd6b2c573edb1de3119f4a158f840e4c4a9b
+Subproject f3229dc6ce31ba0962657bcd2c29e999224d885
diff --git a/build.gradle b/build.gradle
index a995fd04..6fbe3207 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,11 +5,10 @@ buildscript {
name 'Google'
}
mavenCentral()
- jcenter()
- google()
+ google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.1.2'
+ classpath 'com.android.tools.build:gradle:7.2.2'
}
}
@@ -24,6 +23,5 @@ allprojects {
name 'Google'
}
mavenCentral()
- jcenter()
}
}
diff --git a/docker/android-emulator/Dockerfile b/docker/android-emulator/Dockerfile
index b5f5f32b..c30d4970 100644
--- a/docker/android-emulator/Dockerfile
+++ b/docker/android-emulator/Dockerfile
@@ -1,7 +1,7 @@
FROM registry.0xacab.org/leap/bitmask_android/android-sdk:latest
MAINTAINER LEAP Encryption Access Project <info@leap.se>
-LABEL Description="Android SDK baseimage based on debian:bullseye" Vendor="LEAP" Version="27"
+LABEL Description="Android SDK baseimage based on debian:bullseye" Vendor="LEAP" Version="31"
# Make sure debconf doesn't complain about lack of interactivity
ENV DEBIAN_FRONTEND noninteractive
@@ -30,9 +30,9 @@ RUN apt-get update -qq && \
RUN echo y | sdkmanager "emulator"
# Install System Images for emulators
-RUN echo y | sdkmanager "system-images;android-30;google_apis;x86"
+RUN echo y | sdkmanager "system-images;android-31;google_apis;x86"
# RUN echo y | sdkmanager "system-images;android-27;google_apis;x86"
# RUN echo y | sdkmanager "system-images;android-25;google_apis;x86_64"
# RUN echo y | sdkmanager "system-images;android-23;google_apis;x86_64"
-RUN echo no | avdmanager create avd --force --name testApi30 --abi google_apis/x86 --package 'system-images;android-30;google_apis;x86'
+RUN echo no | avdmanager create avd --force --name testApi31 --abi google_apis/x86 --package 'system-images;android-31;google_apis;x86'
diff --git a/docker/android-sdk/Dockerfile b/docker/android-sdk/Dockerfile
index 6093cf18..6f996616 100644
--- a/docker/android-sdk/Dockerfile
+++ b/docker/android-sdk/Dockerfile
@@ -1,7 +1,7 @@
FROM 0xacab.org:4567/leap/docker/debian:bullseye_amd64
MAINTAINER LEAP Encryption Access Project <info@leap.se>
-LABEL Description="Android SDK baseimage based on debian:bullseye" Vendor="LEAP" Version="27.0.0"
+LABEL Description="Android SDK baseimage based on debian:bullseye" Vendor="LEAP" Version="31.0.0"
# ------------------------------------------------------
# --- Install System Dependencies
@@ -77,18 +77,10 @@ RUN echo y | sdkmanager "platform-tools" # echo y to accept google licenses
RUN sdkmanager "extras;android;m2repository"
# Install Build Tools (Please keep in descending order)
-RUN sdkmanager "build-tools;30.0.3"
-# RUN sdkmanager "build-tools;28.0.3"
-# RUN sdkmanager "build-tools;27.0.3"
-# RUN sdkmanager "build-tools;25.0.2"
-# RUN sdkmanager "build-tools;23.0.3"
+RUN sdkmanager "build-tools;31.0.0"
# Install Target SDK Packages (Please keep in descending order)
-RUN sdkmanager "platforms;android-30"
-# RUN sdkmanager "platforms;android-28"
-# RUN sdkmanager "platforms;android-27"
-# RUN sdkmanager "platforms;android-25"
-# RUN sdkmanager "platforms;android-23"
+RUN sdkmanager "platforms;android-31"
RUN echo "accept all licenses"
# Accept all licenses
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 5e689c00..aaa09975 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Thu Feb 11 23:53:25 CET 2021
+#Sun Aug 07 23:06:29 CEST 2022
distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
+zipStoreBase=GRADLE_USER_HOME
diff --git a/ics-openvpn b/ics-openvpn
-Subproject a9dc600d98c2549fd05019449c0990f05717454
+Subproject 08ec76072a374ba2bdd2ef09df7cffc74652ee0
diff --git a/scripts/build_deps.sh b/scripts/build_deps.sh
index 14d2bafc..0d37d7de 100755
--- a/scripts/build_deps.sh
+++ b/scripts/build_deps.sh
@@ -8,7 +8,7 @@ function quit {
SCRIPT_DIR=$(dirname "$0")
BASE_DIR="$SCRIPT_DIR/.."
DIR_OVPNASSETS=./ics-openvpn/main/build/ovpnassets
-DIR_OVPNLIBS=./ics-openvpn/main/build/intermediates/cmake/noovpn3/release/obj
+DIR_OVPNLIBS=./ics-openvpn/main/build/intermediates/cmake/skeletonRelease/obj
DIR_GOLIBS=./bitmaskcore/lib/
#FILE_X86=./go/out/x86/piedispatcherlib
#FILE_ARM=./go/out/armeabi-v7a/piedispatcherlib
diff --git a/tor-android b/tor-android
-Subproject 9ff61322e25b290cc8d5eb288974840ac2355b0
+Subproject b7bf4551ff359e92e9023778715f39a4c7eb7cf