Hello everybody, I’m Ashish Shekar a.k.a. CodekidX and I’m the new member of the Open GApps App developers team. I’ll be listing all the things that I did for this 1.1 update and also who I am and what inspired me to join the team.
Changes in version 1.1
Version 1.1 of the Open GApps App brings many new changes, listed here below.
One of the new feature that you’ll note right off-the-bat (if you were waiting for ExtSD support) is the new Storage & Download Directory Chooser, it’s open source and if you are a developer you can include it in your app here.
I thought of the things that the user would like to see in a storage chooser, like the “Quick Overview” of the available disk space on a storage volume, so that you can decide where to download the Open GApps packages depending on the available space in your volume.
The design of the storage chooser is unlike any other similar library out there. It’s material design, for real. It follows the guidelines and I added some spice to it to look unique. Also you’ll be greeted with a smooth transition of the chooser that is provided by the library.
The feature that has become one of the must have things in any app is a night mode theme. It’s a lot darker and way better looking than the proprietary dark colors and better integrated with all the other aspects of the app. It took some time for us to perfect it, but I think we did!
Keep older packages
From 1.1 onwards the app will support more advanced cleaning up old Open GApps packages for you. All you need to do is set the number of packages in the settings to keep track, it’ll detect and delete old packages which will keep your device neat and clean. While offering you the option to always retain back-ups, if any issue with a new package version might arise.
Winter is coming!
With the 1.1 update you have the opportunity to find the new Easter Egg created by me, I made it a bit challenging so good luck finding it.
I am an Electronics Engineer with a keen interest in Robotics, yeah there’s no relation with coding and development of an app but 3 years ago I needed an app for my own Home Automation System (yes I did beat Google to it) with voice recognition and stuff. I built the whole circuitry and the app from scratch and integrated in my home. Also you can find some of the things that I did as pet project for learning here. If you would be interested in a video or guide on how to do these projects yourself, I would be happy to share it!
Joining the team
The “how” is one of the things that I can’t forget because of how funny it will sound in just about a minute. One fine day I decided to change the ROM of my device and it ended up being soft-bricked for some crazy reason (that I still couldn’t figure out despite of my 6-7 years of flashing experience). So I flashed the whole firmware to get everything working and the thing is I didn’t have GApps on my device which was a pain to get up and start up the PC (lazy to download it again on my laptop), sideload the GApps and then boot the device. So I decided, “Let’s make an app” so that it’ll always stay on my device no matter what. I designed everything, from the UI, UX; then it hit me that I need to ask permission from the Open GApps developer and guess what? The app was already in the process of being made by Christoph a.k.a beatbrot and was in the end stage, well, that was a bummer, but Maarten was kind enough to give a link to a beta version of the app for me to test in our first conversation itself and have look at the app. Since it was the first android app for Christoph I already had some suggestions how we could improve the performance of the app.
This was my first experience with the open-source community and it beats me that I was able to also create a useful library for the community. This made the experience unique and fun. In the near future I’ll help as part of the Open GApps App developers team in any way that I can. Also, if your feature is not included in this version, it might already be in development for our upcoming versions, because we have taken many suggestions into consideration. But all thoughts about new features and possible improvements are very welcome in the comment section below. It will make the app even more awesome!
Open GApps wishes all of you a Happy New Year and the best for 2017!
Looking back at 2016, the year brought us a lot of new things, e.g. Nougat (both 7.0 and 7.1) but also our very own Open GApps App!
With already more than 100k downloads in the Play Store and many more by directly downloading the APK from our own website, as being mentioned as a must-have app of 2016 by Android Police uptake of the 1.0.x version goes fast. Meanwhile the developers are now preparing for the upcoming 1.1 release.
One of the great things of working on Open GApps is the community. We want to thank all the people from the community that already helped to translate the app to various languages. If your language is not there yet, please don’t hesitate to contribute yours! Also we want to thank all the people that have donated and make the development of the Open GApps packages possible.
At the moment we are preparing the last translations for 1.1 of the app and fixing some last known bugs. After that we will get to the alpha-testing phase with the team and hopefully to beta-testing later this month.
Open GApps packages are downloaded via the OpenGApps.org website. The user has to select the architecture, the Android-version as well as the variant. Afterwards, the user has to enter recovery and flash the file. Our goal was to simplify these steps even more with our new Open GApps App. While the app still allows to select every possible GApps package, we tried to simplify this process even more, using a wizard.
Using the wizard we can detect the device’s properties and older installations. That enables the app to recommend an appropriate package. It simplifies the process for beginners while still providing all the options to power users.
Another feature of the app that simplifies the life of its users is automatic MD5-Checking as well as automatic flashing via TWRP (if the user chooses to grant root access to the app). With this approach, we can ensure that the zips aren’t corrupt and also help to automate the process of flashing the GApps package. Another thing we did for our power users was including the VersionLog for each package. With the app users can opt in to automatically fetch the VersionLog with their GApps package.
Developing the app was a very challenging but interesting endeavor. I would like to share some background and experiences I encountered during the development.
At the moment I am a student Computer Science. While I already had several programming courses at university, I never had a course for Android Development, neither had I ever programmed an Android app.
I was interested in trying to develop an Android app and first I thought about a Recovery Manager app. I wanted it to have GApps downloading included, so I approached Maarten for permission to automatically download OpenGApps.org packages. He asked me if I’d be interested in developing it as an official Open GApps App. I quickly agreed as I saw this as a huge opportunity. While writing the first few lines of code that I wrote were completely new to me, it also was great fun, as I got into exploring all the details about Android app architecture. Luckily my previous Java experience helped me a lot. Near the final release Ashish joined us and thanks to his experience, we were able to greatly improve some things for this initial release. While 1.0 was mostly my work, he will probably contribute a lot to future versions.
During the development of the app, I had the chance to gather some great experiences that I want to share here
- First and foremost: it was always a pleasure to work with Maarten, Adam and Ashish. All of them were always nice and patient. Especially Maarten always helped me out with good advice.
- It’s a great insight in the internals of Android. While I flashed custom ROMs a lot in the past, I never had the feeling of understanding what’s actually happening
- “Touching” your code gives a great feeling of accomplishment. I was never really impressed by those C terminal applications with plain text, that I wrote. This, however, is a whole different story as you can feel your work
- Having a team that is able to really test the app. When I thought to be close to the 1.0 release, all members on the Open GApps Team tested the app extensively. Many more bugs did pop-up but they were really great in finding out how to reproduce, helping me to find the cause of the bug and fixing it.
The Not So Good
However, also some challenges appear that were hard to tackle for a beginner like me.
- Various side effects appear when the user closes the app, rotates the screen or resizes the app (Thanks to Android N). E.g. all references to the activity suddenly point to null which was especially painful since I implemented a lot of AsyncTasks
- Some libraries look more promising than they are in real world usage. In the beginning, I didn’t look a lot at the libraries I considered to use which leaded to a huge waste of time as I had to redo some things quite often.
- DownloadManager API is a pain to use. It’s lacking callbacks for a finished download, canceled download, etc. And checking the actual status is only possible via a weird implementation with cursors.
- Some Android SDK functions are just not documented at all. E.g. while it was clearly stated that an app needs the reboot-permission to restart the device, it didn’t work out for me first. Only after I’ve seen that a recovery-permission does exist in AOSP, I found that I did have to add it to the app. The documentation doesn’t say a single word about that.
As you saw, I started this project with zero experience in app development. However, thanks to the help of Open GApps Team I learned a lot of stuff and got a lot of experience with android development as well as working in a team. And additionally I was able to contribute to one of my favorite projects out there. I can only recommend everyone doing the same. Find a project you like and ask if you can contribute. It’s a unique experience which you totally wouldn’t get from a regular company via an internship or anything similar.
Android Nougat 7.0 brings a lot of cool new features. One of them is extra flexibility of WebViewProviders.
Besides AOSP WebView and Google WebView, Nougat offers the possibility to use Google Chrome (and its Beta and Dev variants) as WebView provider too. Users have the possibility to select their WebView provider from the Android Settings. This feature is available in stock ROMs, but not yet in custom ROMs without a patch, because AOSP code assumes only AOSP WebView is available.
For ROM developers it is a necessity to include a list of valid WebView Providers in the framework config to expose all possible WebView Providers. On Google’s Nexus devices this list consists of Google Chrome variants and Google WebView. In the upstream AOSP code only AOSP WebView is defined by default.
ROM developers should apply this initial patch and this incremental fix patch to their source tree to add Google WebView and Google Chrome (plus its variants) as valid WebView providers and achieve functional equivalence with stock ROMs.
Users that want optimal WebView experience, please notify your ROM developer of this patch by members of the Open GApps team and ask them to include it in their ROM. In the near future the Open GApps scripts will be adapted to assume the ROM knows about all these valid WebView providers (just like with 5.1 and 6.0 that did work with Google WebView).
30 October 2016 an update for the initial patch has been released, blogpost updated to include it too.
Arrr! Sea dogs an’ land lubbers, th’ Open GApps Team wishes ye a grog-filled talk like a Pirate Day!
To celebrate it in gentleman o’ fortune style we tuned our colors fer ‘tis special tide, we woe ye like it! Success flashin’ yer GAarpphs!
Hearty thanks t’ Yeti fer th’ beautiful artwork.