@@ -30,12 +30,11 @@ import com.madness.collision.unit.api_viewing.data.ApiViewingApp
3030import com.madness.collision.unit.api_viewing.data.ArchiveEntryFlags
3131import com.madness.collision.unit.api_viewing.data.DexPackageFlags
3232import com.madness.collision.unit.api_viewing.info.AppType
33- import com.madness.collision.unit.api_viewing.info.DexLibSuperFinder
3433import com.madness.collision.unit.api_viewing.list.AppListService
3534import com.madness.collision.unit.api_viewing.tag.inflater.AppTagInflater
3635import com.madness.collision.unit.api_viewing.util.ManifestUtil
3736import com.madness.collision.util.os.OsUtils
38- import kotlinx.coroutines.TimeoutCancellationException
37+ import io.cliuff.boundo.art.apk.dex.AsyncDexLibSuperFinder
3938import kotlinx.coroutines.delay
4039import 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
0 commit comments