Building a Google Pixel style ROM for Kenzo using SuperRs Kitchen

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

Once we have all the relevant packages, we need to create a folder to host the kitchen and then clone the kitchen using Git.

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