首页 > 解决方案 > 给定一个 APK 文件,是否有可能知道它是拆分 APK 文件的一部分,还是独立的?

问题描述

背景

有时当您备份某个应用的某个 APK 文件时,您会注意到它们由多个 APK 文件组成,这意味着拆分 APK 文件(AKA app-bundle)。

问题

我想知道,当有人向用户发送 APK 文件时,它是否确实是独立的,或者是拆分 APK 文件的一部分。原因是程序不同,甚至是对此类事情的警告,因为拆分的 APK 文件并不是真的要像普通文件一样安装。

我试过的

给定PackageManager类(此处),我找不到getPackageArchiveInfo获取此类信息的方法。

splitNamessplitRevisionCodes,但两者都只是空值。

我的问题

给定一个 APK 文件,是否可以检查它是否是多个拆分 APK 文件的一部分?


编辑:多亏了这里,我找到了如何为拆分 APK 文件(“base.APK”)的主 APK 执行此操作:

    val packageInfo = pm.getPackageArchiveInfo(apkPath, PackageManager.GET_META_DATA)
    val isSplit = packageInfo.applicationInfo.metaData.getBoolean("com.android.vending.splits.required", false)

但是,对于其余的拆分 apk 文件,getPackageArchiveInfo在它们上使用只会返回 null。我找不到如何解析它们的清单以找到“拆分”属性。

所以我现在的问题是:

鉴于其余的拆分 APK 文件,我如何解析它们以检查它们确实是拆分 APK 文件,属于 base.APK 文件?

标签: androidapkandroid-app-bundle

解决方案


推荐阅读