Building a Google Pixel style ROM for Kenzo using SuperRs Kitchen
Overview
In this post I will be providing an overview on how to create your own Custom ROM using a Kitchen. This term is used to define a set of tools to assist in the unpacking, building, customising and repacking of an Android ROM.
In this tutorial we will be creating a ROM based around CyanogenMod 14.1 (based on Android 7.1.1) on the Xiaomi Redmi Note 3 Pro (Snapdragon 650) - this is suitable for either Kenzo or the Special Edition Kate model, but with Kate you will need to flash the Radio after you have built the ROM to regain Band 20 support.
The ROM we will be creating will try to emulate Stock Android - adding in Google Services and Applications and removing all the duplicate functionality present in Cyanogen 14.1.

At the end of this tutorial you will have created a Stock Android similar in appearance to the Google Pixel, running on a Xiaomi Redmi Note 3 Pro.
Pre-requisites
To use the Kitchen we will have to install Ubuntu 16.04. If you have a Windows installation, you can use Rufus to create an Ubuntu bootable USB stick.
Ubuntu 16.04
Rufus
Once the Operating System is installed, I also installed Chrome, as my preferred browser solution.
I removed all the unnecessary shortcuts to Amazon, Office etc on the Launcher panel and created a shortcut to Chrome and Terminal by opening up the relevant application and locking it to the Launcher pane.
Downloads
Create a new Folder in Home called android using the file browser. This is where we will put our downloads and create our Kitchen.
CyanogenMod 14.1
Download the latest CM14.1 ROM for Kenzo:
CM14.1
Create a folder in android called ROMs and move the file into this folder.
Google Apps
Download the latest OpenGApps:
Platform: ARM64
Android 7.1
Variant: Stock
OpenGApps
Create a folder in android called GApps, move the file into this folder and unzip it (right click and Extract Here).
Installing the Kitchen
At the time of writing, the favoured Kitchen is the one made by SuperR on XDA:
SuperRs Kitchen Thread
Firstly, ensure you have all the pre-requisite packages installed:
sudo apt-get install binutils libc6-i386 coreutils cpio e2fsprogs findutils gawk gcc grep gzip libc-bin liblz4-tool lzop mount ncurses-bin perl-base sed tar util-linux vim-common wget xz-utils bison gperf build-essential zlib1g-dev zlib1g-dev:i386 g++-multilib libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev libsepol1-dev dpkg-dev make ccache automake squashfs-tools schedtool
Open a Terminal window and enter the following:
cd android
git clone https://bitbucket.org/superr/superrs-kitchen.git
cd superrs-kitchen
./superr
It should be noted that the free version of the kitchen has a few limitations, such as having no support for some useful plugins, but this is fine for our demonstration. A donation of $10 (at the time of writing) to SuperR will unlock full Kitchen functionality.
Setting up a Project
In the Kitchen, select:
1) Create a new project
KenzoCustomCM14
At this point, copy the cm-14.1 ROM zip file into the android/superrs-kitchen-superr_KenzoCustomCM14 folder.
Back in the Kitchen:
4) Extract for new ROM
y
<enter super user password when prompted>
KenzoCustomCM14
1) Detect by-name from boot/recovery images (recommended)
1) set_metadata (For KitKat+)
At this point, our ROM is unpacked and we are ready to customise it. We can exit out of the Kitchen if we wish - the kitchen will remember our preferences when we re-run it.
Concepts
In this tutorial we will be performing the following activities:
- Adding the core Google Services into the ROM
- Adding a subset of the Google Apps into the ROM
- Removing duplicated and unwanted Cyanogen applications from the ROM
This all involves adding and removing files from within the system folder in our Project folder (superr_KenzoCustomCM14)
Android can automatically determine the purpose of the application, so copying apps like Keyboards, Launchers, Cameras etc will correctly integrate themselves into the OS with no editing of configuration files.
Folder Structure under system
The system partition (shown as a folder in the kitchen) contains all the operating system files, asides from the kernel and ramdisk (which live in boot)
During the course of this tutorial we will be adding and removing files from various folders inside system to create a Custom ROM. These are as follows:
app - Standard apps which are embedded in the ROM
priv-app - Privileged apps which can access additional Android permissions
common - Configuration & Java files
Adding the Google Core
Adding the Google Core files will ensure that all the Google Services are correctly integrated.
Open the GApps folder in a file browser window and navigate into the extracted open_gapps-xxx/Core folder.
Open a second file browser window into superrr_KenzoCustomCM14/system
Open a third file browser window into android/GApps, create a folder called System, and browse into it.
The .tar.lz files in the first (Core) Window are largely one of the following formats:
<name of zip>/nodpi/<destination folder>/<app name/subfolder>
<name of zip>/<destination folder>
Some folders have nodpi along with other specified dpi values, e.g. 480 or 240-320-480. Chose nodpi in preference, otherwise whichever is available, giving preference to 480, which is the correct DPI for the Note 3s 1080p display.
For each zipped file, we need to Drag and drop <destination folder> from the .tar.lz into the third Window (our new System folder)
e.g.
1. Open androidplatform-arm64.tar.lz
2. In the zip file browser, go into androidplatform-arm64 and then nodpi
3. Drag and drop priv-app into android/GApps/System in the third Window
Process all zips in this way apart from setupwizardtablet-all.tar.lz
By the end of the process we should have the following folders inside android/GApps/System, each containing a set of apps and configuration files:
app
common
priv-app
Adding the required Google apps
Change our first file browser Window from looking at the open_gapps-xxx/Core folder to looking at the open_gapps-xxx/GApps folder.
As with our Core files, each of the zipped files follows a similar layout. Prefer nodpi over 480dpi over any other folder.
At this juncture, you can chose exactly which GApps you wish to include in the ROM.
I will include the following:
calculatorgoogle-all.tar.lz
calendargoogle-all.tar.lz
calsync-all.tar.lz
cameragoogle-arm64.tar.lz
cameragoogle-common.tar.lz
chrome-arm64.tar.lz
clockgoogle-all.tar.lz
contactsgoogle-all.tar.lz
dialerframework-common.tar.lz
dialergoogle-all.tar.lz
gmail-all.tar.lz
googletts-arm.tar.lz
hotword-all.tar.lz
keep-arm64.tar.lz
keyboardgoogle-arm64.tar.lz
maps-arm64.tar.lz
messenger-arm64.tar.lz
music-all.tar.lz
photos-arm64.tar.lz
pixelicons-all.tar.lz
pixellauncher-all.tar.lz
search-arm64.tar.lz
speech-common.tar.lz
youtube-arm64.tar.lz
Note: If you wish to use the classic Google Now launcher rather than the updated Pixel launcher, replace the pixelxxx files with googlenow-all.tar.lz above.
As with the Core, extract the relevant files into android/GApps/System
Copy new System files into place
Once we have finished our extraction, copy (and merge) all of android/GApps/System into android/superrrs-kitchen/superrr_KenzoCustomCM14/system.
Removing Duplicated Apps
A number of the apps we have added above have duplicated functionality built into the base Cyanogen ROM. We can get rid of these from our Project folder to ensure we have a clean system.
Delete the relevant folders (which contain the apks). In my case, I deleted the following from the app and priv-app folders:
app
Calendar - Calendar
DeskClock - Clock
Eleven - Music Player
ExactCalculator - Calculator
Gello - Web browser
LatinIME - Keyboard
messaging - SMS Messenger
priv-app
Contacts - Contacts
Dialer - Phone dialler
Snap - Camera
Trebuchet - Launcher
Building the ROM
Now we have all the relevant files in place, it is time to build our ROM
In SuperRs Kitchen, select:
8) ROM Tools Menu
7) Build Menu
1) Build full ROM Zip
y (zipalign)
y (zipalign framework)
n (sign the zip)
<enter>
q
Once complete, your ROM is ready.
Installing the ROM
Copy KenzoCustomCM14.zip from superr_KenzoCustomCM14 onto the device. Wipe and flash with TWRP.
download file now