Skip to content

Commit aed7c0a

Browse files
committed
Art: deprecate TagRequisiteRunner (#44)
1 parent da5e1c4 commit aed7c0a

4 files changed

Lines changed: 7 additions & 25 deletions

File tree

api_viewing/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ android {
6363

6464
dependencies {
6565
coreLibraryDesugaring(libs.androidDesugaring)
66+
implementation(project(":mods:art"))
6667
implementation(project(":mods:core"))
6768
implementation(project(":mods:org"))
6869
implementation(platform(libs.androidxComposeBom))

api_viewing/src/main/kotlin/com/madness/collision/unit/api_viewing/tag/app/BuiltInTags.kt

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,11 @@ import com.madness.collision.unit.api_viewing.data.ApiViewingApp
3030
import com.madness.collision.unit.api_viewing.data.ArchiveEntryFlags
3131
import com.madness.collision.unit.api_viewing.data.DexPackageFlags
3232
import com.madness.collision.unit.api_viewing.info.AppType
33-
import com.madness.collision.unit.api_viewing.info.DexLibSuperFinder
3433
import com.madness.collision.unit.api_viewing.list.AppListService
3534
import com.madness.collision.unit.api_viewing.tag.inflater.AppTagInflater
3635
import com.madness.collision.unit.api_viewing.util.ManifestUtil
3736
import com.madness.collision.util.os.OsUtils
38-
import kotlinx.coroutines.TimeoutCancellationException
37+
import io.cliuff.boundo.art.apk.dex.AsyncDexLibSuperFinder
3938
import kotlinx.coroutines.delay
4039
import kotlinx.coroutines.withTimeout
4140

@@ -510,29 +509,9 @@ private fun pkgServicesRequisite(): AppTagInfo.Requisite = AppTagInfo.Requisite(
510509

511510
// services declared in manifests are not guaranteed to be found in DEX files
512511
val services = app.pkgInfo?.services?.run { mapTo(HashSet(size), ServiceInfo::name) }.orEmpty()
513-
// external archives are not read-only files, so use DexLibSuperFinder for them
514-
if (res.app.isArchive) {
515-
val finder = DexLibSuperFinder()
516-
app.serviceFamilyClasses = finder.resolve(app.appPackage.apkPaths, services)
517-
} else {
518-
// todo move instance into res
519-
val reqRunner = TagRequisiteRunner(res.context).init()
520-
// todo reduce service set to only ones of interest, to save more memory
521-
app.serviceFamilyClasses = try {
522-
withTimeout(20_000) { reqRunner.findSuperclass(app.appPackage.apkPaths, services) }
523-
?: DexLibSuperFinder().resolve(app.appPackage.apkPaths, services)
524-
} catch (e: TimeoutCancellationException) {
525-
// unrecoverable exceptions in remote also results in timeout
526-
e.printStackTrace()
527-
// fallback to dex lib
528-
DexLibSuperFinder().resolve(app.appPackage.apkPaths, services)
529-
} catch (e: Exception) {
530-
// error with binding or the like
531-
e.printStackTrace()
532-
// fallback to dex lib
533-
DexLibSuperFinder().resolve(app.appPackage.apkPaths, services)
534-
}
535-
}
512+
val finder = AsyncDexLibSuperFinder()
513+
app.serviceFamilyClasses = finder.resolve(app.appPackage.apkPaths, services)
514+
// todo reduce service set to only ones of interest, to save more memory
536515
}
537516
)
538517

api_viewing/src/main/kotlin/com/madness/collision/unit/api_viewing/tag/app/TagRequisiteRunner.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import kotlin.concurrent.thread
3838
import kotlin.coroutines.resume
3939
import kotlin.coroutines.resumeWithException
4040

41+
@Deprecated("")
4142
class TagRequisiteRunner(private val context: Context) {
4243
private var serviceMessenger: Messenger? = null
4344
private val serviceConn = object : ServiceConnection {

api_viewing/src/main/kotlin/com/madness/collision/unit/api_viewing/tag/app/TagRequisiteService.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import android.util.Log
2929
import com.madness.collision.unit.api_viewing.info.LoadSuperFinder
3030

3131
/** Service to run in a separate process to isolate native exceptions. */
32+
@Deprecated("")
3233
class TagRequisiteService : Service() {
3334
private val tagMessenger = kotlin.run {
3435
val looper = Looper.myLooper()

0 commit comments

Comments
 (0)