From 5d5d0d7aa2129cd8ee1d7d18e7eacd204944a348 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 24 Jan 2025 08:26:07 +0100 Subject: [PATCH 1/5] Delete PackageInstallerService which was dead code --- app/src/main/AndroidManifest.xml | 5 -- .../install/pkg/PackageInstallerService.kt | 77 ------------------- 2 files changed, 82 deletions(-) delete mode 100644 app/src/main/java/foundation/e/apps/install/pkg/PackageInstallerService.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cce4b11c2..ad4d64564 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -161,11 +161,6 @@ android:exported="true" android:readPermission="${applicationId}.permission.PROVIDER_READ" /> - - - . - */ - -package foundation.e.apps.install.pkg - -import android.app.Service -import android.content.Intent -import android.content.pm.PackageInstaller -import android.os.IBinder -import dagger.hilt.android.AndroidEntryPoint -import foundation.e.apps.data.enums.Status -import foundation.e.apps.data.install.AppManagerWrapper -import kotlinx.coroutines.DelicateCoroutinesApi -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import timber.log.Timber -import javax.inject.Inject - -@AndroidEntryPoint -@DelicateCoroutinesApi -class PackageInstallerService : Service() { - - @Inject - lateinit var appManagerWrapper: AppManagerWrapper - - override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { - val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -69) - val packageName = intent.getStringExtra(PackageInstaller.EXTRA_PACKAGE_NAME) - val extra = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE) - - if (packageName != null) { - if (status == PackageInstaller.STATUS_SUCCESS) { - updateDownloadStatus(packageName) - } else { - Timber.e("Installation failed due to error: $extra") - updateInstallationIssue(packageName) - } - } - - stopSelf() - return START_NOT_STICKY - } - - override fun onBind(intent: Intent): IBinder? { - return null - } - - // TODO: FIND A BETTER WAY TO DO THIS - private fun updateDownloadStatus(pkgName: String) { - GlobalScope.launch { - val fusedDownload = appManagerWrapper.getFusedDownload(packageName = pkgName) - appManagerWrapper.updateDownloadStatus(fusedDownload, Status.INSTALLED) - } - } - - private fun updateInstallationIssue(pkgName: String) { - GlobalScope.launch { - val fusedDownload = appManagerWrapper.getFusedDownload(packageName = pkgName) - appManagerWrapper.installationIssue(fusedDownload) - } - } -} -- GitLab From 15ee2cb6bbe06f8a336337167a960ced8fb715f2 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Thu, 16 Jan 2025 15:47:06 +0100 Subject: [PATCH 2/5] Move to Java 21 --- app/build.gradle | 6 +++--- auth-data-lib/build.gradle | 4 ++-- parental-control-data/build.gradle | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c2547c6e7..0b1994390 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -206,11 +206,11 @@ android { aidl = true } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } kotlinOptions { - jvmTarget = '17' + jvmTarget = '21' } lint { lintConfig = file('lint.xml') diff --git a/auth-data-lib/build.gradle b/auth-data-lib/build.gradle index 3d3319ef1..0b8ba86b5 100644 --- a/auth-data-lib/build.gradle +++ b/auth-data-lib/build.gradle @@ -5,8 +5,8 @@ plugins { } java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } publishing { diff --git a/parental-control-data/build.gradle b/parental-control-data/build.gradle index b65ce5506..2b15ab8e7 100644 --- a/parental-control-data/build.gradle +++ b/parental-control-data/build.gradle @@ -5,8 +5,8 @@ plugins { } java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } publishing { -- GitLab From 5ac2236d9026b76c706530168a695eebf71ece25 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 24 Jan 2025 08:37:04 +0100 Subject: [PATCH 3/5] Move to gplay api 3.4.5 --- .../e/apps/data/playstore/utils/CustomAuthValidator.kt | 1 - gradle/libs.versions.toml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/data/playstore/utils/CustomAuthValidator.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/CustomAuthValidator.kt index 4850ac756..e029c196e 100644 --- a/app/src/main/java/foundation/e/apps/data/playstore/utils/CustomAuthValidator.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/CustomAuthValidator.kt @@ -21,7 +21,6 @@ import com.aurora.gplayapi.GooglePlayApi import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.data.providers.HeaderProvider -import com.aurora.gplayapi.helpers.AuthValidator import com.aurora.gplayapi.helpers.NativeHelper import com.aurora.gplayapi.network.IHttpClient diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bd866a780..74f91bbc4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ hiltCompiler = "1.2.0" hiltWork = "1.2.0" lifecycleExtensions = "1.1.1" fragmentKtx = "1.8.5" -gplayapi = "3.4.2-0" +gplayapi = "3.4.5-0" gson = "2.11.0" jacksonDataformatYaml = "2.17.0" jsoup = "1.17.2" -- GitLab From c33bf88d75f95de972026425953a4f7e12781584 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 24 Jan 2025 08:58:51 +0100 Subject: [PATCH 4/5] Filter emulators Do not request an IllegalStateException on emulators --- .../e/apps/data/playstore/PlayStoreRepository.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt index c84e5845f..2a55f4c82 100644 --- a/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt @@ -19,6 +19,7 @@ package foundation.e.apps.data.playstore import android.content.Context +import android.os.Build import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.data.models.App as GplayApp import com.aurora.gplayapi.data.models.Category @@ -45,6 +46,7 @@ import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.enums.Source import foundation.e.apps.data.login.AuthenticatorRepository import foundation.e.apps.data.playstore.utils.GPlayHttpClient +import foundation.e.apps.utils.SystemInfoProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import timber.log.Timber @@ -148,13 +150,17 @@ class PlayStoreRepository @Inject constructor( appDetails = appDetailsHelper.getAppByPackageName(packageName) } - if (appDetails?.versionCode == 0) { + if (!isEmulator() && appDetails?.versionCode == 0) { throw IllegalStateException("App version code cannot be 0") } return appDetails?.toApplication(context) ?: Application() } + private fun isEmulator(): Boolean { + return SystemInfoProvider.getSystemProperty("ro.boot.qemu").equals("1") + } + private fun getCategoryType(type: CategoryType): Category.Type { return if (type == CategoryType.APPLICATION) Category.Type.APPLICATION else Category.Type.GAME -- GitLab From 4530c8c0545c9840bad9838c14a6b582fa6e9e47 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 24 Jan 2025 16:39:25 +0100 Subject: [PATCH 5/5] Build with Java 21 docker --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7826a54dd..e87882958 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:master +image: registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:java21 variables: SENTRY_DSN: $SENTRY_DSN -- GitLab