[Nexus 9 Android Development] craigacgomez:
Goodbye Lollipopalooza... Hello Marshmallicious!!

[IMG="Marshmallicious Banner"]http://i.imgur.com/S1uuOnv.jpg?1[/IMG]

This started out as a personal project... a way for me to learn how to develop and custom features for Android. And I decided to share my work with the amazing Android community... something to give back to the community. Back then, this was a ROM called ThunderKat, based on Android 4.4 KitKat. Over time, it evolved into Lollipopalooza, based on Android 5.0. And now, here's Marshmallicious, based on Android 6.0.

Now, before you go on ahead, let me be clear about one thing. This is and will remain a minimal AOSP based ROM. It will include a small, but useful set of features... features which add a bit more flare to Android AOSP. Beyond this minimal feature set, this will also include some relevant spit and polish (bug fixes and asset/image updates). As time progressed, so did the quality of the work behind the features this ROM offers. Whenever I look back at a feature I developed before, I look for ways to improved. If you expect a lot of additional features, I recommend using one of the more popular ROMs available like CyanogenMod, SlimRoms, ParanoidAndroid, etc.

I develop and maintain this ROM on my own for the most case, occasionally seeking help and porting useful features and fixes that others here in the community have developed. You will see all the relevant references in the cherry-picked commit in my GitHub repositories.

Due to my limited availability, I will now no longer support Lollipopalooza builds

Now that I'm done with the fancy introduction, let's get down to business...

Changelog:

2015/11/07

1. Fixed force close when choosing keyboards in Language & input settings

2. Enabled doze/ambient mode auto power saving modes (More details)

3. Removed SVELTE (Nexus 9 LTE) init configs from Nexus 9 Wifi init configs

4. Disabled bug report service (which is triggered by holding down volume down, volume up and power)

5. Updated SELinux policies for experimental systemless root using open source Superuser (instruction below)

6. Fixed experimental systemless root for devices with encrypted userdata

2015/11/04

1. Android Marshmallow 6.0.0_r2 (MRA58N) base [Includes November 2015 security patches by Google]

2. Movable on-screen navigation bar buttons (centre, left or right) [Settings > Device > Display]

3. Cursor control within text boxes using the volume rocker [Settings > Personal > Language & input]

4. Long-press of back button to kill foreground app [Settings > Personal > Language & input]

5. Native Android Marshmallow recents dismiss/clear all

6. User-defined custom device hostname [Settings > Wireless & networks > More]

7. Displays apps installing and optimising storage progress on first boot

8. Uses Google pre-built WebView if it is installed. Falls back to AOSP WebView

9. SystemUI Tuner enabled by default

10. Dessert Cake dream enabled and set as default doze dream

11. Enhanced Location QuickSettings tile (toggles between the different location mode [Off > Sensors Only > Battery Saving > High Accuracy])

12. Long-press action for all QuickSettings tiles (opens relevant Settings section)

13. Enhanced power menu [Power Off, Reboot, Aeroplane Mode, Users & Sound Toggle]

14. Advanced reboot [Reboot, Reboot to recovery, Reboot to bootloader] (only available for primary user when device is unlocked)

15. Default required permissions set for Google applications to allow GoogleApps packs

16. F2FS support for the cache partition in addition to the userdata partition.

17. Additional filesystems supported (with vold auto-mount capabilities not available yet) [exFAT and NTFS (NTFS-3G)]

18. Forced encryption of userdata partition is disabled

19. DM-Verity (key-based partition verification) is disabled system-wide

20. Full-screen on-screen keyboard in landscape mode is disabled

21. Sysinit supported (init.d scripts)

22. [MENTION=1162986]Captain_Throwback[/MENTION]'s BeyondStock kernel 2.0.0 included [support NTFS, exFAT and fast-charge]

23. Several assets and images updated to Material-styled versions

24. Ambient (Doze) mode enabled along with burn-in protection

25. A lot of unneeded debug logging disabled

26. Default wallpaper replaced with Marshmallow stock default wallpaper and Marshmallow stock bootanimation added

27. Includes bionic busybox (credit CyanogenMod)

28. Increased number of status bar notification icons from 5 to 8

29. Miscellaneous bug-fixes and tweaks included (for more details, check the GitHub commits)

30. Full GoogleApps pack (with ARM64 320DPI apps where applicable) with the latest updates

Instructions:

1. Download the Marshmallicious ROM package and the Prerequisites package

2. [OPTIONAL] Download the GoogleApps package

3. Reboot into recovery [A custom recovery like TWRP is required]

4. Wipe as required

a. Full wipe when coming from another ROM

b. Wipe cache and dalvik-cache when flashing a Marshmallicious update​

5. Flash the packages in the following order

a. Prerequisites package

b. Marshmallicious ROM package

c. [OPIONAL] GoogleApps package​

6. Reboot and let the device boot up and remember that the first boot will take a while since this is a de-odex ROM

Root:

I do not support SuperSU because it is closed-source and, hence, cannot be audited. Anything granting low-level privileges to apps and process need to be open-source and auditable. But I will not blankly turn down support requests involving SuperSU if you have chosen to root your ROM using SuperSU.

That said, I am closely following the development of systemless open-source Superuser by [MENTION=1915408]phhusson[/MENTION] as well as the SELinux policy changes by [MENTION=6124077]doitright[/MENTION]. This is still experimental and may not support all root apps yet.

Because this is currently experimental, this ROM is not pre-rooted. But I have provided a separate ExperimentalRoot package. This package contains a modified boot image with the su binary, init changes and SELinux policy changes and has been built from source. The su binary was built with the latest changes in [MENTION=1915408]phhusson[/MENTION]'s Superuser GitHub repository. The init and SELinux policy changes are a slightly varied version of the patch created by [MENTION=6124077]doitright[/MENTION]. Also included in the zip is the Superuser apk built with the latest changes in [MENTION=1915408]phhusson[/MENTION]'s Superuser GitHub repository.

I have branches in my GitHub repository which have the SELinux policy and init changes required for systemless Superuser which include all doitright's changes as well as my modifications.

platform_external_sepolicy

platform_system_core

Instructions:

1. Download the ExperimentalRoot package provided above (make sure it matches the ROM release date)

2. Flash the boot image included in the ExperimentalRoot package using fastboot [fastboot flash boot boot.img]

3. Install the Superuser apk included in the ExperimentalRoot package as a regular app

Downloads:

AndroidFileHost

Marshmallicious-Nexus9-Wifi-20151107.zip [Marshmallicious ROM]

GoogleAppsPack-6.x-ARM64-320DPI-20151107.zip [Full Google Apps Pack]

Prerequisites-Marshmallicious-Nexus9-Wifi-MRA58N.zip [Prerequisites (bootloader and vendor images)]

ExperimentalRoot-Marshmallicious-Nexus9-Wifi-20151107.zip [Experimental systemless open-source Superuser]

BasketBuild

Marshmallicious-Nexus9-Wifi-20151107.zip [Marshmallicious ROM]

GoogleAppsPack-6.x-ARM64-320DPI-20151107.zip [Full Google Apps Pack]

Prerequisites-Marshmallicious-Nexus9-Wifi-MRA58N.zip [Prerequisites (bootloader and vendor images)]

ExperimentalRoot-Marshmallicious-Nexus9-Wifi-20151107.zip [Experimental systemless open-source Superuser]

Theming:

This ROM support RRO/Layers themes. But please be aware that not all RRO/Layers themes support Android Marshmallow yet. If you encounter force closes after installing a theme, reboot into recovery mode and delete /vendor/overlay.

Layers/RRO Themes Info:

1. Join the BitSyko Google+ Community for the latest information and themes

2. Download the Layers Manager app to install/uninstall/preview RRO/Layers themes

3. Download the Layers Showcase app to browse available RRO/Layers themes

4. Visit this XDA thread for a comprehensive list of RRO/Layers themes

Help and troubleshooting:

1. Ask for help if you need, but make sure you do your research first.

2. Be patient. It could take a few minutes to flash the ROM.

3. If you flashed a kernel which replaced the SELinux policy file, you may encounter errors and issues. To recover, you will need to reflash the ROM boot image.

4. If you get "failed to mount /dev/block/platform/sdhci-tegra.3/by-name/APP", unmount the system partition and try again

5. If you flashed a kernel with SELinux disabled like the one provided by [MENTION=5501864]USBhost[/MENTION] on a previous build, make sure you flash that kernel after flashing the update (before you reboot), or you will get a bootloop and will have to perform a recursive restorecon on the /data partition to restore the SELinux contexts.

6. If you have a folder created in TWRP recovery mode which you cannot access when you boot up the ROM, you will need to perform a recursive restorecon on that folder restore the SELinux contexts.

7. Be ready to provide a clear description of your issues and please provide logcats, dmesg logs and kmesg logs whenever possible.

Sources:

Marshmallicious Manifest

All repositories

Disclaimer

Marshmallows are always delicious... but be careful!!! Make sure you know your limits!!! If you don't know what you are doing, the marshmallows provided here could be life-threatening and render your device inedible. Every marshmallow here has undergone extensive scrutiny, but there is always a chance that something slipped through the cracks since baking is more an art than a science. So if you use the marshmallows here, don't hold the chef responsible for baking these goodies (me!)

Support this project:

If you like my work, buy me a beer so that I can pass time while my laptop churns out builds...

Paypal

Google Wallet (Send Money to craigacgomez[at]gmail[dot]com)

Credits:

Google, NVidia, ARM, Chainfire, 0xD34D, CyanogenMod team, PureAOSP team, Chroma team, BitSyko team, AndroidFileHost, BasketBuild, phhusson, doitright, XDA (any probably some more I can't remember)