[Q] can we damage a device by programming negligently? - Other Tools & General Discussion

I am an indie developer who learned coding through tutorials. Is it possible that if I, let's say, don't follow some coding guidelines, or maybe put too much load on the device, cause damage to the device? I am making a live wallpaper and set it to draw every 100ms. This seems to be consuming too much battery. I am afraid if the battery is the only thing being affected or not? Similarly, an infinite for loop set for the purpose of copy/pasting a file with incremental file names looks like another method to cause damage (by filling up all the memory). But both mentioned examples can cause temporary damage, is it possible that I may cause a permanent damage to my phone's "hardware" without using methods which use root?

Of course ; actually that's why exceptions and errors are there : to force your app to quits before harming the device.
An infinite loop can ruin the CPU & overheat the device.
Code is nothing but a way to control the hardware..overloading the hardware is one way to destroy it.

Makes sense
I thought android system was "safe" enough that devs with malicious intentions would find it incredibly hard to distribute their apps :-/

Yes, Android tries to isolate as much of this as possible by using their JVM (Dalvik in most cases), however use of the NDK and JNI is typical of app development.
As stated before, misuse of loops can cause this commonly by filling up the heap; in terms of damaging the components though, this is much more possible through root and the JNI.

Related

[Info] For Newbie What It Is It Mean? Your Answare Are Here (Updated 24th January)

Newbie Quick Start​
UPDATES
[Info] For Newbie What It Is It Mean? All Your Answare Are Here Part I
[Info] For Newbie What It Is It Mean? All Your Answare Are Here Part II - 29th December 2011, 07:54 PM
[Info] What Is Odex And Deodex In Android - 24th January 2012, 03:07 PM
[Info] What Is Zipalign In Android And How To Make Apps Zipaligned - 24th January 2012, 03:18 PM
Click to expand...
Click to collapse
USER REVIEW'S ABOUT THIS THREAD IN JUST SOME MINUTES
m.kochan10
Really good idea! IT should be sticky!
-----------------------------------------------------------------------------
rajanprash
Hi Sbxlive,
Thanks for all the info on the Galaxy R.
I am getting the device today.
I wanted to know if thr GR has NFC and MHL. As far as I know no review states that these features are present on the Galaxy R.
Thanks.
Click to expand...
Click to collapse
I Created This New Thread Because Of When I Entered In XDA With My Galaxy R ,I Really Don't Know About Above This Things And I Thought Daily New Members Are Coming In XDA With Their Devices And Facing Thats Problems Also So I Help This Buddies As I Do. So Lets Go On The Worlds ​
ITS SIMPLE BASIC BUT IMP MY FRIENDS SO PLEASE READ IS CAREFULLY YOUR DEVICE IS YOUR PART OF YOUR LIFE I THINK SO ​
OTG USB On-The-Go
USB On-The-Go, often abbreviated USB OTG, is a specification that allows USB devices such as digital audio players or mobile phones to act as a host allowing a USB flash drive, mouse, or keyboard to be attached.
Click to expand...
Click to collapse
NFC
Near field communication (NFC) is a set of standards for smartphones and similar devices to establish radio communication with each other by touching them together or bringing them into close proximity, usually no more than a few centimetres. Present and anticipated applications include contactless transactions, data exchange, and simplified setup of more complex communications such as Wi-Fi.Communication is also possible between an NFC device and an unpowered NFC chip
Click to expand...
Click to collapse
OC
Over Clock (more clock cycles per second)
Disadvantages
Many of the disadvantages of overclocking can be mitigated or reduced in severity by skilled overclockers. However, novice overclockers may make mistakes while overclocking which can introduce avoidable drawbacks and which are more likely to damage the overclocked components (as well as other components they might affect).
Click to expand...
Click to collapse
ROOT
Rooting is a process that allows you to access the workings of your phone that the phone provider does not want you to. It allows you to changed settings, functions, whole operating systems, make upgrades etc......
You can leave the "Stock" OS behind and get the most out of a phone. IT DOES VOID YOUR WARRANTY.
Click to expand...
Click to collapse
KERNEL
In computing, the kernel is the main component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware level. The kernel's responsibilities include managing the system's resources (the communication between hardware and software components). Usually as a basic component of an operating system, a kernel can provide the lowest-level abstraction layer for the resources (especially processors and I/O devices) that application software must control to perform its function. It typically makes these facilities available to application processes through inter-process communication mechanisms and system calls.
Click to expand...
Click to collapse
MHL
Mobile High-Definition Link (MHL) is a proposed industry standard for a mobile audio/video interface for directly connecting mobile phones and other portable consumer electronics (CE) devices to high-definition televisions (HDTVs) and displays. The MHL standard features a single cable with a low pin-count interface able to support up to 1080p high-definition (HD) video and digital audio while simultaneously charging the connected device.
Click to expand...
Click to collapse
CWM
ClockWorkMod - A utility for Android used to flash zip files containing Android ROM distributions on an Android mobile phone. It also allows the user to create or restore backup files containing a whole installation of a ROM, including system, application and user files.
Click to expand...
Click to collapse
ROM
Technical Definition of ROM
ROM stands for Read-Only Memory and technically speaking, it refers to the internal storage of a device, which is supposed to contain the operating system instructions that needn’t be modified at all during the device’s normal operation. For this reason, such instructions are stored in read-only memory – much like on a non-rewriteable CD or DVD – to make sure no changes are made to them that could possibly make the device malfunction. This is in contrast with hard disk drives, solid state drives or regular flash storage devices used by personal computers that allow full read/write access even to the storage area that contains the operating system files.
Click to expand...
Click to collapse
What is Firmware
The read-only operating systems that we just discussed above are also called ‘firmware’, as they stay firmly in place without modification access to the users of the device. Modification of firmware is still however possible, just not under normal usage. Many devices require specialized hardware to be used for the purpose while other devices have the storage set as read-only through software protection only, which can be removed or overridden without the need for any specialized hardware, just by using software written for the purpose, often but not always requiring connection to a computer.
Click to expand...
Click to collapse
Thus, the terms ‘operating system’ and ‘firmware’ both refer to the same thing and can be used interchangeably when applied to such devices.
Click to expand...
Click to collapse
Flashing
The ROM memory used in smartphones and tablets etc. is often same as flash memory found in SD cards and USB flash drives, simply optimized for better speed and performance while running the operating system. As explained above, it is read-only under normal usage and requires a special procedure for any modifications to be made to its contents. The procedure of modifying or replacing the contents of such flash memory is known as flashing. Thus, in layman’s terms, flashing is essentially the same as installing or modifying the firmware of a device that is stored on its protected flash memory.
Click to expand...
Click to collapse
ROM as the Operating System
When it comes to smartphones and tablets, the term ROM is used to refer to the firmware stored in the internal memory of the device, rather than the internal memory itself. It can also refer to a file prepared for the purpose of replacing this firmware with another version of using a special method.
Thus, when you are told by someone to download a ROM, they are referring to the file that contains the firmware in a format ready to be installed to your phone to replace it’s existing firmware. Similarly, when asked what ROM is your phone running or when told by someone their phone is running a particular ROM, they are again talking about the particular variant of the firmware.
Click to expand...
Click to collapse
Types of ROMs
Unlike most desktop operating systems, mobile operating systems can be found in installable format in multiple forms, which can be categorized as follows.
Truly Stock ROMs / firmware:
This is the operating system in its default form, without any modifications made to it except for any device-specific support required to run it on the particular device. Truly stock firmware provides the standard user experience of the operating system without any cosmetic or functional changes made. These days, truly stock firmware is primarily found in cases where both the device and the operating system is built by the same company. Amongst modern mobile devices, examples of truly stock firmware can be found on Apple’s iOS devices, Palm’s WebOS devices and some Android devices shipped without any modifications made to the operating system by their manufacturers.
Click to expand...
Click to collapse
Manufacturer or Carrier branded Stock ROM / Firmware:
This type of firmware has had enhancements added over the default operating system by the device manufacturer or the mobile service carrier. This often includes interface enhancements, proprietary applications and in most cases, restrictions intended to limit the use of the device with a specific carrier or region. There are often further restrictions preventing installation of firmware not released by the carrier or manufacturer.
Most Android and Symbian devices fall under this category, and so do most Windows Phone 7 devices but in their case, the changes made from the truly stock firmware are minimal and limited to the inclusion of additional apps only.
Click to expand...
Click to collapse
Custom ROM / firmware:
Almost all devices ship with either of the above two categories of firmware, though things don’t end there. Independent developers who like to customize their devices beyond the standard options provided often tend to release the fruits of their labor for the rest to enjoy, in form of custom ROMs. The more open the platform, the more independent development it attracts, a good example of which is the independent custom ROM development for Android.
Click to expand...
Click to collapse
In case of proprietary firmware such as iOS and Windows Phone 7, there is often little or no room for customization of the operating system itself but regardless of that, developers still tend to release custom ROMs bundled with useful tools and hacks applied to provide functionality beyond the stock features. In fact custom ROM development for the otherwise proprietary and closed-source Windows Mobile platform lead to the formation of the largest independent mobile development community – the XDA-Developers forum.
Click to expand...
Click to collapse
Stock Vs. Custom ROMs
Both stock and custom ROMs have their merits and demerits and choosing between the two requires careful consideration. In this section, we are going to make a comparison between the two types of ROMs to help you make the right choice. Let us begin by taking a look at their advantages and disadvantages.
Do note that this section is written with primarily Android (and now obsolete Windows Mobile) devices in mind. However, the many of these concepts will also apply to other smartphone platforms.
Click to expand...
Click to collapse
Advantages & Disadvantages of Stock ROMs
Stock firmware is the result of a lot of research and testing done by the operating system vendor, the device manufacturer and/or the mobile service carrier. Therefore, it carries several advantages:
It is usually quite stable upon release.
Almost all bugs are patched during the extensive beta testing before release.
It carries the official support by the firmware vendor, device manufacturer and the mobile service carrier.
Updates are pushed automatically to the device by the carrier.
Along with its advantages, stock firmware also carries its disadvantages and these include:
Updates aren’t frequent, as development is done mostly by corporations who have to follow a scheduled release cycle.
Providing feedback to the manufacturer in case of any issues is either impossible, unwelcome (often with Apple devices), or a long, tedious process.
Similarly, getting official support can be a hassle as well, involving a tedious process.
If the device manufacturer and operating system developer are different (as is the case with Android and Windows Phone 7), any updates released by the operating system vendor need to be edited by the device manufacturer or mobile carrier to add compatibility and additional software before release. Hence, some devices get updates delayed by months.
Updates are often released first in the United States, leaving the rest of the world waiting. (A world does happen to exist beyond the United States, we’ve confirmed it ourselves!)
Worse still, when manufacturers choose to no longer release official updates for their older devices in favor of newer ones, their users are essentially stuck with old versions of the operating system. This case is evident with many Android devices barely a year and a half old.
Several OS developers, device manufacturers or mobile service carriers add
restrictions in the stock firmware ranging from locking the use of the device with one network/region to disabling sideloading of apps (we’re talking about you, AT&T) not available in the official app market, to advanced restrictions removing any chance of getting root access, just to name a few.
Click to expand...
Click to collapse
Advantages & Disadvantages of Custom ROMs
Custom ROMs are as good or as bad as the effort put into them by their developers. Key advantages of custom ROMs are:
First and foremost, choice! There are thousands of custom ROMs out there for a range of devices, each offering a diverse set of features not found in the stock ROM.
Update frequency – custom ROMs are often under active development and newer releases of the core operating system are incorporated in them way before updated official ROMs are released. This is particularly true in case of Android devices, where developers start porting newer versions of Android to several devices as soon as they are released.
Providing feedback is as easy as leaving a message on the development forum for the ROM in question, resulting in highly efficient bug reporting.
Getting support with your issues at the forums is similarly easy, as not only the main developers themselves but also other experienced users of the ROM from the community are glad to help you with your issues and in the process, improve the ROM for everyone.
Custom ROMs usually have all the extra restrictions removed, enabling users to sideload apps, tether their mobile data connection to their computer without paying extra for it, gain root access, use their device in any region etc. without any need for circumventing the protection themselves.
Performance enhancements and optimizations found in many custom ROMs can make them much faster than stock ROMs, enabling users to get the most out of their devices.
Overclocking options are built into some custom ROMs, further speeding up the devices.
Undervolting options found in some ROMs on the other hand result in improved battery life.
Old phones with little internal memory can benefit most from custom ROMs that allow them to use the external SD card memory for the apps exactly the way they would use the internal memory.
So with all these advantages, there should be no reason to stick with the stock ROM, right? Not necessarily! Like all things in life, custom ROMs come with their disadvantages as well:
Due to the lack of extensive testing prior to release, many custom ROMs can be buggy in the beginning and installing a ROM with missing or corrupt critical files can even brick your phone.
Several custom ROMs that are ports of ROMs from other phones can have missing functionality that hasn’t been made to work on your phone with the ROM yet.
Installing a custom ROM usually involves wiping your phone to factory settings, so you lose your data and start from scratch. Fortunately, Android’s built-in contact syncing along with apps offering message, call log and app backup/restore make this process easier, letting you retain your data.
The installation process itself can be cumbersome and may require you to root your phone and often circumvent its security features to allow for custom ROM installation in the first place.
Installing a custom ROM will in most cases void your phone’s warranty, though often the process is reversible, meaning you can turn your phone back to stock as long as it isn’t bricked.
Installing a ROM to your phone requires you to root it first in most cases. While rooting most phones is easy, some phones require a complicated procedure to be followed before you can install a ROM to it and often, such procedures involve a risk of bricking your device if things go wrong.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Click to expand...
Click to collapse
------------------------------------------------​
I THINK THIS THREAD HELPED YOU MUCH MORE AS YOU KNOW IT WILL KEEP UPDATING WITH NEW WORDS SO KEEP IN TOUCH AND DONT FORGET TO SAY THANKS OR REPLY
IF YOU HAVE SOME SUGGESTIONS OR ANY QUERY"S PM ME OF REPLY
Click to expand...
Click to collapse
DONT FORGET TO CLICK ON THANKS​
Really good idea! IT should be sticky!
Thanks for the Info.
Hi Sbxlive,
Thanks for all the info on the Galaxy R.
I am getting the device today.
I wanted to know if thr GR has NFC and MHL. As far as I know no review states that these features are present on the Galaxy R.
Thanks.
m.kochan10 said:
really good idea! It should be sticky!
Click to expand...
Click to collapse
t-t i can not understand my english very poor
Thank you.It makes a huge contribution to new users to understand Android.
No problem mys199156 Sticky thread means in this context "fixed", it remains always on the top, no matter if a new post has come or not.
great! post, sticky now!!
Thanks. This should be sticky !!
PS : ClockWorkMod should be CWM....Not CMW.
Cheers !
s4sixty said:
Thanks. This should be sticky !!
PS : ClockWorkMod should be CWM....Not CMW.
Cheers !
Click to expand...
Click to collapse
sry my mistek
somthing wrong here wait i will again edit this topic from first line coc i dare to edit this topic on my mobile thats why it happen sorry for that
Sent from my GT-I9103 using XDA App
[Info] For Newbie What It Is It Mean? All Your Answare Are Here Part II
BFQ - Budget Fair Queueing
BFQ (Budget Fair Queueing) is a Proportional Share, or equivalently Fair Queueing, disk scheduler that allows each process/thread to be assigned a fraction of the disk throughput. It has the following characteristics.
It distributes the disk throughput to disk-bound proceses as desired, even if it fluctuates, independently of the disk parameters and with any workload. Providing this sector-domain fairness to processes issuing random requests would easily cause the disk throughput to drop on one hand, and cause other processes to experience very high latencies on the other hand. To face this problem, for processes issuing random requests, BFQ switches to time-domain fairness, in which it is the disk time to be fairly distributed (basically the scheme of CFQ).
According to our results, BFQ achieves up to 30% higher aggregate disk throughput than CFQ with most of the workloads considered, or the same throughput with the others.
BFQ guarantees to each disk request a tight delay with respect to the completion time that the requests would enjoy in an ideal (unfeasible) perfectly-fair system.
BFQ exports a low_latency tunable. If enabled (currently the default), BFQ executes a special heuristics that automatically gives to interactive and soft real-time applications more than their fair share of the disk throughput, to reduce their latency. According to our results, for desktop or handheld usage, the system becomes virtually as responsive as if the disk was idle, whatever the actual disk load is. Soft real-time applications enjoy up to 3-time lower latencies than under CFQ.
Low-latency guarantees are preserved also in presence of NCQ.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
USB JIG
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
This jig will allow you to get your phone into download mode when your phone is 3 button combo disabled or soft bricked. As long as there is something on the screen, the jig should work for you.
This JIG also works to RESET THE FLASHING COUNTER. You can flash custom ROMS and put the flash counter back to 0.
***WORKS ONLY AS RESETTER FOR ANDROID 2.3.4 AND EARLIER***
For More Info : http://usbjig.com/
Click to expand...
Click to collapse
SbXLivE said:
BFQ - Budget Fair Queueing
Click to expand...
Click to collapse
You should always update this article
Very good explanation of basics!
Would be nice to have similar intro explaining slightly more complex things seen during flashing a new firmware or somehow else modding a phone. Not everyone understands what is kernel, boot, recovery, system and data partitions.
Very interesting! You resolve some doubts, thank you!
Sent from my GT-I9103 using xda premium
SbXLivE said:
sry my mistek
somthing wrong here wait i will again edit this topic from first line coc i dare to edit this topic on my mobile thats why it happen sorry for that
Sent from my GT-I9103 using XDA App
Click to expand...
Click to collapse
what I've said is wrong. I always say CMW
Nice post for android beginners.
much useful info. thanks!
What Is Odex And Deodex In Android
What Is Odex And Deodex In Android
WHAT IS AN ODEX FILE?
In Android file system, applications come in packages with the extension .apk. These application packages, or APKs contain certain .odex files whose supposed function is to save space. These ‘odex’ files are actually collections of parts of an application that are optimized before booting. Doing so speeds up the boot process, as it preloads part of an application. On the other hand, it also makes hacking those applications difficult because a part of the coding has already been extracted to another location before execution.
Click to expand...
Click to collapse
THEN COMES DEODEX
Deodexing is basically repackaging of these APKs in a certain way, such that they are reassembled into classes.dex files. By doing that, all pieces of an application package are put together back in one place, thus eliminating the worry of a modified APK conflicting with some separate odexed parts.
In summary, Deodexed ROMs (or APKs) have all their application packages put back together in one place, allowing for easy modification such as theming. Since no pieces of code are coming from any external location, custom ROMs or APKs are always deodexed to ensure integrity.
Click to expand...
Click to collapse
HOW THIS WORK
For the more geeky amongst us, Android OS uses a Java-based virtual machine for running applications, called the Dalvik Virtual Machine. A deodexed, or .dex file contains the cache used by this virtual machine (referred to as Dalvik-cache) for a program, and it is stored inside the APK. An .odex file, on the other hand, is an optimized version of this same .dex file that is stored next to the APK as opposed to inside it. Android applies this technique by default to all the system applications.
Now, when an Android-based system is booting, the davlik cache for the Davlik VM is built using these .odex files, allowing the OS to learn in advance what applications will be loaded, and thus speeds up the booting process.
By deodexing these APKs, a developer actually puts the .odex files back inside their respective APK packages. Since all code is now contained within the APK itself, it becomes possible to modify any application package without conflicting with the operating system’s execution environment.
Click to expand...
Click to collapse
ADVANTAGES & DISADVANTAGES
The advantage of deodexing is in modification possibilities. This is most widely used in custom ROMs and themes. A developer building a custom ROM would almost always choose to deodex the ROM package first, since that would not only allow him to modify various APKs, but also leave room for post-install theming.
On the other hand, since the .odex files were supposed to quickly build the dalvik cache, removing them would mean longer initial boot times. However, this is true only for the first ever boot after deodexing, since the cache would still get built over time as applications are used. Longer boot times may only be seen again if the dalvik cache is wiped for some reason.
For a casual user, the main implication is in theming possibilities. Themes for android come in APKs too, and if you want to modify any of those, you should always choose a dedoexed custom ROM.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
What Is Zipalign In Android And How To Make Apps Zipaligned
What Is Zipalign In Android And How To Make Apps Zipaligned
WHAT IS ZIPALIGN?
zipalign is an archive alignment tool introduced first time with 1.6 Android SDK (software development kit). It optimizes the way an Android application package (APK) is packaged. Doing so enables the Android operating system to interact with the application more efficiently, and hence has the potential to make the application and overall the whole system much faster. Execution time is minimized for zipaligned applications, resulting is lesser amount of RAM consumption when running the APK.
Click to expand...
Click to collapse
SO HOW DOES IT EXACTLY WORK?
In an Android operating environment, data files stored in each application package are accessed by multiple processes, for example, the installer will read the data manifest to determine the associated permissions; the system server can read these resources for multiple reasons, like displaying notifications; the Home application, for example, will read resources to get the application’s name and icon. Since Android is based on a a true multi-tasking operating infrastructure, these files are continually and repeatedly accessed. Finally, but not least, the application itself reads the manifest data.
As Android is Linux-based, memory-mapping plays a key role in efficient handling of processes. Essentially, the optimal alignment for the Android OS’ resource-handling code is 4-byte boundaries. What this means is that, if APKs are memory-mapped to 4-byte boundaries, and aligned accordingly, the OS will not need to ‘read through’ the whole application package to get to the desired data manifest. Every system process will know in advance where to look for it’s desired resources, and hence will execute much smoother and faster.
Summing it up, zipaligning an APK results in all uncompressed data within the package to be aligned on 4-byte boundaries, allowing all portions to be accessed directly with the memory-map. RAM consumption is lowered while execution because the querying code doesn’t have to read through the entire application package.
Click to expand...
Click to collapse
DISADVANTAGES OF UNALIGNED APKs
Quite understandably, situation would be reserved for unaligned application packages. Resource reading would be slow and memory usage would be on the higher end of the spectrum. It would also depend on how many unaligned applications are present. For example, if less number of applications with an unaligned home application, you’d see slower application launch times. This is the best case scenario. For a worst case scenario, having a number of unaligned applications will result in the system repeatedly starting and killing processes, struggling with lags and huge battery drain.
Click to expand...
Click to collapse
HOW DO YOU DO IT, THEN?
As mentioned earlier, the zipalign tool became a part of Android SDK from 1.6 onwards. It can be found under the ‘tools’ folder of the SDK. To use it, simply run the command:
Code:
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
where infile.apk is the source file, and outfile.apk is the output file.
Furthermore, you can also verify the alignment of an APK file using the following command:
Code:
zipalign -c -v <alignment> existing.apk
where existing.apk can be any application package that you need to get verified. Also, the <alignment> tag in both the commands needs to be an integral value (otherwise the command will return invalid). This value, although can be any integer, MUST always be 4, which would provide 32-bit alignment. Any other value and it will effectively do nothing.
Finally, for the flags used in these commands,
-f : overwrites existing outfile.zip
-v : will give verbose output
-c : will confirm the alignment of a given file
WORD OF CAUTION: zipalign operation must only be performed after you have signed the APK file with your private key. If zipaligned before signing, the signing procedure will disturb the alignment. Same holds true for any other alteration, addition or removal to the APK file. Any change after running zipalign will undo the alignment.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
thanx dude, i am translating to my own language and will use at a forum with your permission?

Understanding Android platform in a nutshell (in layman's terms)

System.out.println("Hello peoples");
==>The purpose of this guide is to help people who don't know anything about programming,aren't modders,guys with knowledge about technology.
==>Initially I loved computers and their capabilities and have a little knowledge on the C and Java languages and just how computers (think).
You have to understand that computing tries to emulate human behaviors on how to solve problems.This is where programming kicks in.
So what is Android?
===================
1)Android in general is an operating system that was meant to run on mobile devices e.g. cell phones
and has expanded to tablets and notebooks.Android is divided into three language groups:
a)the system's framework and apps are written in java.
b)the Android's core [kernel] is pure C -language.
c)the Android's libraries are written in C++.
App libraries are called by apps that need more functionality that java can't provide.These are usually plugins like
decoders e.g. ffmpeg libraries that are used in video decoding,flash-players e.t.c. Here,java native methods are used and the android NDK platform
is used to enable the java apps call these libraries during execution.(Please read further on Android SDK,NDK and Jni).
So what happens when you have just flashed that new Rom.
====================================================================
First you have to understand that cell phones have their own embedded firmware not including the recovery and you will see why.
a)the recovery partition can be flashed to install aftermarket recovery roms.So even if you mess your recovery,you can still install again.(This varies with different phones).
b)their is that system chip which you cannot touch and there is a reason for it.Think of this partition like a PC BIOS.If you mess with your bios
your system is toast aka Bricking the system.Since phones are classed as embedded systems,manufactures don't want people messing with it as it would result into
cryptic errors and system vulnerability.
when the on button is pressed something simple yet complicated happens:
1==>The kernel which is compressed to save space usually in a (zImage) format is deflated or expanded.Since your NAND chips are partitioned,the kernel is given a very
special chunk in which is protected from user data.
2==>The kernel finds which base address it needs to start executing e.g.(0x00200000) and mostly when you put a wrong kernel base
address your phone enters into a boot-loop because arguments are being passed to invalid locations.It is important to know where your kernel base address
starts.You can try looking it up in your kernel sources(try searching for the mach msm folder and into the makefile) or just goggle it up or use Xda-Kitchen.
3==>with the correct kernel base address,execution starts.Usually the (init.rc) file in the (ramdisk folder) gives symlinks and creates structures i.e. folders that will house
modules and sets the correct paths to android files and framework.
4==>After arguments have successfully been passed,the handles are now passed to Android.Basically Android checks for (init.d) scripts that are available
this is true to GingerBread and Cyanogenmod 7.After that audio checks are done followed by camera services and then arguments are passed to (core.jar),a
critical framework file which is huge around 50Mb in size in CyanogenMod 7.
5==>Here the DalvikVM (Dalvik virtual machine) is called and the process of optimizing your system files starts.The framework get optimized first as this contains critical
code needed to run your device.Then your flingers and renderers and called.This are engines used by android e.g. (pixelflnger) which is used in touchscreen.
Your system's sensors are usually started around this point (your compass,light sensors e.t.c)your phone apps e.g. contacts,calendar get optimized around this point
and depending on the number of apps your manufacturer installed,it will take some time.
6==>your network get's activated around this point and is probably the time the capacitive buttons and lights on your gadget light up.This is usually a good indication
that your system has loaded.When your bootanimation ends the handles are passed to activate your home launcher.There is usually still a lot of activity going
on to fully ready your system and this is why if you try to use it immediately especially on low-end phones,your system lags or get (not responding) errors.
common misconceptions
=====================
1==>There is are reason why goggle gave minimum specifications needed to run Android because this is a full operating system(OS) unlike the past relic
phones that ran on 50MHz processors.
2==>please don't complain that some of your Ram is not the same as specified on the phones catalog(e.g. you have 256Mb of Ram but in the task manager it indicates you have 179Mb).
There is a reason to it.There are core processes that eat a chunk of your Ram and are hidden so that you don't try silly stuff like trying to kill them in thinking that your are trying to get more memory.
Think of it like this,it's like trying to kill (services.exe or svchost.exe) processes in Windows.You will just be trying to get system hangs,bluescreens
or just a system crash.
Will Add more info later.Please feel free to correct anything i might have not addressed properly or share your views.
Happy modding.
Kernel topic
============
In simple terms,the kernel is the core of any operating system e.g. windows, Mac,or any Linux distro like Ubuntu and Android.Android kernels come mostly
in the form of a compressed kernel (zImage).The kernel is written in pure C-language,which gives it direct access to memory and registers unlike java
which has to pass through the java VM(virtual machine).This makes code written in C-language to be very fast and robust but also dangerous.
==>Many Androids in the eclair regime ran on kernel 2.6.29. This was not a complete kernel and as by my experience there was alot of code missing from it.
2.6.29
======
==>a lot of androids did not have adb functionality due to the framework being embedded to allow USB mounting to PC.This was a very rigid method
of doing it(also a very old method).
==>In the case of other devices, when viewing the internal task manager,many processes were viewed as (0.00) byte files.In essence you could not determine
the amount of RAM your app was taking.This is true in the case of huawei u8120.
==>In the case of shutting down the phone,even in some cases under load,it did so very fast.It killed threads and handles mercilessly. Many people misunderstood
this concept and thought their phones ran faster as compared to 2.6.32 kernel.
2.6.32.9
========
Here there was a ton of improvements as developers and modders became more aware of support and tweaks.
==>Fixed issues like the internal task managers.It was now possible to accurately know how much RAM your apps were taking.
==>Resolved how the android system shutdown.Instead of merciless killing of handles and threads still running,it killed them appropriately.This is why
when shutting down your system takes a while.You can use adb to see these events.
==>Usb mounting to pc was also made somewhat generic and flexible across many devices.
==>It did change some methods on how the camera is being accessed mostly in eclair,donout and earlier versions of android phones.This issue made
cameras not function.
==>wifi methods were also changed and developers and modders had to re-write their code to allow compatibility.
==>This was also the year of many froyo phones and overclocking was a common thing.
extra notes
===========
During eclair era,many developers were in such a hurry to produce new android phones every few months that they never even thought of long-term support
to newer versions of android that would come much later.This is where i have to praise Iphones for standardisation of its OS across all of its devices.
==>If you try to copy paste code from 2.6.32.9 and paste it into 2.6.29 and expect it to work then expect tons of errors when compiling.The (g_android)
module was properly coded into 2.6.32.9 so if you try enabling it an older kernel,expect errors.
==>If you are a modder and looking to buy a new phone,please see if it has a fan base of coders or support.Avoid buying phones where you will not get
any support from the manufacturers or other devs e.g Huawei Technologies.This company sucks alot.After they produce a phone they forget about you the customer
so you will have to handle the upgrades all by yourself.
Do not use this command (make -i)when compiling kernels.It will skip errors and you may smile after it's finished but the end is just a tragedy.your kernel is bound
not to function properly or even function at all.
Happy modding.

Porting Chromium to Windows RT

So, I've been at this for about 48 hours now (not continuously, but closer than you might think) and I figured I should take a break from modifying project files and puzzling over alignment issues to discuss the project, share some of the problems I've been having and ask if anybody can help, and so on.
The general idea is "Chromium build for Windows (on x86/x64) and build on ARM (for Linux), so there must be a way to build it for Windows on ARM". For the most part, that even looks like it's true. Probably at least 80% of 654 Visual Studio projects (no, that's not a joke) either build just fine with only minor amounts of work, or are things that we don't actually need (I'll try building the test suites... once everything else builds!!)
Areas that have given me problems (caution: some chance of brief rants ahead):
v8. Less than you might think, though. Setting the flags for Arm seems to have been enough.
Sandbox. There's a fair bit of thunking coded in assembly going on in the sandbox for x86. Not sure what's up with it (I don't know exactly how the Chromium sandbox works) but it'll have to come out or be replaced. The Linux (including ARM) sandbox seems to be SELinux-based, which doesn't help at all.
Native Client (NaCl). I think all the assembly is in test code, though, so I may just boldly #ifdef if all away.
libjpg-turbo (libjpg). Piles of carefully optimized assembly... for x86 and x64. There is a set of ARM assembly (for Linux) that Visual Studio won't compile, but something else might... or I may tweak until it works. Of course, I could also just accept the speed hit and use the version of libjpg implemented in nice, portable C.
Anything where the developers tried to use some SSE to speed things up. I may be able to replace it with NEON code, or I may just remove it and hope **** doesn't break. We'll see.
Inline assembly in general. Even when it's ARM assembly, Visual Studio / CL.exe don't want anything to do with it (__asm is apparently now an invalid keyword). I suspect I'll have to just pull the assembly out into stand-alone functions in their own files, then compile them to object files and link them back in later. If I can figure out the best way to do this (for example, I'll want to inline the asm functions) then it shouldn't impact performance. Seriously though, I kind of hate inline assembly. I can read assembly just fine, but I'm usually staring at it in a debugger or disassembly tool, not in the middle of source code I'm trying to build...
Everywhere that the current state of the CPU is cared about (exception and crash handlers, in particular) because the CONTEXT structure is, of course, CPU-specific. They're pretty easy to get past, though.
Low-level functions, like MemoryBarrier. Fortunately, it's implemented in ntdll.h... but as a macro, which breaks at least half the places it's referenced. Solution: where it breaks things, undefine the macro and just have it be an inline function that does what the macro did.
Running out of memory. Not even joking... well, OK, a little bit. I've got 32GB; I won't actually run out. Both Visual Studio and cl.exe do at times, though!. Task Manager says VS is currently using 1,928 MB, and before I restarted it, it broke 2.5GB private working set. Pretty good for a program that for some reason is still 32-bit...
Goddamn compiler flags. Seriously, every single project (I mentioned there are over 600, right?) has its LIBPATHs hardcoded to point at x86. Several projects have /D:_X86_ or similar (that's supposed to be set by the build tools, not the user, you idiots...) which plays merry hell with the #ifdef guards. Everything has /SAFESEH specified, not in the actual property table where the IDE could have removed it (unneeded and invlaid on ARM) but in the "extra stuff we'll pass on the build command line" field, which means every single .EXE/.DLL project must be modified or the linker will fail.
My current biggest goal is the JPG library; nobody wants to use a browser without it. After that, I'll tackle the sandbox, leaving NaCl for last... well, last before whatever else crops up.
Anyhow, thoughts/comments/advice are welcome... in the mean time, I'm going to go eat something (for the first time in ~22 hours) and then get some sleep.
Kudos for having the patience to look though this monster.
It's my understanding that NaCl is still a pretty niche thing at the moment. Is it possible to easily either disable it or completely hack it out, or do other more critical parts of Chromium now depend on it?
I don't think anything truly depends on it. I'll look in the VS dependency hierarchy and see how many things list it, and how awful it would be to remove them.. after I get the other stuff working. I may pass on the sandbox as well, if possible; it makes the security guy in me cringe something awful, but as they say, shipping is a feature..
great
Please make that happen !
Working on it! I've gotten over half of the projects to build and link, but some other stuff is adamantly refusing to work. I'm beginning to suspect I'll need to work from the other direction - rather than starting at the bottom and building all the dependencies, then combining them into browser components, and then eventually combining all the components into a complete piece of software, I may have to work from the top, removing components until the whole thing builds (at which point it will likely be useless, or all-but) and then seeing what I can add back in. I thought it would be faster to just assume everything can be made to work and only exclude something if it proved intractable, but at this point I've got a ton of very small components and almost no ability to combine them.
It would also help if VS was better at managing such truly immense tasks. For example, I have no simple graph of what all is and is not building, so I'm being forced to manually map that onto the VS dependency tree and see what is blocking a given component from building successfully, and how much is dependent upon it, one erroring project at a time (and there are a *lot* of erroring projects - my last attempt to build any substantial part of the system saw 50 of 400 projects fail).
GoodDayToDie said:
Working on it! I've gotten over half of the projects to build and link, but some other stuff is adamantly refusing to work. I'm beginning to suspect I'll need to work from the other direction - rather than starting at the bottom and building all the dependencies, then combining them into browser components, and then eventually combining all the components into a complete piece of software, I may have to work from the top, removing components until the whole thing builds (at which point it will likely be useless, or all-but) and then seeing what I can add back in. I thought it would be faster to just assume everything can be made to work and only exclude something if it proved intractable, but at this point I've got a ton of very small components and almost no ability to combine them.
It would also help if VS was better at managing such truly immense tasks. For example, I have no simple graph of what all is and is not building, so I'm being forced to manually map that onto the VS dependency tree and see what is blocking a given component from building successfully, and how much is dependent upon it, one erroring project at a time (and there are a *lot* of erroring projects - my last attempt to build any substantial part of the system saw 50 of 400 projects fail).
Click to expand...
Click to collapse
I thinkt tht is a mutch better taktic and mutch less frustrading.
I would love to see just a minimal version of it. After that all the small componens can follow.
50 of 400 is pretty good i think. Better then i expected
Bear in mind that the entire thing is 650 projects. If 50 fail at that level, many of the higher-level ones (dependent upon the lower-level) will fail too. I'll see what I can do. I may or may not be able to get v8 actually working (without it, the JS speed will be very bad, think IE8 at best) and I may have to fall back to the legacy libjpeg (which will cut JPEG render speeds by at least a factor of 2). Skia (2D drawing library used by Chrome) has a bunch of assembly optimizations that I need to get it to use the Arm version of instead. There's a couple of total hacks with the library files I've had to pull, which may or may not result in a working final build. We'll see.
GoodDayToDie said:
Bear in mind that the entire thing is 650 projects. If 50 fail at that level, many of the higher-level ones (dependent upon the lower-level) will fail too. I'll see what I can do. I may or may not be able to get v8 actually working (without it, the JS speed will be very bad, think IE8 at best) and I may have to fall back to the legacy libjpeg (which will cut JPEG render speeds by at least a factor of 2). Skia (2D drawing library used by Chrome) has a bunch of assembly optimizations that I need to get it to use the Arm version of instead. There's a couple of total hacks with the library files I've had to pull, which may or may not result in a working final build. We'll see.
Click to expand...
Click to collapse
the v8 engine ( used in nodejs ) has been ported to ARM :
I still can't link : htt p://ww w.it-wars.com/article305/compiler-node-js-pour-arm-v5
perhaps it will help you
Edit : oups, I just see that another great user of this forum made the port of nodejs to RT
Yep... but they did it without v8. That's not an encouraging result, but I feel like I'm so close...
Is there a GitHub repo so we can help or track the progress of the project ?
Sorry, not at present. There probably should be. The sheer size of the codebase is incredible (about 2.4GB) and having some way to share it practically would be good.
Also, I suspect this would go a lot faster if I don't have to repeat the work of others. I know that there's a working Webkit DLL out there, for example (though with several features, including the V8 JS engine, missing) and if I could get my hands on that it would drastically reduce the number of additional components I need to build. Currently I'm working on the sandbux, but expect that I will need to rip the whole thing out and basically have the browser run as though it was always passed the --no-sandbox parameter, at least for the first build. Too damn much assembly.
http://www.engadget.com/2013/01/22/google-chrome-native-client-arm-support/
This wouldn't have any impact on this project, would it?
Sent from my SCH-I535 using xda-developers app, complete with annoying signatures.
It probably means that NaCl on Windows RT will be possible in the future. At present, I'm cutting it out of the build - too much x86-specific stuff there to port it over myself, and it owuldn't be able to run x86-compiled NaCl code anyhow.
You might have bit off more than you could chew. It'd better if you put your current progress under version control on some public site so that other people may be able to help you.
It's a big and complex project. You are taking a lot of time, and understandably so. But just open up to other people and you could get this done faster.
Yeah, this is probably true. My life also got unexpectedly *busy* in the last week; a couple weeks ago I had many times as much free time as I do now, and so porting has slowed down.
My upload speed would take ages (literally probably at least a day of solid activity; it's embarassingly slow) to push the full source anywhere, but I may make the effort anyhow. I'll have to post it somewhere for GPL compliance in any case...
You may upload only the diff files, they'll probably be smaller then the whole distribution.
Not to pour cold water on you however, IE10 is already faster than the latest Chrome build in Windows Phone, Windows 8.
I don't see the point of this.
I have personally jumped from IE8 > FF > Chrome and finally back to IE10 over the years depends on its usability, smoothness, speed, etc
Speed isn't the only reason to use a browser. I actually prefer IE myself, but there are some things that other browsers do better than it (in the case of Chrome, parts of HTML5, the syncing across Google services, etc.) Also, Chrome gets updated far more often than IE; IE9 was equal with Chrome on speed at its release, and was far behind by the time IE10 came out.
The reason for this project, though, is a mixture of interest in what it takes, and a desire to benefit the community. Microsoft has deeped that only software which they have blessed may run on the Windows RT desktop. I disagree, and have chosen (among several other things) to port a web browser because I feel that it's important for users to have choice.
LastBattle said:
Not to pour cold water on you however, IE10 is already faster than the latest Chrome build in Windows Phone, Windows 8.
I don't see the point of this.
Click to expand...
Click to collapse
Some websites do not get along with the trident rendering engine. Some webdevs are so "Oh f*** IE I don't care" and block access to features just because it is IE. I have experienced this first hand on IE10 on my surface where it tells me to come back when I have a decent browser, only to not have the choice to do that.
This really isn't the webdevs fault either, for years IE was the scum of the internet, only recently has IE caught up to the rest of the browsers (and in my opinion exceeded some) but the years of IE being bad have left a lot of disjointed webdevs who won't even consider giving the latest IE a chance.

A ton of difficult questions about Android

They are all about Android 4.3 and upper.
A pair of questions about unrooting/locking/unlocking/booting.
1) What are the benefits of rooting other than being able to a) set custom cpufrequency policies, b) being able to update your phone (to custom new ROMs like cyanogenmod) when your OEM has decided to stop supporting it, c) full filesystem access, d) tuning sysctl parameters?
I don't like the fact the rooting totally breaks Android's security model.
2) Do I understand correctly that a locked phone is the phone in which you cannot overwrite/replace/customize vmlinuz? or there are even stricter limitations?
3) Do I understand correctly that in order to change e.g. /etc files you don't really need a custom ROM, you can boot into TWRP and replace/edit/remove the needed files?
4) Why does unlock wipe all your data?
5) If the phone is locked, how bootloader/firmware understands that our bootloader is untempered? Does the bootloader have a digital signature? I have this question because let's imagine that I 1) unlock 2) change vmlinuz (allow superuser) 3) lock?
6) How does "oem lock" verifies that system data is genuine? Or it simply wipes everything clean? Does Android has some (RO) partition which always contains a genuine virgin ROM you cannot meddle with?
7) If I do "unlock" on my Nexus device, without changing anything or installing any 3d party bootloader (like TWRP), will I be able to update to new official ROMs via OTA updates?
8) Why every "lock" manual says that I need to upload a genuine official ROM - what if I've changed it and made it "rooted"?
Storage.
Why does Android has so many partitions?
What method is used to break the internal storage into partitions? Is it some kind of partition table (MS-DOS, GPT) or it's hardware based?
1. The purpose of rooting is to give you an access level equal to the product's development team. Rooting is basically an unofficial way of doing exactly what the developers are doing on a daily basis. You can either consider that people are going to root and that the community adds value and bug fixes to your product by independent development (Android); or you can actively take measures to lock down root access and maintain a a gateway to development in the belief that this doctrine maintains a unified experience, protects security of intellectual material, and provides better overall security (Apple).
There's pros and cons to each side. With the Android thought, you are offloading a lot of your development burden onto the community and getting R&D, patches, and extending product life in return - for free. You take the risk of lowered security, but usually make it back because the community is a larger workforce with greater man hours and a vested interest in the product. They provide you with answers to problems you don't even know about as long as you listen.
With the Apple thought, you maintain a strong control on making the product do exactly what you want. This makes the product work exactly as expected, which can be easier for the user. However, your design has to be VERY good for the community to accept it. You also suffer in that you lock the community out from enhancing your product, so you HAVE to be the one coming up with all the ideas. Also, if the community finds a breach in your security, it can be devastating. Look at how much energy and money Apple pours into preventing jailbreaks.
I wouldn't be too worried about the 'break in security model' as you say, unless the Android platform becomes fraught with virii. After all, consider that unix on your PC is essentially the same thing, and you request root access on it to install certain things.
2. I'll let someone else chime in with a better answer
3. with root access you don't need a custom ROM, you just need the ability to access root permission and a file browser that will get you to protected areas.
4. I'm not sure I'm thinking about the same stuff as you here. Rooting doesn't wipe anything from what I remember. Replacing the ROM does, but that's because the ROM 'installer' doesn't have anything to preserve user settings. I don't consider this weird since Windows didn't have a really decent migration package built into the installer until windows 8.
5. There's a counter that iterates. Research trianglemod for an example of this topic.
6. It's hard to say what the OEM has for tools without them releasing the tools to the public. They, of course, are going to have better tools than us. No, there is no read only partition that I'm aware of that contains a full ROM that you can dump back in place. I've gone so far as to fully wipe my Galaxy S3 to the point where it only had clockworkmod and a boot screen that never went away. If I went much further, I could probably brick the phone, requiring an external programming program. A full brick would remove interface to your PC, which I believe is a possibility.
7. A new OEM ROM update will do one of three things:
a. update the phone to the new ROM and most likely break all the apps
b. update the phone and wipe everything
c. partially update the phone to a state where it won't boot due to a corruption (I've been here, lol)
8. not sure what we are talking about here
9. Android is based on linux. Linux is designed with specific partitions to handle different tasks for storage, memory access, stuff like that. If you aren't happy with the design, you are free to do something else - you don't have to use Android on an Android phone, you can probably put FreeBSD or Slackware or something, or write your own kernel.

ROM and kernel flashing guide for beginners

XDA Kernel and ROM flashing beginners guide.
If you are reading this, you’ve found your way to the famous XDA Forums. The place where developers and users contribute to the spirit of open source Android development.
If you already have TWRP setup and running and just look for the next ROM to flash, this guide isn’t for you. If you wonder what this TWRP thingy is or what exactly the three letters, R O M mean, that float around these forums all the time, then read on.
This paragraph is about the basic geek terminology, used by developers. ROM stands for read only memory, which basically is the system partition of your device, which can only be read, not written. In everyday usage scenarios, where you browse the web, download some apps, or chat und Telegram, you will never get in the situation, where you have to write on your /system partition. If you plan to get your hands on one of those amazing custom ROMs, that add battery life, performance and beauty of use to your OS experience, the ROM is the smartest way of accomplishing this goal.
What a custom recovery is used for:
This is where the recovery comes into play. The recovery partition is pre installed by the manufacturer of your device. It is used for OEM software updates, wiping your cache and dalvic or performing a factory reset. Enough functionality for the average Joe, but this is XDA developers. Things get interesting, once you unlock the full potential of your device. To do so, you’ll need a custom recovery. Team Win Recovery Project (TWRP) is most common these days. It is fully optimized for touch screen input and offers various features, that even come in handy, if you don’t want to modify your phones software. Nandroids for example.
This is where things start to become really interesting. There are various recognized XDA Developers like Francisco Franco or Flar2 who focus their efforts on bringing custom Kernels to their supported devices. What is a kernel? Do I even need it and why should I bother changing it?
To say this clearly, the kernel is the heart of your software. You might use your phone with a broken Bluetooth driver, without caring to much, without a kernel installed your device won’t be able to boot. So what does the kernel do, if it is so essential for a proper working phone? We can describe it as the bridge between hardware and software. That latest processor and the wickedly fast RAM won’t do anything without something telling it how to unleash it ‘s potential.
That’s where the kernel comes into play. You can imagine the kernel as a moderator between the hardware and the software of your system. An example: You touch the screen to launch your favorite game on your Droid. This game is really challenging your hardware, so the processor has to run on a high clock frequency, otherwise the game would take ages to load. The kernel detects your input and ramps up the frequency by it’s in input boost driver. This is often a pre configured value, that is used as soon as some (touch) input is detected, that’s why it is often called touchboost. OEMs choose a middle frequency offering a good balance between power consumption and performance.
For our gaming scenario this isn’t enough, we need the full potential of the CPU and the GPU should get busy rendering all those pixels as soon as possible. This task is accomplished by the kernel. It is balancing the system frequency based on the load of the system, but that’s just an easy to explain example of what a kernel does. The kernel is doing a lot more things on your device. How should the phone know, how much RAM it can give to that messaging application you open every each five minutes? Simple answer, it doesn’t the hardware of your phone is just silicon ready to do your work. You can compare it to a young guy doing an internship at a company. The guy has some potential, but he gets lost in a moment, if there is nobody showing him what to do. This is where the kernel comes into play again. It calculates which task requires which amount of memory and decides, which task should be kicked out of your recent access and memory and, which is there to stay. The messaging application I just mentioned a few lines back for example should remain in memory. You use it all the time, so it doesn’t make any sense to generate some unnecessary CPU load, which eats up your battery in the long run.
As you can see the kernel is more than a boring piece of code. It basically drives your phone, so you really want a stable kernel.
Which different kernel development approaches exist?
There are various recognized developers who focus on UX features. This means they take the official stock kernel (be it a OEM or let’s say the one made by Lineage) and they add their features on top. For example a fading notification LED or a backlight dimmer, that allows to lower the minimum screen brightness further than the stock kernel allows.
These features focus on adding userspace features on top, which don’t touch the core functionality of the kernel, like CPU scaling or RAM management. These kernels are chosen by users who want additional kernel functionality without leaving the stability of the stock ROM in favor of a custom ROM.
On the other hand their are developers and users who want bleeding edge functionality, which brings new stuff to the table, but is to new and not deemed stable enough to be used in the mainline OEM kernel. A good example for such a feature is f2fs support. F2fs is a file system developed by Samsung. It’s main focus is to suite flash storage (like the SD cards in our smartphones), in terms of write speeds it is significantly faster, than the established and rock stable standard ext4. But it comes with certain downsides for example a ROM won’t boot with a data partition formatted to f2fs if the kernel doesn’t have the required f2fs commits. A year back their also were some major issues with root, which made a lot of users switch back to the stable ext4. However if you want to squeeze the last bit of performance out of your phone, the kernel is the way to go.
Kernel tweaking: A custom kernel allows you to modify certain parameters, which aren’t accessible for the using an official kernel. Some developers ship with their own app, which is optimized to tweak their own kernel. This ensures maximum compatibility, one of the reasons why those kernels are so successful across all XDA sub forums. You don’t have to use a kernel managing app to modify your kernel configuration, you could also use an init.d script, but this requires further knowledge. No matter how advanced your knowledge is, it doesn’t get any easier than using an application to set up the configuration of your choice.
Kernel tweaking fills another guide and their is already a really good one, that you should check it out. Further links will be put at the end of this guide.
To root or not to root?
Another controversial topic is rooting. While a lot of OEMs try to prevent you from doing so by locking the bootloader, a lot of enthusiast swear on the power root access unleashes. Often android root is compared to administrator privileges under Windows. This is an illustrative explanation, but isn’t accurate. Root goes far beyond what Windows Admin rights allow. The main difference that jumps right into your eye: Microsoft allows Administrator access out of the box. Root is blocked by all OEMs, you have to enable it manually (by flashing a root solution of your choice. More about popular root solutions and their main advantages and disadvantages down below.
So what does root do? It gives you full control over your device. One of the main advantages is to gain write access to your system partition, which normally is read only. The power of root is defined by the knowledge of the user, the more you know, the more you can make out of it. For beginnners root apps like Titanium Backup, Adaway, Better Battery Stats or SD Maid are interesting. They utilize the potential of root for you without having to dig to deep into the topic. However root isn’t enabled by default for a reason. Most big custom ROMs, don’t ship with root out of the box anymore these days. Back in the day root basically just gave you more control, without any major disadvantages. This however changed with the introduction of Safety net by Google.
The company developing the OS we all love, is trying to make Android safer and they are pushing this approach forward these days. If you just flash SuperSu, Safetynet gets triggered which results in being unable to use apps which use Safetynet to verify the integrity of your system. Mainly banking apps, but also Snapchat for example or that stupid game, that generated all the hype in summer 2016. You got curious about root or came to this forum, to figure out how to root your phone? Then the next paragraph deserves your attention.
Most XDA users used SuperSU developed by XDA legend Chainfire during the last years. A while ago Magisk by XDA Recognized Developer and contributor Topjonwu. It became very popular, when Safetynet started to break certain Apps. It allows to hide root from safetynet, but it includes much more. One of the key features is mounting modules systemlessly to your boot partition, that way your /system stays untouched and removing a certain module, doesn’t require more than disabling it and rebooting. What about the disadvantages of magisk? It isn’t as compatible as SuperSU, since that root solution was the standard for years. All the developer arranged their work around SuperSU, but most famous root apps, have already adopted to Magisk, so you won’t run into issues unless you are using really outdated apps, which is never a good idea.
Which one to choose is a decision you can make. Both work flawless and it really comes down to personal preference.
Since nobody is willing to read through 50 pages, I’ll just thank you for your attention. This Guide is on going WIP, so if there is anything you’d like to see being added, feel free to let me know, but make sure to tag me, otherwise I might miss your message in the storm of ongoing notifications. Have a great day and keep flashing.

Categories

Resources