Dev Anecdotes #1 - Development of QuarkOS™ a Custom Android ROM for Smartphones
I would like to share with you my contribution to the development of QuarkOS™, one of the most popular and most downloaded Custom ROM for YU devices {especially YU YUREKA (codename: tomato) and YU YUPHORIA (codename: lettuce)}. And later on also developed for Xiaomi devices like Redmi Note 4 (mido). [You may know about my developer profiles in my introductory post]
Actually, I am the Lead Developer of the QuarkOS ROM. I developed three versions of this ROM. The latest version of QuarkOS is v3.0. This ROM was my dream ROM inspired by CyanogenMOD (now Lineage OS), MIUI, Xperia ROM, ColorOS, Clean Flat Design, Hexagon ROM and XOSP. I tried to incorporate all the essential features in the ROM as well as some incredible customizations not available in any other Android ROM. The ROM was originally developed with Android 5.1 Lollipop as base. However, it was later on updated to be developed with Marshmallow (Android 6.0) as base.
Want to know more about QuarkOS? – Just search "QuarkOS" on Google.com or forum.xda-developers.com.
Features of QuarkOS™ ROM
Quark™ Fluid UI
ROM’s UI has been creatively designed keeping in mind the liking of the users. It is ‘a state of art’ ROM. Hard work has been done to provide best design without compromising with performance and battery backup. Although the original ROM was based on Lollipop, it gave the experience of Nougat.
QuarkOS™ 3.0 was updated with Flat UI. Also support for Dynamic Navbar (the color of Navbar changes with primary color of the app) was added. This was done by modding the framework-res.apk and systemui.apk files. You may see above the screenshots of the result.
Quark™ Additions
QuarkOS™ comes with Sony Image Enhancement Technology.
It supports Color Control for screen. With it we can modify color saturation, hue, RGB etc.
DPI Settings: It supports multi DPI support for screen. We can increase or decrease DPI (Dots per Inch) of the screen with this setting.
It also supports HeadsUp Notification toggle.
OmniSwitch has also been added to the ROM.
System App Remover: With it users can delete any app which they consider a bloatware.
ROM also support root access and kernel fine tuning.
Quark™ Customizations
QuarkOS comes with many personalization settings along with some unique settings not available in any other Android ROM. You can customize statusbar, navbar, lockscreen, SystemUI and fonts.
• Statusbar
+ Four Battery Icon styles to choose (Quark, Xperia, Circle and AOSP)
+ Change position of statusbar clock to right or left
+ Change the color of Wifi icon
+ Change signal cluster color (separately for each SIM)
+ Show/Hide Notification icons
+ Double tap statusbar to sleep (with toggle)
• Navbar
+ Enable or Disable Navigation bar (toggle)
+ Enable or Disable navbar 3 dot menu button
+ Hardware keys backlight control (enable, disable, enable when screen on)
• Lockscreen
+ Change Lockscreen Clock design (the most unique feature)
+ Analog Clocks (Standard, Sony, Quark)
+ Vertical Clocks (Quark, Xperia various styles)
+ Horizontal Clocks (Quark, Xperia various styles)
+ Enable or Disable lockscreen alarm text
+ Enable or disable lockscreen album art display (while music playback)
+ Show or hide Network Operator Name (Carrier text) on lockscreen (Only SIM1, Only SIM2, both, none)
+ Color Carrier text (separately for each SIM)
• SystemUI
+ Enable or disable Statusbar Ticker Notification
+ Show or hide brightness slider in notification panel
+ Color recent apps clear button
• Fonts
+ Change fonts of the entire system
Ultimate Audio Quality
QuarkOS™ comes with my own Quasar™ Atmox Maxx® Sound (will tell you more about it in another post). It gives you a crystal clear sound along with super bass. It will give you fantastic music experience through speakers as well as headphones. The audio system includes:
- MaxxAudio®
- Dolby Atmos®
- Viper4Android
- Sony Music effects and hi-res resampling (xLOUD®, Clear Audio+)
- Quasar™ Audio optimizations
Quasar™ Lockscreen Music Visualizer
This is another one of the most unique features of the ROM. Some amazing music visualizers have been added to the lockscreen. Users can select their favorite visualization from the settings. It includes the following styles:
- Circular Bars
- Vibrating Line
- Top Bottom Visualization
- Circular Wave
- Colored Bars (with lava lamp)
- Cyanogenmod style
Fine Tuned Camera
QuarkOS™ packs in it the best Xperia camera addons and apps with Image Enhancement Technology. It comes with original CoolUI camera exclusively for YUREKA which gives an outstanding performance. It also includes Xperia’s exclusive Augmented Reality apps like AR Fun and AR Effect ported to this ROM.
Support for Xperia™ Apps and Features
QuarkOS includes best of Xperia apps, Camera add ons, plugins, widgets, live wallpapers, ringtones and lot more. Also the android system has been hacked so that you can also download and update Xperia/Sony apps from Google Play. This is done by modifying framework and permission files.
QuarkOS™ PatchROM: How does it work? (How did I make it?)
Github: https://github.com/QuarkOS-ROM/QuarkOS-PatchROM
QuarkOS PatchROM is a collection of techniques and patches which can be applied to any Android ROM (Lollipop 5.1 and above). So for this to work we need a base ROM. Unlike MIUI PatchROM, this is not automated. Developers have to read the README file to understand the patching procedure.
This PatchROM works on the commits made in the project. One has to follow the commits in the github (https://github.com/QuarkOS-ROM/QuarkOS-PatchROM/commits/master) to patch a base ROM. The project contains total of 80 commits out of which around 70 are important.
Each commit is used for a specific type of modification and patching, and detailed description of the patch has been provided in each commit. One can easily cherry pick the commits to speed up the patching process. But in some commits one has to modify files manually.
The patching process requires reverse engineering and modding of APKs like, Settings.apk, SystemUI.apk, framework-res.apk, framework.jar, services.jar etc. Of course to reverse engineer Android System apps a tool is required. So we use Apktool or TickleMyAndroid.
As we are modifying system apks, we need to disable app signature check in the system. Or we can sign the modified apks with system key using ZipSigner app for Android in the same base ROM. Here is the commit one can follow to disable signature check in the base ROM:
https://github.com/QuarkOS-ROM/QuarkOS-PatchROM/commit/7541cc4010e1f4be8fa77377c589d60f12197e2e
We start with modifying Settings.apk. We add “About ROM” section, QuarkOS banner, Quark Custom settings to Settings.apk. This requires the modifications and addition of different files inside decompiled Settings.apk like:
res/xml/dashboard_categories.xml (modify)
res/xml/quark_settings.xml (add)
smali/com/android/settings/Quark.smali (add)
res/values/strings.xml (modify)
res/values/ids.xml (modify)
and many more…
Commits include:
Add QuarkOS Banner in About Phone Settings
Add "About ROM" section in About Phone Settings
Add Quark Additions section to Settings.apk
Add categories to Quark Additions
Changed the icon of Setting.apk
Modified build.prop to include QuarkOS properties
Add Sony Image Enhancement technology with Sony Album and Sony Video
Add Color control to Quark Additions in Settings
Add statusbar network traffic indicator
Add DPI Settings to Quark Additions
Add kernel settings to Quark Addtions
Add SuperSU to Quark Additions
Then for Quark Fluid UI and customizations we need to modify SystemUI.apk, framework-res.apk, Settings.apk and a few different apps. This requires a lot of expertize in Android theming and smali (java) coding (which I am not :p). Here we change fonts of the system (add new fonts) and modify system/etc/fonts.xml and fallback_fonts.xml (add the name of new fonts to the system).
Then we modify SystemUI.apk to theme it and add various customizations with toggle support. We modify various res/values files like colors.xml, dimens.xml, integers.xml, bools.xml and ids.xml. We also modify layout elements like qs_detail_header.xml, status_bar_expanded_header.xml etc. Also many drawable files and PNGs are added for selectable battery icons and pixel like navbar buttons. Also many smali files are modified and added the detail of which you can find in the commits. With SystemUI.apk, framework-res.apk is also modified. The following commits are for the Quark Fluid UI and Quark Customizations:
Commits:
Add QuarkOS designed fonts
Add QuarkOS unique SystemUI style and effect
Add "Quark Customizations" section to Quark Additions
Add 'Show/Hide layout elements feature' to SystemUI
Add Selectable Lockscreen Clock and Date Styles
Add Selectable Battery Styles
Add Statusbar Clock position settings
Change Lockscreen Carrier Text style
Add Show/Hide Toggle for QS Brightness Slider
Add Statusbar Ticker toggle to Settings.apk
Add Statusbar WiFi and Signal Cluster icon color settings
Add Recents Clear Button color settings
Add Double Tap Statusbar to Sleep with toggle
Add Font Customization Setting
For adding Lockscreen Music Visualization styles, SystemUI.apk and Settings.apk are modified. Different new smalis are added to the SystemUI.apk for rendering various visualizations. This commit explains everything in detail:
Add Selectable Lockscreen Music Visualizer
There is a separate repo for Quasar Atmox Sound Mod: https://github.com/nitesh-prasad/Quasar-AtmoX . However, some modifications have been made in the sound system and audio-effects.conf file in QuarkOS. We have the following commit for that:
Add Quasar Atmox™ Maxx Sound System
Using this PatchROM is not much easy like MIUI PatchROM. It’s not automated. Users have to do much of the modifications manually. It took me more than a month to create the ROM and develop this PatchROM. However, now devs can develop the ROM much easily in less time using this QuarkOS PatchROM.
Some More Info About the ROM and Myself
QuarkOS ROM has 33K+ downloads for YUREKA. This was the only ROM available for YUREKA to support Video Call over LTE. It has also been developed for YUPHORIA, Xiaomi Redmi Note 4 and Andromax R4 using the PatchROM. Some threads for more info:
[ROM] [OFFICIAL] QuarkOS v3.0 Stable for Yureka (+) [VoLTE] [LP-5.1.1]
[PATCHROM] [OFFICIAL] QuarkOS™ v3.0 STABLE for Yuphoria [VoLTE Optimized] [MM-6.0.1]
[UNOFFICIAL] QuarkOS v3.0 STABLE for Mido [MM-6]
A Video Review of QuarkOS 3.0 ROM:
Thanks to TechTrick
My proof of work - here is a screenshot of my logged in session in Github :
My developer profiles:
nitesh9 @ XDA
nitesh9 @ MIUI Forums
Nitesh Prasad @ YU Forums
My Github Profile
I hope you liked my first post on utopian.io. I would love to help Android devs of different devices interested in QuarkOS patchROM. Thanks. :)
Posted on Utopian.io - Rewarding Open Source Contributors
Bhai Chha gye tum toh... tumhe Engg padhna chahie tha...
:D
Engineering nahi padha isliye ye sab kar paya. :P
I had plenty of time to work for my passion. :)
Thanks for the appreciation. :)
😂😂😂dt is the best reply to the comment...
resteem bhi kar dia dekho...
Thank you for the contribution. It has been approved. However, you need to remove the gif at the end of your post.
[utopian-moderator]
Thank you so much. Removed the gif. :)
Hey @nitesh9 I am @utopian-io. I have just upvoted you at 9% Power!
Achievements
Suggestions
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Vote for my Witness. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x
Thanks a lot. :)