Loading app/build.gradle +54 −47 Original line number Diff line number Diff line plugins { id 'com.android.application' id 'kotlin-android' id 'com.google.devtools.ksp' alias libs.plugins.ktlint alias libs.plugins.kotlin.serialization id 'androidx.navigation.safeargs.kotlin' id 'com.google.dagger.hilt.android' id 'kotlin-allopen' id 'kotlin-parcelize' alias libs.plugins.kotlin.plugin.parcelize id 'jacoco' alias libs.plugins.compose.compiler } Loading Loading @@ -61,9 +60,13 @@ def jacocoFileFilter = [ '**/Dagger*.*', '**/*MembersInjector*.*', '**/*_Factory*.*', '**/*Module_*Factory*.*', '**/*_Provide*Factory*.*', '**/*_AssistedFactory*.*', '**/*_GeneratedInjector*.*', '**/*Hilt*.*' '**/*Hilt*.*', '**/hilt_aggregated_deps/**', '**/dagger/hilt/internal/**' ] def jacocoCoverageProjects = [ Loading @@ -73,12 +76,19 @@ def jacocoCoverageProjects = [ ] def collectJacocoClassDirectories = { Project module, String variantName -> def variantCap = variantName.capitalize() return [ module.fileTree("${module.buildDir}/intermediates/javac/${variantName}/classes") { exclude jacocoFileFilter }, module.fileTree("${module.buildDir}/intermediates/javac/${variantName}/compile${variantCap}JavaWithJavac/classes") { exclude jacocoFileFilter }, module.fileTree("${module.buildDir}/tmp/kotlin-classes/${variantName}") { exclude jacocoFileFilter }, module.fileTree("${module.buildDir}/intermediates/built_in_kotlinc/${variantName}/compile${variantCap}Kotlin/classes") { exclude jacocoFileFilter } ] } Loading @@ -105,13 +115,18 @@ tasks.withType(Test).configureEach { } } kotlin { compilerOptions { optIn.add("kotlin.RequiresOptIn") } } android { compileSdk = libs.versions.compileSdk.get().toInteger() defaultConfig { applicationId = "foundation.e.apps" minSdk = libs.versions.minSdk.get().toInteger() //noinspection OldTargetApi targetSdk = libs.versions.targetSdk.get().toInteger() versionCode = versionMajor * 1000000 + versionMinor * 1000 + versionPatch versionName = "${versionMajor}.${versionMinor}.${versionPatch}" Loading Loading @@ -161,11 +176,6 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } applicationVariants.all { variant -> variant.outputs.all { output -> outputFileName = "AppLounge_${variant.buildType.name}.apk" } } } buildFeatures { buildConfig = true Loading @@ -177,25 +187,21 @@ android { sourceCompatibility = JavaVersion.toVersion(libs.versions.jvmTarget.get()) targetCompatibility = JavaVersion.toVersion(libs.versions.jvmTarget.get()) } kotlinOptions { jvmTarget = libs.versions.jvmTarget.get() } lint { disable.add('OldTargetApi') lintConfig = file('lint.xml') } namespace = 'foundation.e.apps' kotlin.sourceSets.configureEach { languageSettings.optIn("kotlin.RequiresOptIn") } androidComponents { onVariants(selector().all()) { variant -> variant.outputs.each { output -> output.outputFileName.set("AppLounge_${variant.buildType}.apk") } android.applicationVariants.configureEach { variant -> def variantCap = variant.name.capitalize() def unitTestTaskName = "test${variantCap}UnitTest" def unitTestTask = tasks.findByName(unitTestTaskName) if (unitTestTask == null) { return } tasks.register("jacoco${variantCap}Report", JacocoReport) { dependsOn(jacocoCoverageProjects.collect { module -> Loading Loading @@ -228,6 +234,7 @@ android.applicationVariants.configureEach { variant -> ) } } } allOpen { // allows mocking for classes w/o directly opening them for release builds Loading app/src/main/java/foundation/e/apps/AppLoungeApplication.kt +5 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,11 @@ class AppLoungeApplication : Application(), Configuration.Provider { override fun onCreate() { super.onCreate() Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler) val existingUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() Thread.setDefaultUncaughtExceptionHandler { thread, throwable -> uncaughtExceptionHandler.uncaughtException(thread, throwable) existingUncaughtExceptionHandler?.uncaughtException(thread, throwable) } registerReceiver(pkgManagerBR, appLoungePackageManager.getFilter(), RECEIVER_EXPORTED) Loading app/src/main/java/foundation/e/apps/data/install/download/data/DownloadProgressLD.kt +1 −2 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import foundation.e.apps.data.application.AppManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.cancel import kotlinx.coroutines.delay import kotlinx.coroutines.launch import timber.log.Timber Loading Loading @@ -127,7 +126,7 @@ class DownloadProgressLD @Inject constructor( status == DownloadManager.STATUS_SUCCESSFUL || status == DownloadManager.STATUS_FAILED if (downloadingIds.isEmpty()) { cancel() job.cancel() } } while (cursor.moveToNext()) Loading app/src/main/java/foundation/e/apps/ui/application/ApplicationInstallUiBinder.kt +0 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import android.widget.RelativeLayout import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.lifecycle.observe import com.google.android.material.button.MaterialButton import com.google.android.material.snackbar.Snackbar import com.google.android.material.textview.MaterialTextView Loading app/src/main/java/foundation/e/apps/ui/search/SearchViewHandler.kt +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ class SearchViewHandler( val cursor = MatrixCursor(arrayOf(BaseColumns._ID, SUGGESTION_KEY)) suggestions?.let { for (i in it.indices) { cursor.addRow(arrayOf(i, it[i].suggestion)) cursor.addRow(arrayOf<Any?>(i, it[i].suggestion)) } } searchView.suggestionsAdapter?.changeCursor(cursor) Loading Loading
app/build.gradle +54 −47 Original line number Diff line number Diff line plugins { id 'com.android.application' id 'kotlin-android' id 'com.google.devtools.ksp' alias libs.plugins.ktlint alias libs.plugins.kotlin.serialization id 'androidx.navigation.safeargs.kotlin' id 'com.google.dagger.hilt.android' id 'kotlin-allopen' id 'kotlin-parcelize' alias libs.plugins.kotlin.plugin.parcelize id 'jacoco' alias libs.plugins.compose.compiler } Loading Loading @@ -61,9 +60,13 @@ def jacocoFileFilter = [ '**/Dagger*.*', '**/*MembersInjector*.*', '**/*_Factory*.*', '**/*Module_*Factory*.*', '**/*_Provide*Factory*.*', '**/*_AssistedFactory*.*', '**/*_GeneratedInjector*.*', '**/*Hilt*.*' '**/*Hilt*.*', '**/hilt_aggregated_deps/**', '**/dagger/hilt/internal/**' ] def jacocoCoverageProjects = [ Loading @@ -73,12 +76,19 @@ def jacocoCoverageProjects = [ ] def collectJacocoClassDirectories = { Project module, String variantName -> def variantCap = variantName.capitalize() return [ module.fileTree("${module.buildDir}/intermediates/javac/${variantName}/classes") { exclude jacocoFileFilter }, module.fileTree("${module.buildDir}/intermediates/javac/${variantName}/compile${variantCap}JavaWithJavac/classes") { exclude jacocoFileFilter }, module.fileTree("${module.buildDir}/tmp/kotlin-classes/${variantName}") { exclude jacocoFileFilter }, module.fileTree("${module.buildDir}/intermediates/built_in_kotlinc/${variantName}/compile${variantCap}Kotlin/classes") { exclude jacocoFileFilter } ] } Loading @@ -105,13 +115,18 @@ tasks.withType(Test).configureEach { } } kotlin { compilerOptions { optIn.add("kotlin.RequiresOptIn") } } android { compileSdk = libs.versions.compileSdk.get().toInteger() defaultConfig { applicationId = "foundation.e.apps" minSdk = libs.versions.minSdk.get().toInteger() //noinspection OldTargetApi targetSdk = libs.versions.targetSdk.get().toInteger() versionCode = versionMajor * 1000000 + versionMinor * 1000 + versionPatch versionName = "${versionMajor}.${versionMinor}.${versionPatch}" Loading Loading @@ -161,11 +176,6 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } applicationVariants.all { variant -> variant.outputs.all { output -> outputFileName = "AppLounge_${variant.buildType.name}.apk" } } } buildFeatures { buildConfig = true Loading @@ -177,25 +187,21 @@ android { sourceCompatibility = JavaVersion.toVersion(libs.versions.jvmTarget.get()) targetCompatibility = JavaVersion.toVersion(libs.versions.jvmTarget.get()) } kotlinOptions { jvmTarget = libs.versions.jvmTarget.get() } lint { disable.add('OldTargetApi') lintConfig = file('lint.xml') } namespace = 'foundation.e.apps' kotlin.sourceSets.configureEach { languageSettings.optIn("kotlin.RequiresOptIn") } androidComponents { onVariants(selector().all()) { variant -> variant.outputs.each { output -> output.outputFileName.set("AppLounge_${variant.buildType}.apk") } android.applicationVariants.configureEach { variant -> def variantCap = variant.name.capitalize() def unitTestTaskName = "test${variantCap}UnitTest" def unitTestTask = tasks.findByName(unitTestTaskName) if (unitTestTask == null) { return } tasks.register("jacoco${variantCap}Report", JacocoReport) { dependsOn(jacocoCoverageProjects.collect { module -> Loading Loading @@ -228,6 +234,7 @@ android.applicationVariants.configureEach { variant -> ) } } } allOpen { // allows mocking for classes w/o directly opening them for release builds Loading
app/src/main/java/foundation/e/apps/AppLoungeApplication.kt +5 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,11 @@ class AppLoungeApplication : Application(), Configuration.Provider { override fun onCreate() { super.onCreate() Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler) val existingUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() Thread.setDefaultUncaughtExceptionHandler { thread, throwable -> uncaughtExceptionHandler.uncaughtException(thread, throwable) existingUncaughtExceptionHandler?.uncaughtException(thread, throwable) } registerReceiver(pkgManagerBR, appLoungePackageManager.getFilter(), RECEIVER_EXPORTED) Loading
app/src/main/java/foundation/e/apps/data/install/download/data/DownloadProgressLD.kt +1 −2 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import foundation.e.apps.data.application.AppManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.cancel import kotlinx.coroutines.delay import kotlinx.coroutines.launch import timber.log.Timber Loading Loading @@ -127,7 +126,7 @@ class DownloadProgressLD @Inject constructor( status == DownloadManager.STATUS_SUCCESSFUL || status == DownloadManager.STATUS_FAILED if (downloadingIds.isEmpty()) { cancel() job.cancel() } } while (cursor.moveToNext()) Loading
app/src/main/java/foundation/e/apps/ui/application/ApplicationInstallUiBinder.kt +0 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import android.widget.RelativeLayout import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.lifecycle.observe import com.google.android.material.button.MaterialButton import com.google.android.material.snackbar.Snackbar import com.google.android.material.textview.MaterialTextView Loading
app/src/main/java/foundation/e/apps/ui/search/SearchViewHandler.kt +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ class SearchViewHandler( val cursor = MatrixCursor(arrayOf(BaseColumns._ID, SUGGESTION_KEY)) suggestions?.let { for (i in it.indices) { cursor.addRow(arrayOf(i, it[i].suggestion)) cursor.addRow(arrayOf<Any?>(i, it[i].suggestion)) } } searchView.suggestionsAdapter?.changeCursor(cursor) Loading