[Galaxy S 5 Android Development (Snapdragon)] _alexndr:
Important notes for Developers / ROM Chefs !!!

This ROM is NOT based on any other custom ROM. My work contains many original ideas and innovations that I introduced as the first in the ROM development (see "Changelist" in post #2). Of course, it does not mean that I do not need to thank anyone - there are a lot of people who helped / inspired me anyhow (see "Credits").

I will risk the statement that at this moment my "DevBase" is the most tuned and nuanced custom ROM available at XDA Forum :cool:

I agree to use any part of my work to create other custom ROMs, but it would be great if you add me to the credits :)

Hello :)

I have decided to create a pure base, which can be a pattern for ROM Chefs (not only for beginners) :D ROM is initially safe de-bloated (read below what does it exactly mean), but all features are present and works!

ROM can be installed by normal users as well. If you like a little de-bloated ROMs, clean, but with all working features - there is no better alternative I think ;)

ROM contains my extended CSC package, which I called G900FAXX (this is a combination OXX, OXA, OXE + some additional). Final list of available CSC is as follows:

ALB,

ATL

, ATO,

AUT

, BGL, BTU, CMF, CYO, DBT,

DTM

, EGY, ETL, EUR,

H3G

, ILO, ITV, KSA, LUX, MAT, MEO, MET, MID,

MOB

, MSR, MWD, LEB,

NEE

, NZC, OMD,

OMN

, ORX, PHE,

PHN

, PRO, ROM, SEB, SEE, SER, SIO, SLK,

SWC

, TEB, TEM, TEN,

TMZ

, TNZ, TOP, TPH, TSI, TSR, TWO,

VD2

, VDS,

VIA

, VIM, XEF, XEH, XEO,

XSG

(

underlined

- VoLTE support)

NEW !!! :D I present you new, unique option: "Keep current CSC", so you can install my DevBase keeping your original CSC even if it is not listed above! Note that in such case this option has some limitations, so read carefully informations below.

How does it work? Normally, if your current CSC is listed above (contained in my DevBase), this option detects it and automatically applies during install. However, if the detected CSC is not contained in my DevBase, then my new script makes a copy of all known contents associated with CSC (except so-called "CSC bloatware" placed in /system/app & priv-app, e.g brand and/or country specific apps), then installer cleans /system partition as usual, then it flashes new ROM base and then it restores backed up CSC contents instead of my multi CSC pack. It seems to be easy, but was rather laborious - I have analyzed almost all multi CSC packs and most of single CSC packs available in the world (designed to work with G900FXX... base) to make this script as accurate as possible.

As you probably noticed - in such case your CSC pack will be as complete as it was before, thus if you are currently using any custom ROM - BEFORE the first installation of my DevBase I highly recommend you to flash the latest original stock ROM released for your country, then perform "wipe data" using stock recovery and then CHECK your CSC (chage it if necessary - more information below).

For further updates you do not need to repeat it every time. You can flash directly the next (newer) version of my DevBase with "Keep current CSC" option untouched in /options.prop - you can repeat such update procedure for a long time. As you probably noticed again - if your CSC is not contained in my DevBase, then your CSC pack will not be updated until you flash a newer original stock ROM for your country. But don't worry - CSC updates usually bring nothing (usually the only updated thing in CSC pack is the whitelist of LTE networks). I'm not trying to say "CSC updates are completely unnecessary". It's good idea to update it occasionally (especially if you noticed that major Android update for your country has been released). When you will decide to do it - just flash temporarily again the newest original stock ROM containing your CSC, and then you can return to my the newest DevBase (this time wipe data will not be necessary).

NOTE: Do not use so called "Superwipes" and/or additional /system "formats", otherwise "Keep current CSC" option may not work properly (e.g. if detected CSC is NOT included in my multi CSC package, then it will not be possible to keep detected CSC, as there is no CSC related content to backup / restore).

NOTE: I do not recommend to use "Keep current CSC" option if your current PDA (build number, after the dot) is other than G900FXX... (e.g. G900FDX..., G900FZH..., etc.).

How can I check my current CSC?

Install Phone INFO app from Play Store and check your CSC. If you are using stock ROM and everything is ok with your CSC - all CSC fields in Phone Info app should display the same CSC, as below (otherwise, you probably forgot about wipe data when you were installing ROM with another CSC).

[IMG="Phone Info - CSC"]https://dl.dropbox.com/s/6h5gfk3jnn4w24r/CSC_info1.jpg[/IMG]

How can I change my current CSC?

Q: Recently I tested several ROMs, in result of it my CSC has changed. I would like to install your DevBase, but first I want to restore my country's original CSC. What should I do?

Case 1:

Your country's original CSC is available in my DevBase

No special/additional steps are needed. Just install my DevBase with edited options.prop file placed on internal sdcard or extSdCard -> type CSC=[your_csc] instead of CSC=KCSC. Remember to perform "Wipe data" in the recovery before install. Note that sometimes additional reboot is required after completing pre-configuration steps to display your CSC correctly in Phone Info app).

Case 2:

Your country's original CSC is not available in my DevBase. Your original ROM contains

single CSC

pack (ommiting parts with model name and incremental version - name of CSC package is same as product code = CSC)

Example:

Model: SM-G900F
Model name: GALAXY S5
Country: Papua New Guinea
Version: Android 4.4.2
Changelist: 2089850
Build date: Fri, 25 Jul 2014 10:07:06 +0000
Product Code: [COLOR="Red"]PNG[/COLOR]
PDA: G900FXXU1ANG9
CSC: G900F[COLOR="red"]PNG[/COLOR]1ANH1
MODEM: G900FXXU1ANG8

In this case you need to flash your original ROM using PC Odin, then perform wipe data using stock recovery and then check your CSC in Phone Info app (note that sometimes additional reboot is required after completing pre-configuration steps to display your CSC correctly in Phone Info app).

Now you can install my DevBase - just leave "Keep current CSC" option untouched in /options.prop (it's good idea to perform "Wipe data" again from recovery to remove potential "garbage" from /data partition like e.g app data created by CSC bloatware and CSC bloatware updates).

Case 3:

Your country's original CSC is not available in my DevBase. Your original ROM contains

multi CSC

pack (ommiting parts with model name and incremental version - name of CSC package differs from product code and usually begins with the letter "O")

Example:

Model: SM-G900F
Model name: GALAXY S5
Country: Egypt
Version: Android 4.4.2
Changelist: 2089850
Build date: Thu, 03 Jul 2014 05:08:46 +0000
Product Code: [COLOR="red"]EGY[/COLOR]
PDA: G900FXXU1ANG2
CSC: G900F[COLOR="red"]OJV[/COLOR]1ANG2
MODEM: G900FXXU1ANG2

In this case you need to flash your original ROM using PC Odin or FlashFire (see "NOTE" below), then perform wipe data using stock recovery and then check your CSC in Phone Info app (note that sometimes additional reboot is required after completing pre-configuration steps to display your CSC correctly in Phone Info app). Then becomes something strange - you will see that your CSC is XSG (United Arab Emirates) instead of EGY (Egypt)! It's because XSG is the default CSC in OJV multi CSC package in case of flashing it on ROM with other than OJV CSC package. To change CSC to EGY you need CSC Select app from Play Store (requires root and stock recovery to perform all operations correctly!). Then check your CSC again using Phone Info app - should be OK.

Now you can install my DevBase - just leave "Keep current CSC" option untouched in /options.prop (it's good idea to perform "Wipe data" again from recovery to remove potential "garbage" from /data partition like e.g app data created by CSC bloatware and CSC bloatware updates).

NOTE:

Sometimes it's not possibe to flash your original stock ROM, e.g. in case you have already installed a major update, but it has not been released for your country yet. In such cases Samsung usually prevents downgrades - phone usually will not be able to boot after flashing or maybe you will not be able to flash it at all.

ALEXNDR.G900FXXU1CRH1:

1. Base:

- Odexed (original stock files) + stock kernel

- Multi CSC OXM (list of natively supported CSC as above) (*)

- Removed SecurityLogAgent.apk (annoying on rooted phones)

- Removed Rlc.apk (to avoid "OEM unlock issue")

- Rooted systemlessly (Magisk v17.1 or SuperSU 2.82 SR5) (*)

- All original features are present and works (except KNOX related apps)

- No visual changes (100% stock look)

2. CscFeature MOD (enabled some built-in, hidden features):

- Added shutter sound menu in Camera app

- Sending/receiving MMS without data on

- Show SMS/MMS sending time instead of receiving

- Added "Call/Message block" option in Settings

- Added "LTE Only" network mode (NOTE: voice calls may not work in this mode)

- 4G/3G network support in any CSC (master/slave SIM, applies to dual SIM variants)

- Call Recording (via "Record" button or "Auto record calls" option)

- Enabled "Recent App Protection" feature

3. Xposed framework & Xposed Installer app [optional] (*)

4. Virtual / physical Safe De-Bloat (more info below) (*)

What does it mean and why is it called "safe"?

- ONLY apps available in stores are removed from DevBase, so you can easy (re)install any of these app if you like

- ONLY pre-installed system apps are removed, DevBase installer never touch any updated app nor app installed manually from store

Thus, the following conclusions can be drawn:

1. If you install my DevBase directly over stock ROM without performing "Wipe data" - in most cases almost all these apps will remain untouched, because almost all apps have been updated already (stored on /data). But then you will be able to remove any useless app using the "Application manager", like any other app. Removed manually app will not appear again until you use my DevBase while updating.

2. If you perform "Wipe data" while installing my DevBase - then all apps listed below will be removed. If you would like to use any of these apps - just install it manually from appropriate store. Installed manually app will not be removed during the next DevBase update.

Removed apps list:

ChatON

Chrome

Drive

Dropbox

Flipboard

Google+ / Photos

Group Camcorder

Group Play

Hangouts

Play Books

Play Games

Play Movies

Play Music

Play Newsstand

Smart Remote

(*) - these options can be controlled by editing options.prop file (you can find such file in ZIP's root directory). Just place modified options.prop file (use e.g. Notepad++ to edit) in the root directory of internal emulated scdard (/data/media/0) or extSdCard (recommended if you plan to format internal emulated sdcard) and then start the installation. More info below:

#

# DevBase by ALEXNDR (_alexndr @ XDA)

#

# Configuration file to allow customize the installation.

#

# File inside the ZIP installer is just for reference - please DO NOT modify it!

# If you want to change some options listed below - edit the copy of this file, then place

# modified options.prop file in the root directory of internal emulated scdard (/data/media/0)

# or in the root directory of extSdCard (recommended if you plan to format internal emulated

# sdcard) and then start the installation.

#

# TIP: You do not need to repeat this step every next update I will release. As long as your

# customized options.prop file is present in the (ext)SdCard - future DevBase installers will

# "read in your mind" that you want to install with such options again.

#

# NOTE: All below variables and values are case sensitive!

# Enable root access with the selected method. Allowed values:

# magisk - install Magisk & MagiskSU as root solution (default)

# supersu - install SuperSU as root solution, without Magisk

# noroot - do not root device

root=magisk

# Install Xposed framework matched to the ROM (there is also a possibility to detect Xposed profile

# automatically, but auto-detection will not work if user will perform wipe /system). Allowed values:

# auto - detect Xposed profile automatically

# true - force Xposed framework installation

# false - do not install Xposed framework

xposed=auto

# CSC Selection. Allowed values:

# KCSC - Keep current CSC, recommended in most cases (automatic selection or copy your current CSC contents).

# You can force the use of natively supported CSC by typing (use UPPERCASE!): ALB, ATL, ATO, AUT, BGL, BTU, CMF,

# CYO, DBT, DTM, EGY, ETL, EUR, H3G, ILO, ITV, KSA, LEB, LUX, MAT, MEO, MET, MID, MOB, MSR, MWD, NEE, NZC, OMD,

# OMN, ORX, PHE, PHN, PRO, ROM, SEB, SEE, SER, SIO, SLK, SWC, TEB, TEM, TEN, TMZ, TNZ, TOP, TPH, TSI, TSR, TWO,

# VD2, VDS, VIA, VIM, XEF, XEH, XEO, XSG

CSC=KCSC

# Custom CSC Features. Allowed value in each line: <Example_line>value</Example_line>

<CscFeature_Sip_EnableSymbolInSecondary>en_GB;en_US;az;ca;cs;da;de;et;es;eu;el;fr;gl;ka;hr;it;is;kk;lv;lt;hu;nb;nl;pl;pt;ru;ro;fi;sr;sk;sl;sv;tr;uk;ko;hy;bg;ar;fa;ur;zh_CN;</CscFeature_Sip_EnableSymbolInSecondary>

<CscFeature_Sip_ConfigOpBranding>SPR</CscFeature_Sip_ConfigOpBranding>

<CscFeature_Common_SupportWcdmaInSlave>true</CscFeature_Common_SupportWcdmaInSlave>

<CscFeature_VoiceCall_ConfigRecording>RecordingAllowed</CscFeature_VoiceCall_ConfigRecording>

<CscFeature_Setting_EnableMenuBlockCallMsg>true</CscFeature_Setting_EnableMenuBlockCallMsg>

<CscFeature_Setting_CustNetworkSelMenu4>LTEONLY</CscFeature_Setting_CustNetworkSelMenu4>

<CscFeature_Setting_SupportRealTimeNetworkSpeed>true</CscFeature_Setting_SupportRealTimeNetworkSpeed>

<CscFeature_SmartManager_DisableAntiMalware>true</CscFeature_SmartManager_DisableAntiMalware>

<CscFeature_SystemUI_SupportRecentAppProtection>true</CscFeature_SystemUI_SupportRecentAppProtection>

<CscFeature_Contact_EnableCallButtonInList>true</CscFeature_Contact_EnableCallButtonInList>

<CscFeature_Message_DisplaySmsTimeAs>server</CscFeature_Message_DisplaySmsTimeAs>

<CscFeature_Message_DisplayMmsTimeAs>server</CscFeature_Message_DisplayMmsTimeAs>

<CscFeature_Camera_ShutterSoundMenu>true</CscFeature_Camera_ShutterSoundMenu>

<CscFeature_Web_AddOptionToTerminate>true</CscFeature_Web_AddOptionToTerminate>

<CscFeature_Web_EnablePromptToExit>true</CscFeature_Web_EnablePromptToExit>

<CscFeature_RIL_ForceConnectMMS>true</CscFeature_RIL_ForceConnectMMS>

# Custom physical debloat list. Allowed value in each line: path to app's directory in /system.

# (NOTE: wildcards are allowed here)

/system/app/SecurityLogAgent

# Custom virtual debloat list. Allowed value in each line: exact app name with .apk extension.

# (NOTE: without app's path/directory, wildcards are NOT allowed here!)

ExampleSystemApp1.apk

ExampleSystemApp2.apk

NEW !!! :D Starting from DevBase v3.0 there is a new customization method - you can change frequently switched root options just by renaming installer's ZIP file name (instead of editing options.prop file). Currently supported "strings" in the file name: "magisk", "supersu", "noroot", "rescue", "xposed", "CSC_xxxx.zip":

Case 1 (default) - install the ROM with Magisk & MagiskSU as root solution

(just flash ZIP file "as it is")

Case 2 - install the ROM with SuperSU as root solution, without Magisk

(place "supersu" string anywhere in the ZIP file name, e.g. "G900Fxxx_DevBase_v5.x_supersu.zip")

Case 3 - do not root device (NOTE: you will get unmodified ROM!)

(place "noroot" string anywhere in the ZIP file name, e.g. "G900Fxxx_DevBase_v5.x_noroot.zip")

In DevBase v4.5+ there is a "rescue" option, which may be especially helpful in case of encrypted device if you experienced bootloop caused by e.g. systemless mod/module/xposed stored on /data (without access to /data from TWRP). In case of bootloop just place "rescue" string anywhere in the ZIP file name, e.g. "G900Fxxx_DevBase_v5.x_rescue.zip" and then (re)install the ROM - should help in case of (probably) all possible bootloop reasons. In addition to the normal (re)installation of the ROM (thus restoring the original /system, kernel, modem, etc.) this option will also force "Core Only Mode" in Magisk and will move all SYSTEMLESS DevBase modifications to /data/devbase/system/.backup, before performing bind mounts, so original files will be used.

In DevBase v4.6+ there is a possibility to force CSC by renaming ZIP file name - this is the only case-sensitive variable which have to be put at the beginning of ZIP file name and must be folloed by "_" (due to the fact that there is a high risk that ZIP file name may contain CSC code accidentally). Example (to force CSC DBT): "DBT_G900FXXU1xxxx_DevBase.zip"

In DevBase ROM v5.6+ there is "xposed" option which allows you to force Xposed framework installation. It is NOT forced by default - you need to force it manually while installing ROM with Xposed first time, renaming ZIP's file name to e.g. "G900Fxxx_DevBase_v5.x_xposed.zip". Next ROM's updates will detect and apply Xposed profile automatically, unless you wipe /system - then auto detection is not possible.

Installation:

CWM / TWRP recovery (KNOX 0x1) - open file using "Install (Zip)" option and confirm operation. If you want to perform "clean install' - perform "wipe data/factory reset" BEFORE flashing Zip! I highly recommend you to update bootloader/modem also to the newest versions available in post #3, to avoid potential bugs/issues.

Wipe data is NOT required if you are coming from stock ROM or a previous version of my DevBase (if you leave "Keep current CSC" option untouched in /options.prop or if you choose same CSC as you are currently using). In other cases - wipe data is highly recommended!

I do not recommend using any additional superwipes or formats before install my DevBase (my installer cleans your system well enough!).

Credits:

@Chainfire for systemless SuperSU and a lot of inspiration

@topjohnwu for Magisk, Xposed, another inspiration

@rovo89 & @wanam for Xposed framework & Xposed Installer app

@amarullz for Aroma Installer used in older DevBase versions

@svadev & @_riddle for deodexed tools/binaries used in older DevBase versions

Hit Thanks button if you like my work. If you really appreciate my work - feel free to buy me a beer :)