如何在运行时知道 app bundle (.aab) 配置?
Posted
技术标签:
【中文标题】如何在运行时知道 app bundle (.aab) 配置?【英文标题】:How to know app bundle (.aab) config after at run time? 【发布时间】:2020-10-19 23:26:46 【问题描述】: bundle
density
enableSplit true
language
enableSplit true
abi
enableSplit true
我们将在 Google Play 商店上传 .aab 应用程序包。并且在应用安装后,我们的后端需要知道该应用安装了哪个特定的 ABI 版本。
有没有办法知道在运行时安装了哪个 ABI、密度或语言版本?
【问题讨论】:
【参考方案1】:您可以通过 PackageManager 查询设备上安装的拆分 APK 的名称。
见https://developer.android.com/reference/kotlin/android/content/pm/PackageInfo?hl=en#splitnames
/** Returns the set of installed APKs or an empty set if a single APK is installed. */
private Set<String> getInstalledSplits()
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
return Collections.emptySet();
PackageInfo packageInfo;
try
PackageManager pm = context.getPackageManager();
packageInfo = pm.getPackageInfo(context.getPackageName(), GET_META_DATA);
catch (NameNotFoundException e)
throw new RuntimeException(e);
String[] installedSplits = packageInfo.splitNames;
if (installedSplits == null)
return Collections.emptySet();
return new HashSet<>(Arrays.asList(installedSplits));
如果阅读ApplicationInfo#splitSourceDirs 更方便,您也可以使用 APK 的名称
警告:请记住,所有split*
属性仅在安装拆分时才有值;否则,当安装单个 APK 时,它们会返回 null
。因此,如果您以 pre-L 设备为目标,您可能希望单独处理独立 APK 的情况,在这种情况下,您不能使用已安装拆分的名称来确定已提供哪个 ABI,您必须实际检查APK。
【讨论】:
谢谢,它有帮助。同样***.com/a/53045768/3598052 你的这个解决方案节省了我的时间。以上是关于如何在运行时知道 app bundle (.aab) 配置?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Android App Bundle 测试在舞台环境中运行的应用?
Google Play上架:上传应用强制要求Android App Bundle (AAB) 格式