diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e5631f5e7..d9b823fd9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -66,8 +66,15 @@ errorprone: - export AVD_PACKAGE="system-images;android-${AVD_SDK};${AVD_TAG};${AVD_ARCH}" - echo $AVD_PACKAGE - emulator -accel-check || true + + - if [[ "$AVD_ARCH" != arm* ]]; then + set -x; echo y | sdkmanager "emulator" > /dev/null; set +x; + elif [[ "$AVD_SDK" == Q ]]; then + set -x; echo y | sdkmanager --channel=2 "emulator" > /dev/null; set +x; + fi + - alias sdkmanager - - echo y | sdkmanager "emulator" "platforms;android-$AVD_SDK" > /dev/null + - echo y | sdkmanager "platforms;android-$AVD_SDK" > /dev/null - if ! avdmanager list avd | grep "Name. avd$AVD_SDK$"; then set -x; rm -rf ~/.android/avd $ANDROID_HOME/system-images; @@ -81,6 +88,7 @@ errorprone: fi - adb start-server - ls -l ~/.android + - emulator -version - emulator -avd avd$AVD_SDK -no-audio -no-jni @@ -98,9 +106,9 @@ errorprone: - ./gradlew connectedFullDebugAndroidTest $FLAG || (adb -e logcat -d > logcat.txt; exit 1) connected 22 default armeabi-v7a: + retry: 1 <<: *test-template <<: *connected-template - allow_failure: true .kvm-template: &kvm-template tags: diff --git a/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java b/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java index baf3a68a1..db068494e 100644 --- a/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -276,7 +276,7 @@ public class WifiStateChangeService extends IntentService { if (BuildConfig.DEBUG) { e.printStackTrace(); } else { - Log.i(TAG, e.getLocalizedMessage()); + Log.i(TAG, "Getting subnet failed: " + e.getLocalizedMessage()); } } } diff --git a/app/src/main/java/org/fdroid/fdroid/AddRepoIntentService.java b/app/src/main/java/org/fdroid/fdroid/AddRepoIntentService.java index 9530429b3..f28fb0e00 100644 --- a/app/src/main/java/org/fdroid/fdroid/AddRepoIntentService.java +++ b/app/src/main/java/org/fdroid/fdroid/AddRepoIntentService.java @@ -69,7 +69,7 @@ public class AddRepoIntentService extends IntentService { try { urlString = normalizeUrl(uri); } catch (URISyntaxException e) { - Log.i(TAG, e.getLocalizedMessage()); + Log.i(TAG, "Bad URI: " + e.getLocalizedMessage()); return; } diff --git a/app/src/main/java/org/fdroid/fdroid/DeleteCacheService.java b/app/src/main/java/org/fdroid/fdroid/DeleteCacheService.java index b526cc2ed..9e05f5d89 100644 --- a/app/src/main/java/org/fdroid/fdroid/DeleteCacheService.java +++ b/app/src/main/java/org/fdroid/fdroid/DeleteCacheService.java @@ -27,7 +27,10 @@ public class DeleteCacheService extends JobIntentService { Process.setThreadPriority(Process.THREAD_PRIORITY_LOWEST); Log.w(TAG, "Deleting all cached contents!"); try { - FileUtils.deleteDirectory(getCacheDir()); + File cacheDir = getCacheDir(); + if (cacheDir != null) { + FileUtils.deleteDirectory(cacheDir); + } for (File dir : ContextCompat.getExternalCacheDirs(this)) { FileUtils.deleteDirectory(dir); } diff --git a/app/src/main/java/org/fdroid/fdroid/UpdateService.java b/app/src/main/java/org/fdroid/fdroid/UpdateService.java index e4627e4e7..980dc8dc8 100644 --- a/app/src/main/java/org/fdroid/fdroid/UpdateService.java +++ b/app/src/main/java/org/fdroid/fdroid/UpdateService.java @@ -544,12 +544,27 @@ public class UpdateService extends JobIntentService { } } + /** + * Queues all apps needing update. If this app itself (e.g. F-Droid) needs + * to be updated, it is queued last. + */ public static void autoDownloadUpdates(Context context) { List canUpdate = AppProvider.Helper.findCanUpdate(context, Schema.AppMetadataTable.Cols.ALL); + String packageName = context.getPackageName(); + App updateLastApp = null; + Apk updateLastApk = null; for (App app : canUpdate) { + if (TextUtils.equals(packageName, app.packageName)) { + updateLastApp = app; + updateLastApk = ApkProvider.Helper.findSuggestedApk(context, app); + continue; + } Apk apk = ApkProvider.Helper.findSuggestedApk(context, app); InstallManagerService.queue(context, app, apk); } + if (updateLastApp != null && updateLastApk != null) { + InstallManagerService.queue(context, updateLastApp, updateLastApk); + } } private void showAppUpdatesNotification(List canUpdate) { diff --git a/app/src/main/java/org/fdroid/fdroid/net/BluetoothDownloader.java b/app/src/main/java/org/fdroid/fdroid/net/BluetoothDownloader.java index 225be7434..46912bcee 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/BluetoothDownloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/BluetoothDownloader.java @@ -92,7 +92,7 @@ public class BluetoothDownloader extends Downloader { @Override public void download() throws IOException, InterruptedException { - downloadFromStream(1024, false); + downloadFromStream(false); connection.closeQuietly(); } diff --git a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java index 7acde08c6..ee806b4fe 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java @@ -116,7 +116,7 @@ public abstract class Downloader { return notFound; } - void downloadFromStream(int bufferSize, boolean resumable) throws IOException, InterruptedException { + void downloadFromStream(boolean resumable) throws IOException, InterruptedException { Utils.debugLog(TAG, "Downloading from stream"); InputStream input = null; OutputStream outputStream = new FileOutputStream(outputFile, resumable); @@ -127,7 +127,7 @@ public abstract class Downloader { // we were interrupted before proceeding to the download. throwExceptionIfInterrupted(); - copyInputToOutputStream(input, bufferSize, outputStream); + copyInputToOutputStream(input, 8192, outputStream); } finally { Utils.closeQuietly(outputStream); Utils.closeQuietly(input); diff --git a/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java b/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java index cca7e76ee..f96e90607 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java +++ b/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java @@ -248,7 +248,7 @@ public class DownloaderService extends Service { | SSLHandshakeException | SSLKeyException | SSLPeerUnverifiedException | SSLProtocolException | ProtocolException | UnknownHostException e) { // if the above list of exceptions changes, also change it in IndexV1Updater.update() - Log.e(TAG, e.getLocalizedMessage()); + Log.e(TAG, "CONNECTION_FAILED: " + e.getLocalizedMessage()); sendBroadcast(uri, Downloader.ACTION_CONNECTION_FAILED, localFile, repoId, canonicalUrl); } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java b/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java index ef86f696a..231484639 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java @@ -175,7 +175,7 @@ public class HttpDownloader extends Downloader { } setupConnection(resumable); Utils.debugLog(TAG, "downloading " + urlString + " (is resumable: " + resumable + ")"); - downloadFromStream(8192, resumable); + downloadFromStream(resumable); cacheTag = connection.getHeaderField(HEADER_FIELD_ETAG); } diff --git a/app/src/main/java/org/fdroid/fdroid/net/LocalFileDownloader.java b/app/src/main/java/org/fdroid/fdroid/net/LocalFileDownloader.java index 9701eae39..0cd4d943a 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/LocalFileDownloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/LocalFileDownloader.java @@ -81,6 +81,6 @@ public class LocalFileDownloader extends Downloader { } else if (fileLength > 0) { resumable = true; } - downloadFromStream(8192, resumable); + downloadFromStream(resumable); } } diff --git a/app/src/main/java/org/fdroid/fdroid/net/TreeUriDownloader.java b/app/src/main/java/org/fdroid/fdroid/net/TreeUriDownloader.java index 93ab66f6c..0c27ad261 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/TreeUriDownloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/TreeUriDownloader.java @@ -96,7 +96,7 @@ public class TreeUriDownloader extends Downloader { @Override public void download() throws IOException, InterruptedException { - downloadFromStream(8192, false); + downloadFromStream(false); } @Override