A User Space Interface to the Android Runtime

Total Page:16

File Type:pdf, Size:1020Kb

A User Space Interface to the Android Runtime Amniote: A User Space Interface to the Android Runtime Zachary Yannes a and Gary Tyson Department of Computer Science, Florida State University, Tallahassee, U.S.A. Keywords: Android, Zygote, Runtime, Dalvik, Virtual Machine, Preloading, ClassLoader, Library. Abstract: The Android Runtime (ART) executes apps in a dedicated virtual machine called the Dalvik VM. The Dalvik VM creates a Zygote instance when the device first boots which is responsible for sharing Android runtime libraries to new applications. New apps rely heavily on external libraries in addition to the runtime libraries for everything from graphical user interfaces to remote databases. We propose an extension to the Zygote, aptly named Amniote, which exposes the Zygote to the user space. Amniote allows developers to sideload common third-party libraries to reduce application boot time and memory. Just like the Android runtime libraries, apps would share the address to the library and generate a local copy only when one app writes to a page. In this paper, we will address three points. First, we will demonstrate that many third-party libraries are used across the majority of Android applications. Second, execution of benchmark apps show that most page accesses are before copy-on-write operations, which indicates that pages from preloaded classes will infrequently be duplicated. Third, we will provide a solution, the Amniote framework, and detail the benefits over the traditional Zygote framework. 1 INTRODUCTION which is started after the kernel is loaded, preloads common runtime classes and resource files from the Recent studies have shown that Android devices have Android and javax packages into a read-only boot im- maintained substantially higher market shares com- age. When a new application is ready to launch, zy- pared to iOS, Windows, Blackberry, and other oper- gote forks a new VM and starts the process. The new ating systems (Katariya, 2017). With the increase of app contains a reference to the boot image rather than Android devices, application development has also in- a full copy. This allows multiple applications to share creased. A recent report by AppBrain shows that as of common classes and resource files, reducing memory January 1, 2018, there are roughly 3.5 million appli- utilization. cations in the Google Play Store. The growing trend The Android kernel employs a copy-on-write me- of Android development indicates that it is an ideal chanism for the boot image. Whenever an application candidate for research. writes to an address mapped to the shared boot im- Android applications contain a combination of age, the kernel copies that page to that application’s Java bytecode, native code, and resource files. Un- address space. This allows each application to main- like traditional Java applications, Android apps exe- tain a local copy of written pages. cute in a dedicated virtual machine called DalvikVM. DalvikVM has several unique features tailored to- Since the initial Android version release in 2009, wards mobile devices which have less resources than Google has released 14 versions, with the newest, Pie, those of a laptop or desktop computer. For example, currently in beta (Wikipedia, 2018). This is a rapid Dalvik VMs utilize a register-based construct rather development cycle for a relatively new operating sys- the stack-based execution of traditional Java VMs. tem. To keep up with the rapid changes to the An- This improves execution speed and reduces the com- droid API, Google released a dedicated integrated de- plexity of switching between applications. velopment environment (IDE), Android Studio. An- The primary difference between DalvikVM and droid Studio provides support for Maven reposito- traditional VMs is the Zygote. The zygote process, ries, which simplifies the process of linking to exter- nal libraries. This caused a paradigm shift of rely- a https://orcid.org/0000-0003-3098-0807 ing on third-party libraries for common Android util- 59 Yannes, Z. and Tyson, G. Amniote: A User Space Interface to the Android Runtime. DOI: 10.5220/0007715400590067 In Proceedings of the 14th International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE 2019), pages 59-67 ISBN: 978-989-758-375-9 Copyright c 2019 by SCITEPRESS – Science and Technology Publications, Lda. All rights reserved ENASE 2019 - 14th International Conference on Evaluation of Novel Approaches to Software Engineering ities such as graphic user interfaces (GUI) (Android, 2 THE JAVA ClassLoader 2018a; Android, 2018e; Android, 2018f), data stor- age mechanisms (Google, 2018b; Google, 2018c; An- Java VMs rely on a boot classpath which con- droid, 2018c), and code annotations (Android, 2018d; tains paths to all Java class files. This allows Java Google, 2018a; Android, 2018b). to support lazy loading, where classes are loaded There has been widespread adoption of many on-demand via a ClassLoader (Liang and Bracha, third-party libraries which are utilized by a large num- 1998). ClassLoaders also provide support for mul- ber of Android applications. Not only does this re- tiple namespaces, which allows a VM to have non- duce coding time but it also provides an opportu- unique class names which are resolved by unique nity optimization. Just as the Android/javax runtime package namespaces. For example, the Android SDK classes and resource files are referenced by many ap- provides the class android.app.Application contain- plications, so are the classes and resource files in a ing generic app data that is frequently extended to number of third-party libraries. contain app-specific data. In this case, the system The other option is to extend the functionality of ClassLoader will resolve the Android SDK’s Appli- the zygote process to the user space. The ability to ap- cation while a second application ClassLoader will pend classes and resource files to the zygote process’s resolve the memory space from user space would open up many As shown in (Liang and Bracha, 1998), Class- avenues for optimization. Therefore, we introduce a Loaders are typically implemented with a cache of framework called Amniote which provides methods loaded class data referenced by the class name. For of managing the zygote’s boot image from the user example, when the application requires a specific space. The Amniote framework also contains utilities class for the first time, a ClassLoader searches the for calculating common classes between a large set of classpath for the class file, loads the class file into applications. memory, and adds an entry into the ClassLoader’s The Amniote framework could also benefit mo- cache. Each subsequent use of that class then utilizes bile device vendors and Android Things developers. the class data found in the ClassLoader’s cache. Mobile vendors often fork Android with customized launchers, stock applications, and power monitoring (Peters, 2017). The applications in these forked An- 3 PREFETCHING droid versions likely share proprietary code which would benefit from adding to the boot image. An ad- ditional benefit would be quicker deployment of new ClassLoaders demonstrate a common cache problem Android version. Instead of vendors implementing where compulsory (or cold) misses accumulate since optimizations on the operating system, “profile” ap- the cache is initially empty and the first reference of plications could be written which optimize the zygote a class results in a cache miss. To circumvent this boot image depending on the type of applications the problem, prefetching fills the cache with classes it will user will be running. Similarly, Android Things de- likely access to avoid costly searches and disk I/O op- velopers deploy applications with a specific suite of erations. Cache prefetching is not a new solution. In required libraries. fact, preloading process works for both hardware and The remainder of this paper is organized as fol- software caches. Yet we limit the scope of this paper lows. In sections 2 and 3 we describe Java’s Class- to software caches. Loader and how it can benefit from prefetching in both traditional Java VMs and in Android’s Dalvik 3.1 Java VM Prefetching VMs. In section 4, we further explain the zygote pro- cess. In section 5, we analyze the commonly used An early approach, greedy prefetching, was used in third-party classes across a large sample of open- (Luk and Mowry, 1996) for recursive C program source applications. In Section 6, we evaluate the data structures. This was later extended in (Cahoon executions of applications in the Agave benchmark and McKinley, 1999) to Java programs, using intra- suite and stock Android applications. In Section 7, procedural data flow analysis to detect objects to we describe the Amniote framework. In Section 10, prefetch. Their approach demonstrates the effective- we conclude our findings and discuss future work on ness of greedy prefetching which relies upon inlining this topic. to remove unnecessary method calls. We will use a similar approach in Amniote to prefetch third-party library classes. Zaparanuks et. al present a Markov predictor for speculative class-preloading (Zaparanuks et al., 60 Amniote: A User Space Interface to the Android Runtime 2007). Using a Markov predictor allows accurate is constantly changing based on the user’s application prediction of which classes should be preloaded and preferences, it is difficult to determine which library when is the best time to do so. A similar approach is classes should be preloaded. Therefore, Amniote pro- taken by (Fulton, 2016). While these are novel and vides a dynamic preloading mechanism to user space robust methods, they only preload classes available so developers can exploit app category profiles. Our in the application. Android apps have the capability profiles are constructed based on app categories such of linking to third-party libraries in external jar files as games, internet, and navigation, but could be based which would have to be located and extracted first.
Recommended publications
  • New Youtube Downloader Android Youtube Video Downloader
    new youtube downloader android Youtube Video Downloader. Youtube Video Downloader is an Android app to download YouTube videos in different qualities in a matter of seconds so you can enjoy them as often as you want without having to use up your data or be connected to a WiFi network. The way Youtube Video Downloader works couldn't be simpler. Open the app to access the mobile version of YouTube. You'll have the option to interact with the video site as you usually would – browsing through the videos, doing searches, and enjoying your favorite content. When you find a video you like and want to download, you can do it by tapping a single button and in seconds you'll have it on your smartphone. The good thing about Youtube Video Downloader is that you can download the content – both the video (with and without audio) and the audio alone – in different formats. You can also pick from a certain quality range so you have the video or audio exactly how you want it. If despite the ease of use you don't fancy having to open Youtube Video Downloader every time you want to download something, you can always take advantage of a feature that lets you share the videos you're viewing on YouTube with the app. When you do you can pick the format you like best and download it without it interrupting your normal YouTube use. New Youtube video downloader. New YouTube video downloader is a tool that lets you watch and download all the videos you want.
    [Show full text]
  • Jpype Documentation Release 0.7.0
    JPype Documentation Release 0.7.0 Steve Menard, Luis Nell and others Jul 22, 2019 Contents 1 Parts of the documentation 3 1.1 Installation................................................3 1.2 User Guide................................................6 1.3 QuickStart Guide............................................. 17 1.4 API Reference.............................................. 27 1.5 JImport.................................................. 34 1.6 Changelog................................................ 36 1.7 Developer Guide............................................. 40 2 Indices and tables 53 Python Module Index 55 Index 57 i ii JPype Documentation, Release 0.7.0 JPype is a Python module to provide full access to Java from within Python. It allows Python to make use of Java only libraries, exploring and visualization of Java structures, development and testing of Java libraries, scientific computing, and much more. By gaining the best of both worlds using Python for rapid prototyping and Java for strong typed production code, JPype provides a powerful environment for engineering and code development. This is achieved not through re-implementing Python, as Jython/JPython has done, but rather through interfacing at the native level in both virtual machines. This shared memory based approach achieves decent computing preformance, while providing the access to the entirety of CPython and Java libraries. Contents 1 JPype Documentation, Release 0.7.0 2 Contents CHAPTER 1 Parts of the documentation 1.1 Installation JPype is available either as a pre-compiled binary for Anaconda, or may be build from source though several methods. 1.1.1 Binary Install JPype can be installed as pre-compiled binary if you are using the Anaconda Python stack. Binaries are available for Linux, OSX, ad windows are available on conda-forge.
    [Show full text]
  • Arxiv:1902.02610V2 [Cs.SE] 14 Feb 2019
    Noname manuscript No. (will be inserted by the editor) To the Attention of Mobile Software Developers: Guess What, Test your App! Luis Cruz · Rui Abreu · David Lo the date of receipt and acceptance should be inserted later Abstract Software testing is an important phase in the software development life- cycle because it helps in identifying bugs in a software system before it is shipped into the hand of its end users. There are numerous studies on how developers test general-purpose software applications. The idiosyncrasies of mobile software applications, however, set mobile apps apart from general-purpose systems (e.g., desktop, stand-alone applications, web services). This paper investigates working habits and challenges of mobile software developers with respect to testing. A key finding of our exhaustive study, using 1000 Android apps, demonstrates that mo- bile apps are still tested in a very ad hoc way, if tested at all. However, we show that, as in other types of software, testing increases the quality of apps (demon- strated in user ratings and number of code issues). Furthermore, we find evidence that tests are essential when it comes to engaging the community to contribute to mobile open source software. We discuss reasons and potential directions to address our findings. Yet another relevant finding of our study is that Continuous Integration and Continuous Deployment (CI/CD) pipelines are rare in the mobile apps world (only 26% of the apps are developed in projects employing CI/CD) { we argue that one of the main reasons is due to the lack of exhaustive and automatic testing.
    [Show full text]
  • Chargeurs De Classes Java (Classloader)
    http://membres-liglab.imag.fr/donsez/cours Chargeurs de classes Java (ClassLoader) Didier Donsez Université Joseph Fourier - Grenoble 1 PolyTech’Grenoble - LIG/ADELE [email protected] [email protected] 06/06/2009 Licence Cette présentation est couverte par le contrat Creative Commons By NC ND http://creativecommons.org/licenses/by-nc-nd/2.0/fr/ Didier Donsez, 2002-2009, ClassLoaders Donsez,2002-2009, Didier 2 06/06/2009 Kequoi ca un chargeur de classes ? Son rôle est 1) de charger le bytecode d’une classe depuis un artéfact (archive Java, répertoire distant …) 2) communiquer le bytecode à la machine virtuelle Didier Donsez, 2002-2009, ClassLoaders Donsez,2002-2009, Didier 4 06/06/2009 Pourquoi utiliser les chargeurs de classes Classes non présentes dans le CLASSPATH URLClassLoader, AppletClassLoader, … ex: WEB-INF/classes et WEB-INF/lib d’une WebApp ex: CODEBASE d’une applet, … Déchargement et Mise à jour du bytecode lors de l’exécution de la VM (runtime) Chargeurs de OSGi Modification du ByteCode à la volée au chargement Instrumentation AOP (Aspect Oriented Programming) BCEL, ASM Protection Chargement de ressources associées à la classe properties, images, … Recherche de Service Providers ou de Drivers META-INF/services (java.util.ServiceLoader de 6.0) Didier Donsez, 2002-2009, ClassLoaders Donsez,2002-2009, Didier 5 06/06/2009 Principe de la délégation (Java 2) Tout chargeur a un chargeur parent sauf le chargeur primordial Tout chargeur vérifie si la classe à charger n’a pas déjà été chargée par un chargeur
    [Show full text]
  • How Java Works JIT, Just in Time Compiler Loading .Class Files The
    How Java works JIT, Just In Time Compiler ● The java compiler takes a .java file and generates a .class file ● JVM ultimately translates bytecode into native code, each time ➤ The .class file contains Java bytecodes, the assembler the same bytecodes are processed, the translation into native language for Java programs code must be made ➤ Bytecodes are executed in a JVM (java virtual machine), ➤ If we can cache translated code we can avoid re-translating the valid bytecodes are specified by Sun the same bytecode sequence • What if third parties create platform/OS specific codes? ➤ Why not just translate the entire .java program into native code? ● The JVM interprets the bytecodes ➤ JVM is platform/OS specific, must ultimately run the code ● Still need the JVM, the JIT works in conjunction with the JVM, not in place of it ➤ Different JVMs will have different performance, JITs are part of the overall JDK/Java performance ● How are classes loaded into the JVM? Can this be thwarted? Duke CPS 108 14.1 Duke CPS 108 14.2 Loading .class files The ClassLoader ● The bytecode verifier “proves theorems” about the bytecodes ● The “Primordial” loader is built-in to the JVM being loaded into the JVM ➤ Sometimes called the “default” loader, but it’s not ➤ These bytecodes may come from a non-Java source, e.g., extensible or customizable the way other loaders are compile Ada into bytecodes (why?) ➤ Loads classes from the platform on which the JVM runs ● This verification is a static analysis of properties such as: (what are loader and JVM written in?) ➤
    [Show full text]
  • An Empirical Evaluation of Osgi Dependencies Best Practices in the Eclipse IDE Lina Ochoa, Thomas Degueule, Jurgen Vinju
    An Empirical Evaluation of OSGi Dependencies Best Practices in the Eclipse IDE Lina Ochoa, Thomas Degueule, Jurgen Vinju To cite this version: Lina Ochoa, Thomas Degueule, Jurgen Vinju. An Empirical Evaluation of OSGi Dependencies Best Practices in the Eclipse IDE. 15th International Conference on Mining Software Repositories, May 2018, Gothenburg, Sweden. 10.1145/3196398.3196416. hal-01740131 HAL Id: hal-01740131 https://hal.archives-ouvertes.fr/hal-01740131 Submitted on 27 Mar 2018 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. An Empirical Evaluation of OSGi Dependencies Best Practices in the Eclipse IDE Lina Ochoa Thomas Degueule Jurgen Vinju Centrum Wiskunde & Informatica Centrum Wiskunde & Informatica Centrum Wiskunde & Informatica Amsterdam, Netherlands Amsterdam, Netherlands Amsterdam, Netherlands [email protected] [email protected] Eindhoven University of Technology Eindhoven, Netherlands [email protected] ABSTRACT that can be implemented and tested independently. This also fos- OSGi is a module system and service framework that aims to fill ters reuse by allowing software components to be reused from one Java’s lack of support for modular development. Using OSGi, devel- system to the other, or even to be substituted by one another pro- opers divide software into multiple bundles that declare constrained vided that they satisfy the appropriate interface expected by a client.
    [Show full text]
  • API Compatibility Issues in Android: Causes and Effectiveness of Data
    Noname manuscript No. (will be inserted by the editor) API Compatibility Issues in Android: Causes and Effectiveness of Data-driven Detection Techniques Simone Scalabrino · Gabriele Bavota · Mario Linares-Vásquez · Valentina Piantadosi · Michele Lanza · Rocco Oliveto the date of receipt and acceptance should be inserted later Abstract Android fragmentation is a well-known issue referring to the adop- tion of different versions in the multitude of devices supporting such an operat- ing system. Each Android version features a set of APIs provided to developers. These APIs are subject to changes and may cause compatibility issues. To sup- port app developers, approaches have been proposed to automatically identify API compatibility issues. CiD, the state-of-the-art approach, is a data-driven solution learning how to detect those issues by analyzing the change history of Android APIs (“API side” learning). In this paper (extension of our MSR 2019 paper), we present an alternative data-driven approach, named ACRyL. ACRyL learns from changes implemented in apps in response to API changes (“client side” learning). When comparing these two solutions on 668 apps, for a total of 11,863 snapshots, we found that there is no clear winner, since the two techniques are highly complementary, and none of them provides a Scalabrino and Oliveto gratefully acknowledge the financial support of the Italian Ministry of Education and Research for the PON-ARS01 00860 project on “Ambient-intelligent Tele-monitoring and Telemetry for Incepting and Catering over hUman Sustainability - ATTICUS”. Bavota gratefully acknowledges the financial support of the Swiss National Science Foundation for the CCQR project (SNF Project No.
    [Show full text]
  • Kawa - Compiling Dynamic Languages to the Java VM
    Kawa - Compiling Dynamic Languages to the Java VM Per Bothner Cygnus Solutions 1325 Chesapeake Terrace Sunnyvale CA 94089, USA <[email protected]> Abstract: in a project in conjunction with Java. A language im- plemented on top of Java gives programmers many of Many are interested in Java for its portable bytecodes the extra-linguistic benefits of Java, including libraries, and extensive libraries, but prefer a different language, portable bytecodes, web applets, and the existing efforts especially for scripting. People have implemented other to improve Java implementations and tools. languages using an interpreter (which is slow), or by translating into Java source (with poor responsiveness The Kawa toolkit supports compiling and running vari- for eval). Kawa uses an interpreter only for “simple” ous languages on the Java Virtual Machine. Currently, expressions; all non-trivial expressions (such as function Scheme is fully supported (except for a few difficult fea- definitions) are compiled into Java bytecodes, which are tures discussed later). An implementation of ECMA- emitted into an in-memory byte array. This can be saved Script is coming along, but at the time of writing it is for later, or quickly loaded using the Java ClassLoader. not usable. Kawa is intended to be a framework that supports mul- Scheme [R RS] is a simple yet powerful language. It tiple source languages. Currently, it only supports is a non-pure functional language (i.e. it has first-class Scheme, which is a lexically-scoped language in the Lisp functions, lexical scoping, non-lazy evaluation, and side family. The Kawa dialect of Scheme implements almost effects).
    [Show full text]
  • Best Android App Download Youtube 10 Best Youtube Video Downloader Apps for Android in 2021
    best android app download youtube 10 Best YouTube video downloader apps for Android in 2021. YouTube is a well-known video-sharing website that allows users to stream, like, comment on, and post content. Streaming and downloading music videos is the most common online practice, especially among Millennials, who can interact with the digital video type for a better listening experience. For this convenience, some best YouTube video downloader apps now can make it simple to save videos in the format of your choice. These are simple to use applications that allow you to choose between high and low quality resolutions to fit your needs. Users can not import videos until YouTube has included a download button or connection on a specific service, according to YouTube’s Terms of Service. Disclaimer: D ownloading or making copies of copyrighted material is prohibited. If you are spotted doing it, you may face a hearing or a fine. Since YouTube has never taken action against a person who uses a YouTube video downloader app to download copyrighted content, the practice is still illegal. Is downloading YouTube videos legal? Some of you are well aware that downloading YouTube videos for the purposes of copying, reproducing, sale, or other commercial purposes is illegal, although no one is certain if downloading YouTube videos for personal use is indeed illegal. And the perplexing question “Is downloading YouTube videos legal?”. If you violate the Terms of Service, YouTube has a number of compliance remedies at its disposal. Anything from a suspension to a federal case might theoretically be on the agenda.
    [Show full text]
  • Download Youtube App for Android 4.0.3 Download Youtube App for Android 4.0.3
    download youtube app for android 4.0.3 Download youtube app for android 4.0.3. Completing the CAPTCHA proves you are a human and gives you temporary access to the web property. What can I do to prevent this in the future? If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware. If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices. Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store. Cloudflare Ray ID: 66c77a34bf5384bc • Your IP : 188.246.226.140 • Performance & security by Cloudflare. Download youtube app for android 4.0.3. Completing the CAPTCHA proves you are a human and gives you temporary access to the web property. What can I do to prevent this in the future? If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware. If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices. Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.
    [Show full text]
  • Newpipe Lightweight Youtube V0174 Mod Latest
    NewPipe (Lightweight YouTube) V0.17.4 [Mod] [Latest] 1 / 4 2 / 4 NewPipe (Lightweight YouTube) V0.17.4 [Mod] [Latest] 3 / 4 NewPipe (Lightweight YouTube) Do you like watching videos on ... Overview: NewPipe the lightweight YouTube experience for Android. ... Fix last opened video name used as file name when downloading after video share.. EDIT * NEW UPDATES * - NewPipe [Lightweight YouTube] [v0.17.4] [Mod] - SOURCE ... EDIT *Top APKs - CinemaHD v2 [v2.0.7-update 2] [Mod] - SOURCE ... EDIT Entertainment - Newest Movies HD [v5.6] - SOURCE .... Feb 6, 2020 - NewPipe (Lightweight YouTube) v0.16.0 [Mod] [Latest]. the lightweight YouTube experience for Android. Do you like watching videos on YouTube but looking for a simple app to do that? NewPipe .... A free lightweight Youtube frontend for Android. NewPipe does not use any Google framework libraries, or the YouTube API. It only parses the .... A libre lightweight streaming front-end for Android. - TeamNewPipe/NewPipe. ... Latest release · v0.18.6 · 4674431; Compare ... In this release the YouTube website version was updated. The old ... v0.17.4 · b861f21; Compare. Choose a tag to .... NewPipe (Lightweight YouTube) v0.17.4 MOD APK {APKMAZA]. NewPipe_0.18.0 apkmaza.net.apk 3.4 MB; APKMAZA - Best Source For Downloading Latest .... Welcome to NewPipe, the lightweight YouTube experience for Android.. NewPipe (Lightweight YouTube) v0.17.4 [Mod] Requirements: 4.4+ Overview: ... KikFlix TV - Movies & TV Shows [Mod] [Ad-Free] - Latest APK.. NewPipe (Lightweight YouTube) v0.18.1 [Mod] [Latest] Downlod mod apk . Here you find all apk unlock for free and full apk downlod from .... r/NewPipe: A lightweight YouTube streaming front-end for Android.
    [Show full text]
  • Android Open Source Download Free Open Source Android Mobile Software
    android open source download Free Open Source Android Mobile Software. Publitas Enterprise combines a powerful platform + strategic partnership to deliver online content solutions for today’s retail landscape. The only global payables automation platform that scales with you. libsdl-android. SDL library for Android, including several games. Magisk. Suite of open source tools for customizing Android. NewPipe. The lightweight & private YouTube experience for Android. The Fresh Project. Say hello to a no-frills Samsung Experience! License, Control, & Manage Multapplied SD-WAN to Deliver Multi-Cloud Managed Services. Open Camera. Camera app for Android. Amaze File Manager. Material design file manager for Android. React Native. Build mobile apps with React. Crater. Free & Open Source Invoice App for Freelancers & Small Businesses. LineageOS Android Distribution. A free and open-source operating system for various devices, based on the Android mobile platform. Latest news. Changelog 25 - Exemplary Eleven, Ravishing Recorder, Captivating Calendar, Beaming Backup. Ohai there, it's been a while. Nolen Johnson (npjohnson) & Anne-Sophie Massé. Individuality. Customization is paramount to productivity. That’s why LineageOS promises to push for user personalization and preference. Everyone is unique and your device should be too. Security. Your data, your rules. With powerful tools such as Privacy Guard, you are in control of what your apps can do whenever you want. Trust will help you understand the security of your device and warn you about possible threats. We take security very seriously: that’s why we deliver security updates every month to all our supported devices. And to make your device more secure, lock everything behind an enhanced lock screen.
    [Show full text]