model to select app variants from a set of to-be mined Android apps, where each non-leaf node is represented by a package segment (e.g., Baidu) while leaf node is represented by the remaining package segments (e.g., BaiduMap). A branch from the root node (i.e., com) to a leaf node (e.g., BaiduMap) represents a unique package name (i.e., the Baidu Map). Because each Android app can have different versions, e.g., each update will result in a version, each leaf node has further been affiliated with a list of meta-data of app versions. The time line of the vertical axis shows that the affiliated list is ranked through times and the apps it contains are actually different versions of the app indicated by the leaf node. Given a time point, the tree model also gives a way to identify family variants. For example, as shown in the red dashed rectangle, given the latest time point, we are able to collect a set of variants for company com.baidu.

![A Simplified Example Showing how App Variants and Versions are Selected.[]{data-label="fig:variants"}](resources/fig_app_variants.pdf){width="0.8\linewidth"}

In this research direction, based on a clustering-based approach, we have collected in total 75,963 families of apps: The median number of variants in 