ShkMod

A modest custom ROM based off AOSP with minimal modifications.

I started cooking ROMs with Android 2.2 FroYo and Android 2.3 Gingerbread mainly. Over the years, I felt more and more satisfied with the community's work, yet the stock "pure" Nexus experience was more and more pleasant by itself.

Android getting more and more mature, starting with Android 6.0 Marshmallow (and its Material Design), I felt like having a stock "pure" Nexus experience, while having root, could be enough for me.

I was wrong: it lacked tiny things here and there. So I made this modest ROM with the few things I missed from the custom ROMs. And that is enough for me.

My work is licensed under the Apache 2 license.

Versions

  • ShkMod: 17.01.31
    • Format: YEAR.MONTH.DAY (follows the latest integrated Android Security Bulletins)
    • DAY=00 means a work-in-progress.
    • Final release has the day of the Android Security Bulletin as last digits (> 00).
    • Subsequent updates might appear, incrementing the last digits even more.
  • Android: 6.0.1 android-6.0.1_r78

Features

  • Configurable lock pattern size
  • (Optional) Ambient Display
  • (Optional) Music rocker (skip tracks while screen is off)
  • (Optional) Quick Settings one-finger pull-down (right side of the status bar)
  • Advanced reboot
  • Long press back kills foreground app
  • No ADB notification
  • Security enhancements
    • Password invisible by default
    • Screen locks immediately when off by default
  • No IME notification
  • (Optional) Hide brightness slider
  • Quick switch to last app (by long-pressing the recents tasks button)
  • (Optional) Pin scramble
  • System UI Tuner enabled by default (icon invisible from status bar)
  • Speed up animations by 25%
  • Displays applications' names while optimizing during boot
  • Does not flash recovery
  • Refreshed stock icons
  • (Configurable) Smart Quick Settings pull-down
  • Refreshed Gallery app
  • Deactivable Messenging app
  • Un-deactivable Dialer app
  • Disabled OTAs
  • (Optional) Toast shows application icon

Google additions (optional):

  • Accepts Google's WebView as alternative
  • Google's DNS
  • Google's backup
  • keyboard (decoder & swipe) libaries
  • Camera (interface) library

Manifests

  • cleanup.xml: removes unecessary projects
  • roomservice.xml: default ; ShkMod modifications to AOSP
  • google.xml: (optional) Google-related stuff

You can remove the last one to get a more OSS experience.

Scripts

  • vendor/shk/androids.sh: lists all AOSP branches (version sort)
  • vendor/shk/build.sh: builds ShkMod
  • vendor/shk/envsetup.sh: minimalist envsetup for emulator target
  • vendor/shk/update.sh: updates ShkMod repositories from AOSP (pull)
  • vendor/shk/hosts.sh: hosts files to block ads (not bundled inside the ROM)
  • vendor/google/playservices.sh: installs Google's Play Services onto the emulator

See

Devices

List of available (configured) targets (devices):

$ ./vendor/shk/build.sh
...

This work could very easily be ported to any other Nexus device, maybe even other devices — this is AOSP, a solid build for Nexus devices and a solid base for other devices (modulo the proprietary blobs).

Clone

Regular AOSP download (including GPG public key):

$ repo init --config-name -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r78

Clone this repository (alters AOSP):

$ git clone https://github.com/shkschneider/android_manifest.git -b shk-marshmallow .repo/local_manifests

Sync:

$ repo sync

Build

The build process has only been tested on Linux x86_64.

For emulator

$ ./vendor/shk/build.sh shkmod_emulator-eng

This makes the images to be used by the emulator (64-bits only).
Run the last given command to start it and try the ROM on the emulator.

For device

You should get the proprietary blobs out of the device first: Driver Binaries for Nexus Devices.

$ ./vendor/shk/build.sh shkmod_hammerhead-user
...
rom-${modName}-${modVersion}-${device}-android-${androidVersion}-${androidBuildId}.zip
stock-${modName}-${modVersion}-${device}-android-${androidVersion}-${androidBuildId}.zip

The rom-*.zip file is what you would want to flash on your device using a custom recovery.
The stock-*.zip file contains all final images that you might want to use with fastboot.

Apps

This ROM does not claim to live outside of Google's ecosystem. Yet it can.

This ROM comes with AOSP apps (that can all be disabled) but no Google Apps:

  • AOSP Launcher
  • AOSP Keyboard
  • Browser
  • Calculator
  • Calendar
  • Contacts
  • Downloads
  • Email
  • Gallery
  • Messaging
  • Phone (Dialer cannot be disable)
  • Settings (cannot be disable)

However, the default build process includes some Google related configurations and blobs to properly support Google Apps.
If you want Google Apps, Open GApps are recommended.

If you want the ROM clean of Google Apps, remove vendor/google/ dependency (google.xml). In such a case, F-Droid is automatically included (uninstallable). I then recommend SimpleMobileTools apps to start with.

Recovery

This ROM made it so the recovery is UNTOUCHED.

Root

This ROM comes without root.

If you want root access, an Open Source variant is recommended:

Credits

For this ROM:

For everything else: