IEEE TRANSACTIONS ON MOBILE COMPUTING 1 Trimming Mobile Applications for Bandwidth-Challenged Networks in Developing Regions
Qinge Xie, Qingyuan Gong, Xinlei He, Yang Chen, Senior Member, IEEE, Xin Wang, Member, IEEE, Haitao Zheng, Fellow, IEEE and Ben Y. Zhao, Member, IEEE
Abstract—Despite continuous efforts to build and update mobile network infrastructure, mobile devices in developing regions continue to be constrained by limited bandwidth. Unfortunately, this coincides with a period of unprecedented growth in the sizes of mobile applications. Thus it is becoming prohibitively expensive for users in developing regions to download and update mobile apps critical to their economic and educational development. Unchecked, these trends can further contribute to a large and growing global digital divide. Our goal is to better understand the source of this rapid growth in mobile app code size, whether it is reflective of new functionality, and identify steps that can be taken to make existing mobile apps more friendly to bandwidth constrained mobile networks. We hypothesize that much of this growth in mobile apps is due to poor resource/code management, and do not reflect proportional increases in functionality. Our hypothesis is partially validated by mini-programs, apps with extremely small footprints gaining popularity in Chinese mobile platforms. Here, we use functionally equivalent pairs of mini-programs and Android apps to identify potential sources of “bloat,” inefficient uses of code or resources that contribute to large package sizes. We analyze a large sample of popular Android apps and quantify instances of code and resource bloat. We develop techniques for automated code and resource trimming, and successfully validate them on a large set of Android apps. We hope our results will lead to continued efforts to streamline mobile apps, making them easier to access and maintain for users in developing regions.
Index Terms—Mobile applications, mini-programs, code bloat, lightweight applications, constrained network !
1 INTRODUCTION
N the rapid development of 5G technology today, there (e.g., Facebook, Uber, YouTube) has grown by an order of I still exists a persistent gap of mobile network access magnitude from 164MB in 2013 to about 1.9GB in 2017 [12]. between developing and developed areas. In developing In the US, these “growing” app sizes mean that software regions, bandwidth for mobile devices is still a very lim- updates now account for a big chunk of cellular bandwidth ited resource, where most users rely on cellular networks across the country [13], [14]. People in developing regions dominated by older infrastructure (2G or 2G+EDGE) [1], begin to rapidly switch from 2G to modern 4G phones for [2]. The result is overall poor quality of Internet access [3], increased consumption of mobile applications. There are with bandwidth of only hundreds of kbps [4], [5]. Despite quite a number of 4G phone users in developing regions efforts ranging from long-distance wireless links [6], [7], (17.9% in Indonesia and 22.5% in Philippines). However, it [8], localized cellular networks [2] to affordable commodity shows that 2G phones are still more shared and more active WiFi hotspots [9], growth in mobile bandwidth is still slow. on the network due to the lack of network infrastructure Actual bandwidth available to users is often constrained by in these regions [15], [16]. Unsurprisingly, studies already multiple factors including cost, last mile congestion, and show that larger mobile applications lead to stability or limited access to backhaul links. Upgrading network infras- usability problems on constrained networks [17], [18], [19], tructure in developing regions still remains a challenge as [20]. the incremental costs of equipments and limited availability In concrete terms, this means that users in developing of technical knowledge [10], [11]. regions will find it difficult or impossible to access some Unfortunately for users in developing regions, mobile of the most popular mobile apps critical to economic and applications (a.k.a., apps) worldwide are growing in size at educational development, despite studies that show tremen- an unprecedented pace, in part due to the growth of cheap dous impact from mobile apps on agriculture, health and or unlimited cellular plans. For example, traffic required education [21], [22], [23]. For example, Duolingo, a popular to download the top 10 most installed U.S. iPhone apps app for learning foreign languages, has an install package of size 20MB, and as of May 2018, provides frequent updates • Qinge Xie, Qingyuan Gong, Xinlei He, Yang Chen and Xin Wang with bug fixes that require a full download of the app each are with the School of Computer Science, Fudan University, China, week. Khan Academy, the popular online education app, and the Shanghai Key Lab of Intelligent Information Processing, Fudan has an install package of 22MB, and updates its software University, China, and Peng Cheng Laboratory, China. E-mail: {qgxie17, gongqingyuan, xlhe17, chenyang, xinw}@fudan.edu.cn roughly once every 2 weeks. Other popular applications • Haitao Zheng and Ben Y. Zhao are with the Department of Computer also have surprisingly large install packages. CodeSpark Science, University of Chicago, United States. Academy is at 59MB, Facebook is at 65MB, and Uber takes { } E-mail: htzheng, ravenben @cs.uchicago.edu 61MBs to download. Even simple apps from American Air- IEEE TRANSACTIONS ON MOBILE COMPUTING 2 lines and McDonald’s require 83MB and 43MB to download similar functionality but at a small fraction of the pack- respectively. Even more importantly, the majority of mobile age footprint to meet the resource constraints imposed by apps are designed for bandwidth rich regions, and develop- their parent apps, e.g., WeChat and Alipay2. For example, ers issue frequent updates. Recent studies show that 10 out WeChat limits its mini-programs to an installation package of the 12 most popular apps issue updates very frequently of 2MB (up to 8MB if using sub-packages) [30]. Tight limits (at least one update every two weeks) [24]. Most updates are on app package size allow these platforms to adopt a load- similar or the same size as original app installs. For users on-demand approach to app discovery, where users can in developing regions where a significant portion of their discover and run mini-programs “instantly” with negligible disposal income goes towards mobile bandwidth costs [25], delay. By comparing mini-programs with their Android app this is a severe disincentive towards application usage. counterparts detailedly and empirically, we identify the key One possible solution is to introduce lightweight ap- source of “code bloat” of Android apps. plications. It is worth pointing out that lightweight apps Until March 2020, there are 3.9 million available WeChat encourage users to download when they need to use an mini-programs and 450 million daily active users of WeChat app, and delete when not needed, which are usually not mini-programs. The success of mini-programs also indicates one-time things compared with regular applications. From the huge demand for such instant and lightweight apps. the earliest web applications to the current Lite applications, However, same as we mentioned above, mini-programs various Internet companies are also working on developing also require service providers to develop a specific version lightweight apps and they are not even just for developing and can not be quickly applied to Android apps at large- regions. Facebook Lite [26] is a new version of Facebook and scale. Starting with mini-programs, our ultimate goal is was introduced in 2015, which uses less data and works well to propose a framework that can quickly convert existing across all network conditions, even in an extremely slow normal mobile apps to a special type of instant/lightweight 2G network. Facebook Lite has already hit over 1 billion apps, i.e., apps that can be downloaded instantly due to downloads and their subsequent Messenger Lite [27] has small package sizes. Developers no longer need to design been downloaded more than 500 million times. The emerg- a specific lightweight version of the original app, thus the ing downloads indicate the huge demand of lightweight framework can be applied at large-scale. applications. However, existing lightweight apps require In our study, we analyze a large selection of Android service providers to design and develop a specific version, apps to understand the different software components and which can not be adopted directly for Android applications their contributions to overall app size. In the process, we as well as iOS applications on a large-scale. identify multiple types of “code bloat” that can be trimmed At first glance, these trends seem to predict a widening from app packages without impact to functionality, includ- digital divide where developing regions are losing access ing unreferenced third-party code and redundant resource to critical parts of the mobile app ecosystem. But is the files. We also develop generalizable techniques for trimming situation truly as dire as it seems? Intuitively, it seems code bloat from existing mobile apps with the experimental unlikely that this staggering growth in the sizes of mobile validation of usability after being trimmed. Our results apps is truly driven by growth in functionality. What factors show that combined with compacting images and documen- other than functionality are contributing to this growth? tation, eliminating code bloat can significantly reduce the Perhaps more importantly, how much of this growth is truly package sizes of many existing apps, making them much necessary for mobile apps, and how much can be traded more usable in bandwidth-constrained environments such off in return for app sizes more friendly to bandwidth- as developing regions. constrained networks? We summarize our key contributions as follows: In this paper, we describe our efforts to answer these • We collect a useful dataset of 200 pairs of mini- questions, through a deeper understanding of factors that programs and Android apps, and perform code anal- contribute to the accelerating growth in the sizes of mo- ysis on the dataset to understand potential sources bile applications. We use a variety of empirical tools and of code bloat. To identify potential benefits of mini- techniques to break down mobile applications1, and find program platforms like WeChat, we also implement that for a large number of mobile apps across all categories, a mini-program from scratch with identical function- much of the increases in app sizes can be attributed to the ality as an existing Android app, and analyze them to casual inclusion of both resource files and linked software understand sources of app size discrepancy. As far as libraries, much of which is never called by the mobile we know, we are the first to analyze mini-programs app code. These findings suggest it is possible to produce on a large-scale (also the first to analyze lightweight significantly smaller mobile apps suitable for bandwidth- apps on a large-scale). limited networks by trimming unreferenced library code • By deeply decompiling WeChat, the dominant mo- and making bandwidth-aware tradeoffs with resource files. bile application in China, we learn the library mech- Our hypothesis is partially validated by the popularity anism of mini-programs. And by comparing the li- of mini-programs [29], [30] or mini-apps [31], apps with ex- brary design mechanisms of mini-programs and An- tremely small footprints that run on top of mobile platforms droid library mechanism, we find the key difference in China. While some of them have reduced functionality likely arises from the lack of consistency in appli- compared with their mobile app counterparts, others retain 2. WeChat is the dominant mobile messaging and social platform in 1. Given the dominance of Android smart phones in developing China (1B+ users), and AliPay is the dominant mobile payment system regions [28], we focus exclusively on Android apps in this study. in China. IEEE TRANSACTIONS ON MOBILE COMPUTING 3
cation libraries across Android devices. The finding payment market. While WeChat might be analogous to a inspires us to make further optimization to Android union of Facebook and Venmo, Alipay might be a combina- apps. Meanwhile, our work can guide the following tion of PayPal and Amazon. research on mini-programs, WeChat and lightweight WeChat’s goal for its mini-programs is to introduce users applications. to new apps in real time, often scanning a QR code to • We perform a detailed analysis of 3,200 of the instantaneously install and run a mini-program [29]. Thus highest-ranked Android apps on Google Play, and mini-programs have to be extremely small in size. The cur- confirm that linked libraries is a dominant factor rent limit is 2MB for the entire installation package without in their overall app sizes. We use static analysis using subpackages, including code, libraries and resource to identify unreferenced methods and classes, and files. In reality, this development effort elevates WeChat to carefully consider the preprocessing, decompiling, an app ecosystem capable of competing against Apple’s trimming, re-packing and validation processes to AppStore or Google Play, and WeChat encourages its users remove unreferenced code from these apps. We run a to bypass traditional app stores entirely. Since launching in state exploration tool to estimate resource usage and January 2017, WeChat runs 580,000 mini-programs on 2018, find that significant pruning is possible for both code compared with 500,000 mobile apps published by Apple’s and resources. By integrating the analysis processes, AppStore between 2008 and 2012 [32]. we test the framework on the 3,200 Android apps The popularity of WeChat mini-programs led to a com- with the validation of usability after being trimmed. peting effort from AliPay, which launched their own “mini- The results show the effectiveness and correctness of app” platform in October 2017 [31]. AliPay’s platform also our trimming process. sets 2MB as the limit for install package size (up to 4MB if We note that Google is already spearheading developer using sub-packages), with an internal limit of 10MB for stor- initiatives for more lightweight mobile phone design in their age. Given their similarity, we focus our analysis on WeChat “Building for Billions” initiative3. Our effort is complemen- mini-programs, and use mini-programs in the paper to refer tary, in that we focus more on the question of bloat for to WeChat mini-programs. existing Android Apps, and how they could be retrofitted Mini-programs and mini-apps also share properties with to perform better in constrained networks. We introduce the several other alternative lightweight app platforms. Web idea of a streamlined mobile app platform for bandwidth- apps [33] are accessible via the mobile device’s web browser constrained networks, and propose an automated process like Safari or Chrome. The apps run on the server and visual to reduce code bloat in existing Android apps. It packs elements are sent to the mobile devices. Another type of commonly used APIs into a single library, allowing for reuse apps, called hybrid apps [34], can be regarded as a special and minimizing per-app package size. This platform could type between native mobile apps and web apps. Google be deployed by mobile phone OS developers like Google or announced Android instant apps [35] at Google I/O 2016. Android app (platform) developers like Tencent. We hope Users can tap to try an instant app without installing it first. this work leads to continued efforts on code trimming for An instant app only loads portions of the app on an on- existing mobile apps, and provides additional support for demand basis. We note that our goal is to streamline mobile lightweight development efforts like Building for Billions. apps that run on the device, which differs from these plat- Finally, while the net impact of our proposed code forms, since they both rely on network infrastructure [36]. trimming mechanisms can vary across different apps, code There is a new type of apps, called Lite apps, which is trimming is impactful on nearly every app we studied, and first released by Facebook. Lite apps (e.g., Facebook Lite, often the largest and most popular mobile apps offer the Messenger Lite and Line Lite) keep the core functions of most significant opportunities for code trimming. Our goal their original version and have smaller size, which are at is to shed a light on an overlooked approach for reducing the cost of having relatively fewer features and outdated code bloat, with the hope that this and follow-up work interfaces compared with original version. However, for will increase awareness to mobile developers and encourage releasing a Lite version app, the service provider needs to them to utilize more efficient code reuse. design and develop a specific version, which can not be wide-scale adopted. There are only two apps in the top free 200 list [37] on Google Play have their Lite versions now, 2 BACKGROUNDAND RELATED WORK i.e., Facebook Lite and Messenger Lite.
Mini-programs and Lightweight Apps. We begin by Program Debloating. Code redundancy is a common providing some background on the development of mini- phenomenon in software engineering, which not only leads programs by WeChat and Alipay. Mini-programs provide to a waste of memory space/network traffic, but also in- an extreme example of what is possible if code size were creases the risks of being attacked [38], [39]. Therefore, prioritized over all other concerns. program debloating, as a feasible solution, is being valued WeChat and Alipay are the two leading Internet apps in by researchers. China, in both users and influence. WeChat is a ubiquitous Techniques have been proposed for Java and Android messaging platform with a mobile payment component that applications debloating. RedDroid [40] removes the unused has become more accepted in China than cash. Alipay is a methods and classes in Android applications by statically Chinese financial conglomerate that dominates the mobile construct an overapproximate call graph for the analyzed application. However, the authors failed to consider an- 3. https://developer.android.com/topic/billions/ alyzing the library’s redundancy and the work lacked a IEEE TRANSACTIONS ON MOBILE COMPUTING 4 large-scale verification of apps’ usability. JRed [41] trims TABLE 1 unused code from both Java applications and Java Runtime Constraints on mini-programs Environment by static analysis. There has been a lot of research aimed at program Restricted Item Description debloating in various applications. In response to software ≤ bloated in commodity software, RAZOR [42] performs code Page Depth 5 reduction for deployed binaries. With the booming devel- Package Size ≤ 2MB (8MB if using subpackage) opment of machine learning, it is also starting to be used Local Storage ≤ 10MB per WeChat user in program debloating. Heo et al. [43] proposed a system API Usage WeChat offers certain APIs for development called Chisel to enable programmers to debloat programs effectively. They used a reinforcement learning-based ap- proach to accelerate the search for the reduced program. TABLE 2 Modern firmware also contains a mass of unnecessary code Common structure of mini-program installation package and modules. DECAF [44] was proposed for automatically trimming a wide class of commercial UEFI firmware. Azad File / Folder Name Description Correspondence in Android APK et al. [45] focused on PHP applications and firstly analyzed app-service.js Main program logic codes Android Dex files the security benefits of debloating web applications. app-config.json Common settings file AndroidManifest.xml Library/API Usage and Dependency. It is often the page-frame.html The integration of layout Layout files files of all pages case that the client code uses an API in an inefficient Pages folder CSS configuration files of Layout files way [46]. Developers are having difficulty balancing be- every page tween the predictability of fixed version dependencies and Other folders or files Other resource files Other folders or files the agility of flexible ones [47]. Several studies are dedicated to improving the use of third-party libraries. Kawrykow et al. [46] developed a tool to automatically detect redundant 3.1 Overview code and improve API usage in Java projects. Lammel et al. [48] designed an approach to deal with large-scale API- Mobile apps face few design constraints other than size usage analysis of open-source Java projects. This technique limit. Google Play [53] limits Android apps by 100MB helps with designing and defending mapping rules for API (Android 2.3+) but allows two expansion files totalling up migration in terms of relevance and applicability. Wang et to 4GB; iOS allows 4GB for any submission to its App al. [49] proposed two qualified metrics for mining API- store [54]. A measurement study in 2017 shows that the usage patterns, i.e., succinctness and coverage. They further average sizes of iOS and Android apps are 38MB and 15MB, proposed an approach called UP-Miner, for mining succinct respectively [12]. and high-coverage usage patterns of API methods from Mini-programs must abide by a number of restrictions, source code. Huang et al. [50] implemented a method to in their page depth (max number of hops necessary to reach update third-party libraries with drop-in replacements by any page), local storage, installation package size, and API their newer versions. usage, which we summarize in Table 14. WeChat 6.6.0+ The third-party libraries also increase apps’ attack sur- allows the usage of subpackages in mini-programs, but still face. Backes et al. [51] reported that two long-known se- limits the size of a single package to 2MB and the total curity vulnerabilities in popular libraries were still present sum of all packages to 8MB [30]. To meet these constraints, in the top apps. Derr et al. [52] showed that extensive developers often simplify app features and user interface use of third-party libraries could introduce critical bugs (UI) elements in mini-program versions of their mobile and security vulnerabilities, which puts users’ privacy and app. Furthermore, mini-programs use JavaScript rather than sensitive data at risk. Java (used by Android apps). We note that while code size across these two languages can vary (up to 20% [55]), any syntactical differences are unlikely to be meaningful. 3 MINI-PROGRAMSVS.MOBILE APPS This is because APKs and mini-programs are stored under compression, and compression algorithms are likely to be The proliferation of mini-programs in China demonstrates more efficient on more verbose representations. that for hundreds of thousands of mobile apps, their core Using a common unpack tool [56] to parse mini- functionality could be implemented in an extremely com- programs, we are able to compare the overall code composi- pact form. The question is, what are the tradeoffs necessary tion of mini-programs and their Android counterparts (see to obtain that compact implementation? What accounts for Table 2). Implemented using JavaScript, a mini-program’s the difference in code size; is it more efficient code, or were main program code resides in app-service.js, which is analo- there significant losses in functionality? Answering these gous to the Java Bytecode file in the Android APK (i.e., An- questions will be a vital help for trimming mobile apps. In droid Dex file). There is a common setting file (app-con.json), this section, we search for an answer by comparing mini- analogous to AndroidManifest.xml file in the Android APK. programs with their Android app counterparts, in both Each page appeared in the mini-program is registered in the app content/features and code structure. We describe two common setting file, and there is a folder for every page detailed illustrative examples, and then present results of an empirical analysis of 200 of the most popular mini-programs 4. We omit game-related mini-programs in our table, which are and their Android app counterparts. granted 50MB for local storage. IEEE TRANSACTIONS ON MOBILE COMPUTING 5
Textarea to input the Example 2: Today Weather App. In an app like YouDao text to be translated Translation Dictionary, the developer made specific trade- offs in choosing which areas to trim. We wanted to find Camera Search for translator words in voice a more controlled example where full functionality was
Recommended column preserved in the mini-program, so we could better under- stand the impact of compressing components unrelated to Textarea to input the text to be translated Advertisements core features. The only way to ensure a true apple-to-apple comparison was to implement a mini-program ourselves, ensuring that the functionality of the Android app was preserved perfectly. Feature buttons We found a reasonably sized Android app with simple program logic and single function, the Today Weather app, an Android app from the 360 app store5 with no matching (a) Mini-program (b) Android App mini-program, which provides city-wise weather conditions Fig. 1. NetEase YouDao dictionary application in China. Figure 2 shows the Today Weather app and its mini- program version we developed. To build a matching mini-program, we first decompiled Choose area the Android app from its Dalvik bytecode into Java byte- button Refresh Choose area button button Refresh button code using the well-known tool dex2jar [58]. Since the app’s
Choose the Choose the program code, logic and function calls are all accessible, area to check area to check 6 the weather the weather we replicated them completely with one minor exception . We also made sure that resource files like images were
The weather The weather also identical to their Android counterparts. We tested our information information mini-program thoroughly to confirm that it offers the same (a) Mini-program (b) Android app interfaces, program logic, resources, and function calls. Table 4 lists the package analysis of the two programs. Fig. 2. Today Weather application While providing the same features, program logic, resources and network requests, the mini-program still achieves sig- nificant reduction in app size: 82.1KB vs. 527KB (com- to include its CSS configuration. The main page design code pressed) or 1452KB (uncompressed) for the Android app, (HTML) is packaged in page-frame.html, analogous to Layout mapping to a factor of 6× to 18×. files in Android. A closer look shows that while the procedure code file in the Android app occupies 1.36MB (93.80% of the package after decompressing the APK), the corresponding code file 3.2 Code Package Composition in the mini-program is only 8.38KB, which is 160 times smaller. In fact, the procedure code files of the Android Next, we perform detailed comparisons between two mini- app is dominated by the Java library files, which takes programs and their Android counterparts. One is a popular up 95.59% of the code space. At least in this example, we Android app whose developers implemented their own find that we can significantly trim an Android app while mini-program, and the other is an Android app for which preserving functionality and content (images and features). we implemented a mini-program that precisely replicated The key here is streamlining the procedure code, and more its functionality. specifically, its Java library file. Example 1: YouDao Translation Dictionary. YouDao [57] Summary of Findings. These two examples show that is a very popular multi-language (7+ languages) translation developers can achieve drastic reductions by shrinking all dictionary app, which has an official mini-program version. components of mobile apps, including features and content As shown in Figure 1, the mini-program includes the app (e.g. images). But even while preserving features and con- logo and an input box for translation, while the full app tent, we can achieve significant savings by handling libraries provides a more sophisticated UI and several extra features more efficiently. We revisit this in more detail in § 4. (camera translator, human translator, audio word search, courses and vocabulary book). Table 3 lists the per-component code comparison be- 3.3 Pair-wise Package Analysis tween the mini-program and the Android app (we discuss Now that we have a high-level sense of potential areas these components in more detail later in §4). We see that for trimming mobile apps, we extend our comparison of the total footprint for the mini-program is 0.2MB, compared Android apps and mini-programs to 200 of the most popular with 47.2MB for the Android app (219 times smaller). Across app pairs. The goal is to get a high level picture of how code, each analogous component, the mini-program version is resources (e.g. images) and functionality compare across smaller by at least a factor of 100! This is an example where all aspects of the Android app were compacted to generate 5. http://zhushou.360.cn/ its matching mini-program. While the core functionality 6. Due to security restrictions on mini-programs (HTTPS requests only), we had to change HTTP requests in the Android app to HTTPS remains, some non-core features were cut and the UI was requests in the mini-program. This minor change should have zero simplified. impact on the outcome of our analysis. IEEE TRANSACTIONS ON MOBILE COMPUTING 6
TABLE 3 Package analysis of mini-program and Android app versions of YouDao Dictionary
Android App Mini-program
Total installation package size APK size 47.2 MB WXAPKG size 0.215 MB Size after decompressing 60.6 MB Size after parsing 0.232 MB Res Resources Images 12.25 MB (20.21%) Images 0.161 MB (69.4%) Layout files 2.47 MB (4.08%) HTML/CSS 0.049 MB (21.5%) Assets Resources Assets 17.43 MB (28.76%) -- C++ Library Lib 15.3 MB (25.25%) -- Procedure Code Android Dex file 10.5 MB (17.33%) app-service.js 0.015 MB (6.5%)
TABLE 4 Package analysis of mini-program and Android app versions of Today Weather
Android App Mini-program
Total installation package size APK size 527 KB WXAPKG size 82.1 KB Size after decompressing 1452.01 KB Size after parsing 81.84 KB Res Resource Images 65.63 KB (4.52%) Images 30.17 KB (36.88%) Layout file 6.80 KB (0.47%) HTML/CSS 42.82 KB (52.32%) Assets Resource Assets 0 KB (0%) -- C++ Library Lib 0 KB (0%) -- Procedure Code Android Dex file 1361.92 KB (93.80%) app-service.js 8.38 KB (10.23%) Configuration File AndroidManifest.xml 2.42 KB (0.17%) app-config.json 0.47 KB (0.57%)
• Composition of installation package: popular mobile apps, and how much room for trimming the proportion each category represents. of individual components that make up the installation package, including images, procedure code and support Dataset. We build a list of popular mini-programs from files. the monthly list of top-100 mini-programs published by We use the reverse engineering tool Apktool [59] to aldwx.com7. We include all mini-programs ever to appear decompile each target Android app and convert the Dalvik on the top-100 list before October 2018. For each mini- bytecode to Smali8 code for our analysis. program, we identify its corresponding Android app coun- Key Observations. We plot key results from these metrics terpart using a combination of application name, developer, in Figure 3. All graphs are sorted by descending order of the official identification, and manual confirmation. Our final size of the Android app, ranked 1 (largest) to 200 (smallest). dataset includes the 200 popular mini-programs and their Thus all graphs are consistent on the x-axis. From these official Android app counterparts. results, we make three main observations. For each mini-program and Android app pair, we ana- • Mini-programs and their equivalent Android counter- lyze several key metrics to better understand how the two parts differ significantly in the size of installation package. differ in content, functionality and software package size. Mini-programs are 5-50 times smaller than their Android • Installation package size: the size of installation package counterparts. Surprisingly, there seems to be little or no for mini-program (WXAPKG size) and the Android app correlation between package sizes (Figure 3(a)); several (APK size). large Android apps (tens of MBs in size) translated to some of the smallest mini-programs (<100KB). • Image size and number of images: total size of all image files and total number of image files in the respective • Not surprisingly, Android apps contain much more im- packages. Applications with richer features tend to have ages and larger images than their mini-program coun- more images. terparts (Figure 3(b)). Bigger, more feature-rich Android apps lost more features in the translation to their mini- • Page count: a measure of number of features provided by the application. Since mini-programs register individual program counterparts. pages in their common settings file, i.e., app-config.json, • For most Android apps, program code (procedure code we use this to count the pages for each mini-program and C++ library) dominates the installation package, as a measure of features in the program. Android apps often taking 60-70% of the total footprint. Images only register each activity in their AndroidManifest.xml file, and occupy 10-20%. Not surprisingly, images often dominate we use the number of activities as the measure of features the much smaller installation packages of mini-programs. for Android apps. In our experience, mini-program pages Considered as a whole, our analysis of popular pairs of correlate roughly with Android activities. mini-program / Android apps shows that current Android apps have used a variety of techniques to generate compact
7. https://www.aldwx.com/ is a third-party statistics platform for 8. Smali/Baksmali is an assembler/disassembler for the dex format WeChat mini-programs. used by Android’s Java VM implementation. IEEE TRANSACTIONS ON MOBILE COMPUTING 7