{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:14:41Z","timestamp":1750220081371,"version":"3.41.0"},"reference-count":45,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2022,10,29]],"date-time":"2022-10-29T00:00:00Z","timestamp":1667001600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Embed. Comput. Syst."],"published-print":{"date-parts":[[2023,1,31]]},"abstract":"<jats:p>Open source hardware such as RISC-V has been gaining substantial momentum. Recently, they have begun to embrace Google\u2019s Android operating system to leverage its software ecosystem. Despite the encouraging progress, a challenging issue arises: a majority of Android applications are written in native languages and need to be recompiled to target new hardware platforms. Unfortunately, this recompilation process is not scalable because of the explosion of new hardware platforms. To address this issue, we present WasmAndroid, a high-performance cross-platform runtime for native Android applications. With WasmAndroid, developers can compile their source code to WebAssembly, an efficient and portable bytecode format that can be executed everywhere without additional reconfiguration. Developers can also transpile existing application binaries to WebAssembly when source code is not available. WebAssembly\u2019s language model is very different from other common languages. This mismatch leads to many unique implementation challenges. In this article, we provide workable solutions and conduct a thorough system evaluation. We show that WasmAndroid provides acceptable performance to execute native applications in a cross-platform manner.<\/jats:p>","DOI":"10.1145\/3530286","type":"journal-article","created":{"date-parts":[[2022,4,14]],"date-time":"2022-04-14T10:07:30Z","timestamp":1649930850000},"page":"1-19","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["WasmAndroid: A Cross-Platform Runtime for Native Programming Languages on Android"],"prefix":"10.1145","volume":"22","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-0340-9392","authenticated-orcid":false,"given":"Elliott","family":"Wen","sequence":"first","affiliation":[{"name":"The University of Auckland, Grafton, Auckland, New Zealand"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1221-8045","authenticated-orcid":false,"given":"Gerald","family":"Weber","sequence":"additional","affiliation":[{"name":"The University of Auckland, Grafton, Auckland, New Zealand"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7441-5493","authenticated-orcid":false,"given":"Suranga","family":"Nanayakkara","sequence":"additional","affiliation":[{"name":"The University of Auckland, Grafton, Auckland, New Zealand"}]}],"member":"320","published-online":{"date-parts":[[2022,10,29]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"Android Has Been Ported to a RISC-V Board. Retrieved from https:\/\/www.xda-developers.com\/android-risc-v-port\/."},{"key":"e_1_3_2_3_2","unstructured":"Android Runtime (ART) and Dalvik. Retrieved from https:\/\/source.android.com\/devices\/tech\/dalvik."},{"key":"e_1_3_2_4_2","unstructured":"Clang: A C Language Family Frontend for LLVM. Retrieved from https:\/\/clang.llvm.org\/."},{"key":"e_1_3_2_5_2","unstructured":"Dalvik bytecode. Retrieved from https:\/\/source.android.com\/devices\/tech\/dalvik\/dalvik-bytecode."},{"key":"e_1_3_2_6_2","unstructured":"FFmpeg: A Cross-platform Solution to Record Convert and Stream Audio and Video. Retrieved from https:\/\/github.com\/FFmpeg\/FFmpeg."},{"key":"e_1_3_2_7_2","unstructured":"How Alibaba Is Porting RISC-V to the Android OS. Retrieved from https:\/\/riscv.org\/blog\/2021\/11\/how-alibaba-is-porting-risc-v-to-the-android-os-guoyin-chen-alibaba\/."},{"key":"e_1_3_2_8_2","unstructured":"Kissdb: Keep It Simple Stupid Database. Retrieved from https:\/\/github.com\/adamierymenko\/kissdb."},{"key":"e_1_3_2_9_2","unstructured":"POWER Instruction Set Architecture (ISA). Retrieved from https:\/\/openpowerfoundation.org\/tag\/microwatt\/."},{"key":"e_1_3_2_10_2","unstructured":"THead Android RISC-V Port. Retrieved from https:\/\/github.com\/T-head-Semi\/aosp-riscv."},{"key":"e_1_3_2_11_2","unstructured":"WebAssembly Exception Handling Proposal. Retrieved from https:\/\/github.com\/WebAssembly\/exception-handling."},{"key":"e_1_3_2_12_2","unstructured":"WebAssembly SIMD proposal. Retrieved from https:\/\/v8.dev\/features\/simd."},{"key":"e_1_3_2_13_2","unstructured":"WebAssembly Stack Switching Proposal. Retrieved from https:\/\/github.com\/WebAssembly\/stack-switching."},{"key":"e_1_3_2_14_2","unstructured":"The WebAssembly System Interface. Retrieved from https:\/\/wasi.dev\/."},{"key":"e_1_3_2_15_2","unstructured":"Xilinx Virtex-7 FPGA VC707 Evaluation Kit. Retrieved from https:\/\/www.xilinx.com\/products\/boards-and-kits\/ek-v7-vc707-g.html."},{"key":"e_1_3_2_16_2","first-page":"46","volume-title":"Proceedings of the USENIX Annual Technical Conference, FREENIX Track","volume":"41","author":"Bellard Fabrice","year":"2005","unstructured":"Fabrice Bellard. 2005. QEMU, a fast and portable dynamic translator. In Proceedings of the USENIX Annual Technical Conference, FREENIX Track, Vol. 41. 46."},{"key":"e_1_3_2_17_2","first-page":"21","volume-title":"Proceedings of the RSA Conference","author":"Fora Pau Oliva","year":"2014","unstructured":"Pau Oliva Fora. 2014. Beginners guide to reverse engineering android apps. In Proceedings of the RSA Conference. 21\u201322."},{"key":"e_1_3_2_18_2","unstructured":"C. Grothoff. 2014. GNU Libmicrohttpd: A Library for Creating an Embedded http Server. Retrieved from https:\/\/www.gnu.org\/software\/libmicrohttpd\/."},{"key":"e_1_3_2_19_2","first-page":"185","volume-title":"ACM SIGPLAN Notices","author":"Haas Andreas","year":"2017","unstructured":"Andreas Haas, Andreas Rossberg, Derek L. Schuff, Ben L. Titzer, Michael Holman, Dan Gohman, Luke Wagner, Alon Zakai, and J. F. Bastien. 2017. Bringing the web up to speed with WebAssembly. In ACM SIGPLAN Notices, Vol. 52. ACM, 185\u2013200."},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/3302505.3310084"},{"key":"e_1_3_2_21_2","first-page":"6","volume-title":"Workshop on Instruction Set Architecture Specification (co-located with ITP 2019)","author":"Hendrix Joe","year":"2019","unstructured":"Joe Hendrix, Guannan Wei, and Simon Winwood. 2019. Towards verified binary raising. In Workshop on Instruction Set Architecture Specification (co-located with ITP 2019). 6."},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/1186736.1186737"},{"key":"e_1_3_2_23_2","volume-title":"Programming in Lua","author":"Ierusalimschy Roberto","year":"2006","unstructured":"Roberto Ierusalimschy. 2006. Programming in Lua. Roberto Ierusalimschy."},{"key":"e_1_3_2_24_2","volume-title":"Proceedings of the 13th EAI International Conference on Body Area Networks (BodyNets\u201918)","author":"Jacobsson Martin","year":"2018","unstructured":"Martin Jacobsson and Jonas W\u00e5hsl\u00e9n. 2018. Virtual machine execution for wearables based on WebAssembly. In Proceedings of the 13th EAI International Conference on Body Area Networks (BodyNets\u201918)."},{"key":"e_1_3_2_25_2","first-page":"107","volume-title":"Proceedings of the USENIX Annual Technical Conference (USENIX ATC\u201919)","author":"Jangda Abhinav","year":"2019","unstructured":"Abhinav Jangda, Bobby Powers, Emery D. Berger, and Arjun Guha. 2019. Not so fast: Analyzing the Performance of WebAssembly vs. native code. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC\u201919). 107\u2013120."},{"key":"e_1_3_2_26_2","doi-asserted-by":"publisher","DOI":"10.1109\/SPRO.2015.10"},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.1201\/9780849332517"},{"key":"e_1_3_2_28_2","first-page":"284","volume-title":"Proceedings of the 12th International Conference on Control, Automation and Systems","author":"Kim Yeong-Jun","year":"2012","unstructured":"Yeong-Jun Kim, Seong-Jin Cho, Kil-Jae Kim, Eun-Hye Hwang, Seung-Hyun Yoon, and Jae-Wook Jeon. 2012. Benchmarking Java application using JNI and native C application on Android. In Proceedings of the 12th International Conference on Control, Automation and Systems. IEEE, 284\u2013288."},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/3243734.3243858"},{"key":"e_1_3_2_30_2","volume-title":"Proceedings of the BSD Conference","volume":"5","author":"Lattner Chris","year":"2008","unstructured":"Chris Lattner. 2008. LLVM and Clang: Next generation compiler technology. In Proceedings of the BSD Conference, Vol. 5."},{"key":"e_1_3_2_31_2","volume-title":"Flex & Bison: Text Processing Tools","author":"Levine John","year":"2009","unstructured":"John Levine. 2009. Flex & Bison: Text Processing Tools. O\u2019Reilly Media, Inc."},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-019-09727-4"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/2980930.2907959"},{"key":"e_1_3_2_34_2","doi-asserted-by":"crossref","DOI":"10.1007\/978-1-4302-0172-4","volume-title":"The Definitive Guide to SQLite","author":"Owens Mike","year":"2006","unstructured":"Mike Owens. 2006. The Definitive Guide to SQLite. Apress."},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.5555\/2821295"},{"key":"e_1_3_2_36_2","doi-asserted-by":"publisher","DOI":"10.1145\/2629335"},{"key":"e_1_3_2_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/3204949.3208126"},{"issue":"212","key":"e_1_3_2_38_2","first-page":"6","article-title":"The openrisc processor: Open hardware and linux","volume":"2011","author":"Tandon James","year":"2011","unstructured":"James Tandon. 2011. The openrisc processor: Open hardware and linux. Linux J. 2011, 212 (2011), 6.","journal-title":"Linux J."},{"key":"e_1_3_2_39_2","volume-title":"Design of the RISC-V Instruction Set Architecture","author":"Waterman Andrew Shell","year":"2016","unstructured":"Andrew Shell Waterman. 2016. Design of the RISC-V Instruction Set Architecture. Ph.D. Dissertation. UC Berkeley."},{"key":"e_1_3_2_40_2","doi-asserted-by":"publisher","DOI":"10.1145\/3243734.3243835"},{"key":"e_1_3_2_41_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICWS49710.2020.00070"},{"key":"e_1_3_2_42_2","doi-asserted-by":"publisher","DOI":"10.1109\/PerComWorkshops48775.2020.9156135"},{"key":"e_1_3_2_43_2","doi-asserted-by":"publisher","DOI":"10.1145\/3461648.3463849"},{"key":"e_1_3_2_44_2","unstructured":"R. Winsniewski. 2012. Android\u2013apktool: A tool for reverse engineering android apk files. https:\/\/ibotpeaches.github.io\/Apktool\/."},{"key":"e_1_3_2_45_2","doi-asserted-by":"publisher","DOI":"10.1145\/3316482.3326354"},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1109\/MCSE.2018.110150345"}],"container-title":["ACM Transactions on Embedded Computing Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3530286","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3530286","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T18:09:24Z","timestamp":1750183764000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3530286"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,10,29]]},"references-count":45,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2023,1,31]]}},"alternative-id":["10.1145\/3530286"],"URL":"https:\/\/doi.org\/10.1145\/3530286","relation":{},"ISSN":["1539-9087","1558-3465"],"issn-type":[{"type":"print","value":"1539-9087"},{"type":"electronic","value":"1558-3465"}],"subject":[],"published":{"date-parts":[[2022,10,29]]},"assertion":[{"value":"2021-10-08","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-04-03","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-10-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}