diff --git a/app/build.gradle b/app/build.gradle index ce11c62342567ee55510344f5e2bdc2937146936..887ab94b6bc419b02486e54e8610f96ec96ebfec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -150,7 +150,7 @@ dependencies { // TODO: Add splitinstall-lib to a repo https://gitlab.e.foundation/e/os/backlog/-/issues/628 api files('libs/splitinstall-lib.jar') - implementation 'foundation.e.lib:telemetry:0.0.9-alpha' + implementation 'foundation.e.lib:telemetry:0.0.11-alpha' implementation 'foundation.e:gplayapi:3.0.1-2' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git a/app/src/main/java/foundation/e/apps/data/DownloadManager.kt b/app/src/main/java/foundation/e/apps/data/DownloadManager.kt index 1d54cdf9d85cc05ee26ef7319b4ef406f4968e59..3806bfb8eebe66bef744974687a0e2e46f20e5f5 100644 --- a/app/src/main/java/foundation/e/apps/data/DownloadManager.kt +++ b/app/src/main/java/foundation/e/apps/data/DownloadManager.kt @@ -167,19 +167,42 @@ class DownloadManager @Inject constructor( } private fun getDownloadStatus(downloadId: Long): Int { + var status = -1 + var reason = -1 try { downloadManager.query(downloadManagerQuery.setFilterById(downloadId)) .use { cursor -> if (cursor.moveToFirst()) { - val status = + status = cursor.getInt(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS)) + reason = + cursor.getInt(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_REASON)) Timber.d("Download Status: downloadId: $downloadId $status") - return status } } } catch (e: Exception) { Timber.e(e) } - return DownloadManager.STATUS_FAILED + + if (status != DownloadManager.STATUS_SUCCESSFUL) { + Timber.e("Download Issue: $downloadId status: $status reason: $reason") + } + return status + } + + fun getDownloadFailureReason(downloadId: Long): Int { + var reason = -1 + try { + downloadManager.query(downloadManagerQuery.setFilterById(downloadId)) + .use { cursor -> + if (cursor.moveToFirst()) { + reason = + cursor.getInt(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_REASON)) + } + } + } catch (e: Exception) { + Timber.e(e) + } + return reason } } diff --git a/app/src/main/java/foundation/e/apps/data/blockedApps/BlockedAppRepository.kt b/app/src/main/java/foundation/e/apps/data/blockedApps/BlockedAppRepository.kt index be1151daead21b6cced867f837871aa8db4c299d..2814752a8de50a9400bd0d105f16eb94ecd29256 100644 --- a/app/src/main/java/foundation/e/apps/data/blockedApps/BlockedAppRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/blockedApps/BlockedAppRepository.kt @@ -20,7 +20,6 @@ package foundation.e.apps.data.blockedApps import com.google.gson.Gson import foundation.e.apps.data.DownloadManager import foundation.e.apps.data.fusedDownload.FileManager -import foundation.e.lib.telemetry.Telemetry import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import timber.log.Timber @@ -71,8 +70,7 @@ class BlockedAppRepository @Inject constructor( Timber.i("Blocked list file contents: $blockedAppInfoJson") gson.fromJson(blockedAppInfoJson, AppWarningInfo::class.java) } catch (exception: Exception) { - exception.printStackTrace() - Telemetry.reportException(exception) + Timber.e(exception.localizedMessage ?: "", exception) AppWarningInfo(listOf()) } } diff --git a/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt b/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt index b6c1493abce6caf7d36fc7e92e77a1275d192631..f263fc012d0e71189f6e5813bb180ae7526a099d 100644 --- a/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt +++ b/app/src/main/java/foundation/e/apps/install/download/DownloadManagerUtils.kt @@ -65,6 +65,10 @@ class DownloadManagerUtils @Inject constructor( if (downloadManager.hasDownloadFailed(downloadId)) { handleDownloadFailed(fusedDownload) + Timber.e( + "Download failed for ${fusedDownload.packageName}, " + + "reason: ${downloadManager.getDownloadFailureReason(downloadId)}" + ) return@launch } @@ -86,7 +90,7 @@ class DownloadManagerUtils @Inject constructor( private suspend fun handleDownloadFailed(fusedDownload: FusedDownload) { fusedManagerRepository.installationIssue(fusedDownload) fusedManagerRepository.cancelDownload(fusedDownload) - Timber.i("===> Download failed: ${fusedDownload.name} ${fusedDownload.status}") + Timber.w("===> Download failed: ${fusedDownload.name} ${fusedDownload.status}") } private suspend fun validateDownload( diff --git a/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt b/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt index dcad5d9e2bc35b38b26d73454543903b6a1f8a04..d898c4e7a3c6bf6745bf12588b51cdc059a8d742 100644 --- a/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt +++ b/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt @@ -77,6 +77,7 @@ class InstallerService : Service() { return } + Timber.e("App install is failed for: $packageName status: $status extra: $extra") updateInstallationIssue(packageName ?: "") if (status == PackageInstaller.STATUS_FAILURE_CONFLICT && extra?.contains( INSTALL_FAILED_UPDATE_INCOMPATIBLE diff --git a/app/src/main/java/foundation/e/apps/install/pkg/PkgManagerModule.kt b/app/src/main/java/foundation/e/apps/install/pkg/PkgManagerModule.kt index 2afb071e9d6afd301c5adc53724760b756698993..91e0d10d1358e4906f10a71d98f4da055f98d86c 100644 --- a/app/src/main/java/foundation/e/apps/install/pkg/PkgManagerModule.kt +++ b/app/src/main/java/foundation/e/apps/install/pkg/PkgManagerModule.kt @@ -189,7 +189,7 @@ class PkgManagerModule @Inject constructor( ) session.commit(servicePendingIntent.intentSender) } catch (e: Exception) { - Timber.e("$packageName: \n${e.stackTraceToString()}") + Timber.e("Initiating Install Failed for $packageName exception: ${e.localizedMessage}", e) val pendingIntent = PendingIntent.getBroadcast( context, sessionId, diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt b/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt index d1b1367362cd793509b82d2ff2c9f3d35b28c968..0f647e8ac165f7b02511bb4f3230b7e6f9580962 100644 --- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt +++ b/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt @@ -125,7 +125,7 @@ class UpdatesWorker @AssistedInject constructor( /* * If user in UNAVAILABLE, don't do anything. */ - Timber.w("User is not available! User is required during update!") + Timber.e("Update is aborted for unavailable user!") return } Timber.i("Updates found: ${appsNeededToUpdate.size}; $resultStatus") @@ -168,6 +168,8 @@ class UpdatesWorker @AssistedInject constructor( delay(DELAY_FOR_RETRY) checkForUpdates() } else { + val message = "Update is aborted after trying for $MAX_RETRY_COUNT times!" + Timber.e(message) EventBus.invokeEvent(AppEvent.UpdateEvent(ResultSupreme.WorkError(ResultStatus.UNKNOWN))) } } diff --git a/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt b/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt index 604365df4bb0e23d89c5e368e6dff62eb3bfa45e..08425d32f00faa8c632c46947db590562e8f8604 100644 --- a/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt +++ b/app/src/main/java/foundation/e/apps/install/workmanager/AppInstallProcessor.kt @@ -138,7 +138,8 @@ class AppInstallProcessor @Inject constructor( fusedManagerRepository.updateAwaiting(fusedDownload) InstallWorkManager.enqueueWork(fusedDownload, isAnUpdate) } catch (e: Exception) { - Timber.e(e) + Timber.e("Enqueuing App install work is failed for ${fusedDownload.packageName} exception: ${e.localizedMessage}", e) + fusedManagerRepository.installationIssue(fusedDownload) } } @@ -151,7 +152,7 @@ class AppInstallProcessor @Inject constructor( EventBus.invokeEvent(AppEvent.AppPurchaseEvent(fusedDownload)) return false } catch (e: Exception) { - Timber.e(e) + Timber.e("Updating download Urls failed for ${fusedDownload.packageName} exception: ${e.localizedMessage}", e) EventBus.invokeEvent( AppEvent.UpdateEvent( ResultSupreme.WorkError( @@ -239,7 +240,7 @@ class AppInstallProcessor @Inject constructor( startAppInstallationProcess(it) } } catch (e: Exception) { - Timber.e("doWork: Failed: ${e.stackTraceToString()}") + Timber.e("Install worker is failed for ${fusedDownload?.packageName} exception: ${e.localizedMessage}", e) fusedDownload?.let { fusedManagerRepository.cancelDownload(fusedDownload) } @@ -348,7 +349,9 @@ class AppInstallProcessor @Inject constructor( try { handleFusedDownloadStatus(download) } catch (e: Exception) { - Timber.e(TAG, "observeDownload: ", e) + val message = + "Handling install status is failed for ${download.packageName} exception: ${e.localizedMessage}" + Timber.e(message, e) fusedManagerRepository.installationIssue(download) finishInstallation(download) }