From 1371f3f16252e89088a4933b7dfe0562f250d3a2 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Thu, 6 Jun 2024 15:08:21 +0200 Subject: [PATCH 1/3] Fix wrong context usage Signed-off-by: alperozturk --- app/build.gradle | 4 ---- .../client/account/UserAccountManagerImpl.java | 12 +++++++++--- .../main/java/com/owncloud/android/MainApp.java | 16 ++++++++-------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ab4c166ac8ad..6af60edde899 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -124,8 +124,6 @@ android { testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}" testInstrumentationRunnerArguments disableAnalytics: 'true' - multiDexEnabled true - versionCode versionMajor * 10000000 + versionMinor * 10000 + versionPatch * 100 + versionBuild if (versionBuild > 89) { @@ -264,8 +262,6 @@ android { } dependencies { - // dependencies for app building - implementation 'androidx.multidex:multidex:2.0.1' implementation("com.github.nextcloud:android-library:$androidLibraryVersion") { exclude group: 'org.ogce', module: 'xpp3' // unused in Android and brings wrong Junit version } diff --git a/app/src/main/java/com/nextcloud/client/account/UserAccountManagerImpl.java b/app/src/main/java/com/nextcloud/client/account/UserAccountManagerImpl.java index 04bd30918c54..e34b7b04f3fd 100644 --- a/app/src/main/java/com/nextcloud/client/account/UserAccountManagerImpl.java +++ b/app/src/main/java/com/nextcloud/client/account/UserAccountManagerImpl.java @@ -18,6 +18,7 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.text.TextUtils; +import android.util.Log; import com.nextcloud.common.NextcloudClient; import com.owncloud.android.MainApp; @@ -52,10 +53,10 @@ public class UserAccountManagerImpl implements UserAccountManager { private static final String PREF_SELECT_OC_ACCOUNT = "select_oc_account"; private Context context; - private AccountManager accountManager; + private final AccountManager accountManager; public static UserAccountManagerImpl fromContext(Context context) { - AccountManager am = (AccountManager)context.getSystemService(Context.ACCOUNT_SERVICE); + AccountManager am = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE); return new UserAccountManagerImpl(context, am); } @@ -181,7 +182,12 @@ private User createUserFromAccount(@Nullable Account account) { return null; } - OwnCloudAccount ownCloudAccount = null; + if (context == null) { + Log_OC.d(TAG, "Context is null MainApp.getAppContext() used"); + context = MainApp.getAppContext(); + } + + OwnCloudAccount ownCloudAccount; try { ownCloudAccount = new OwnCloudAccount(account, context); } catch (AccountUtils.AccountNotFoundException ex) { diff --git a/app/src/main/java/com/owncloud/android/MainApp.java b/app/src/main/java/com/owncloud/android/MainApp.java index f6d754b402ab..6ccbf872a9dd 100644 --- a/app/src/main/java/com/owncloud/android/MainApp.java +++ b/app/src/main/java/com/owncloud/android/MainApp.java @@ -85,6 +85,7 @@ import org.conscrypt.Conscrypt; import org.greenrobot.eventbus.EventBus; +import java.lang.ref.WeakReference; import java.lang.reflect.Method; import java.security.NoSuchAlgorithmException; import java.security.Security; @@ -108,7 +109,6 @@ import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleEventObserver; import androidx.lifecycle.ProcessLifecycleOwner; -import androidx.multidex.MultiDexApplication; import dagger.android.AndroidInjector; import dagger.android.DispatchingAndroidInjector; import dagger.android.HasAndroidInjector; @@ -123,14 +123,14 @@ * Main Application of the project. * Contains methods to build the "static" strings. These strings were before constants in different classes. */ -public class MainApp extends MultiDexApplication implements HasAndroidInjector { +public class MainApp extends Application implements HasAndroidInjector { public static final OwnCloudVersion OUTDATED_SERVER_VERSION = NextcloudVersion.nextcloud_26; public static final OwnCloudVersion MINIMUM_SUPPORTED_SERVER_VERSION = OwnCloudVersion.nextcloud_16; private static final String TAG = MainApp.class.getSimpleName(); public static final String DOT = "."; - private static Context mContext; + private static WeakReference appContext; private static String storagePath; @@ -197,7 +197,7 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector { * Temporary hack */ private static void initGlobalContext(Context context) { - mContext = context; + appContext = new WeakReference<>(context); } /** @@ -448,7 +448,7 @@ private void initSecurityKeyManager() { } public static void initContactsBackup(UserAccountManager accountManager, BackgroundJobManager backgroundJobManager) { - ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProviderImpl(mContext); + ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProviderImpl(appContext.get()); List users = accountManager.getAllUsers(); for (User user : users) { if (arbitraryDataProvider.getBooleanValue(user, PREFERENCE_CONTACTS_AUTOMATIC_BACKUP)) { @@ -661,11 +661,11 @@ public static String string(int id, Object args) { } public static Context getAppContext() { - return MainApp.mContext; + return MainApp.appContext.get(); } public static void setAppContext(Context context) { - MainApp.mContext = context; + MainApp.appContext = new WeakReference<>(context); } public static String getStoragePath() { @@ -787,7 +787,7 @@ private static void updateAutoUploadEntries(Clock clock) { if (!preferences.isAutoUploadPathsUpdateEnabled()) { SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(MainApp.getAppContext().getContentResolver(), preferences, clock); - syncedFolderProvider.updateAutoUploadPaths(mContext); + syncedFolderProvider.updateAutoUploadPaths(appContext.get()); } } From c7f26af682ea8a2975eef5d0f15e5d14d4cbe8e5 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Thu, 13 Jun 2024 13:59:16 +0200 Subject: [PATCH 2/3] Fix building error Signed-off-by: alperozturk --- .../java/com/owncloud/android/MainApp.java | 2 +- gradle/verification-metadata.xml | 36 +++++++++---------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/MainApp.java b/app/src/main/java/com/owncloud/android/MainApp.java index 6ccbf872a9dd..0529ba9ef99a 100644 --- a/app/src/main/java/com/owncloud/android/MainApp.java +++ b/app/src/main/java/com/owncloud/android/MainApp.java @@ -565,7 +565,7 @@ public static void initSyncOperations( preferences.setAutoUploadInit(true); } - FilesSyncHelper.scheduleFilesSyncIfNeeded(mContext, backgroundJobManager); + FilesSyncHelper.scheduleFilesSyncIfNeeded(getAppContext(), backgroundJobManager); FilesSyncHelper.restartJobsIfNeeded( uploadsStorageManager, accountManager, diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index ef5a88426f83..114ea78cac4e 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -5151,16 +5151,14 @@ - - - - - - - - + + + + + + + + @@ -5169,16 +5167,14 @@ - - - - - - - - + + + + + + + + From 20dc7adad83a342e77a5303ce5e3b9da253ff2bc Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 13 Jun 2024 12:36:16 +0000 Subject: [PATCH 3/3] Analysis: update lint results to reflect reduced error/warning count Signed-off-by: github-actions --- scripts/analysis/lint-results.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/analysis/lint-results.txt b/scripts/analysis/lint-results.txt index 9531ef5b263b..e53927d3c705 100644 --- a/scripts/analysis/lint-results.txt +++ b/scripts/analysis/lint-results.txt @@ -1,2 +1,2 @@ DO NOT TOUCH; GENERATED BY DRONE - Lint Report: 3 errors and 71 warnings + Lint Report: 3 errors and 70 warnings