[Explained] ART Runtime in Android 4.4(kitkat) - Galaxy S Advance I9070 General

What is ART?
ART stands for Android runtime which is a new runtime like Dalvik which is introduced experimentally in the 4.4 release. This is a preview of work in progress in KitKat that can be turned on in Settings > developer option.n 4.4 both runtimes are now available, Dalvik runtime (libdvm.so) and the ART (libart.so).The user can choose it from developer options.
Difference between Dalvik and ART
Dalvik
Dalvik runtime uses JIT(Just-In-Time) compilation to interpret Bytecode
Now lets understand the technical info and terms in the above sentence.
Compiler
A compiler is a program or set of programs that transforms source code written in a programming language (the source language) into another computer language
Bytecode
Bytecode also known as p-code (portable code), is a form of instruction set designed for efficient execution by a software interpreter
Interpreter
Interpreter is a program which translates the source code into computer/machine language[/quote]
JIT compliation
JIT (Just-In-Time) compliation interprets the bytecode into machine language at it's runtime (at the time when the apps are executed).
Now summing up all these Dalvik runtime does everything when the apps are executed. Now this is where we must discuss odexed and deodexed ROM. usually all stock ROMs released by OEMs are only odexed only due to this reason. odex means a part of the app is already compiled and it is written into dalvik VM(VM=Virtual Machine). and it runs at boot so while execution of apps JIT has to compile only the remaining part of the code when the apps is executed, this is why odexed ROM is faster than deodexed ROM.
But the disadvantage of odexed ROM is it cannot be edited/themed easily as a part of code is seperated in a separate file, and deodexing means the odex part of the file is put back into the apk/jar itself which makes editing/theming easy since the full code is packed inside a single file but it decreases speed because JIT has to compile full code when the app is executed
ART
ART uses AOT compilation to interpret bytecode.
I hope you can refer to dalvik paragraph to know about these technical terms.
what is AOT compilation
AOT (Ahead-Of-Time) is a method of compilation which compiles the code into machine language when the app is installed itself, means no compilation is done at the time of execution of app. This makes the apps launch speed amazingly fast.[/quote]
Advantages of ART over Dalvik
1. The apps launch speed is amazingly fast in case of ART since nothing is compiled at execution.
2. Boot speed is faster than dalvik since nothing is execued from dalvik partition as in case of odexed ROM in dalvik
3. Increases battery backup by reducing CPU work due to absence of compilation work on apps execution.
4. And finally it is a great reward to developers because most of developers are worried that odexed ROMs are faster than deodexed ROMs but they will deodex their ROMs since they heavily theme it. In case of ART whether the ROM is odexed or deodexed it doesn't matter, it compiles the full code into machine language on installation of apps. so even deodexed ROMs are as fast as odexed in ART
Some disadvantages of ART
1. Since ART precompiles apps on installation, it takes 10-20% more space upon installation than dalvik. But this can be simply solved by using apps like apps2sd/link2sd/gl2sd when your apps storage partition is full
2. One more is since it is only experimental feature now some apps are incompatible in ART which will be made compatible soon on their updates.
Here is the list of apps which are compatible and incompatible in ART.
http://www.androidruntime.com/list
Finally ART is one of the best feature that google brought up in android 4.4 (kitkat)

Nice One.. It is really helpfull.

PradeepMurugan said:
What is ART?
Difference between Dalvik and ART
Now summing up all these Dalvik runtime does everything when the apps are executed. Now this is where we must discuss odexed and deodexed ROM. usually all stock ROMs released by OEMs are only odexed only due to this reason. odex means a part of the app is already compiled and it is written into dalvik VM(VM=Virtual Machine). and it runs at boot so while execution of apps JIT has to compile only the remaining part of the code when the apps is executed, this is why odexed ROM is faster than deodexed ROM.
But the disadvantage of odexed ROM is it cannot be edited/themed easily as a part of code is seperated in a separate file, and deodexing means the odex part of the file is put back into the apk/jar itself which makes editing/theming easy since the full code is packed inside a single file but it decreases speed because JIT has to compile full code when the app is executed
Here is the list of apps which are compatible and incompatible in ART.
http://www.androidruntime.com/list
Finally ART is one of the best feature that google brought up in android 4.4 (kitkat)
Click to expand...
Click to collapse
Thanks Bro! For Info !

Very well written :good:

Thanks for the info, really helpful! i have a question: When ART will be released in a "final" version will it be a big step ahead dalvik or just a little better than it? I mean, is this the right way to make android finally fast and smooth as ios or wp?

Great stuff, but do you mind explaining why some of the bigger apps, like Whatsapp didn't work on ART at first? What were they doing to cause such incompatibilities?

kinganu123 said:
Great stuff, but do you mind explaining why some of the bigger apps, like Whatsapp didn't work on ART at first? What were they doing to cause such incompatibilities?
Click to expand...
Click to collapse
I don't know what about with Whatsapp, but for my app example, for the first time, some features do not work with ART, because of enforcement in JNI environment, which dalvik only gives warning, while art gives crash. We traced down the error stack and fix for both art and dalvik.
FYI: a recent commit from AOSP project had shown that ART now became default runtime in next Android version.

Good job on creating a great informative thread.
I want to point out some things to avoid confusion for new people in android:
*Odexed roms and Deodexed roms have exactly the same opening speed, booting time and performance, .
The only thing that is changed is the speed of the 1st boot time. Nothing else.
A deodexed rom having lower performance than an odexed is just placebo. The difference is just the odexes location of system apps.
To elaborate more on this matter, a fully odexed rom, the 1st time it will boot it will be very fast (like a normal reboot).
And normally the dalvik-cache folder will be empty because all odex files are near their source.
On a deodexed rom, the 1st time you power that device it will take a lot of time based on the cpu speed.
After creating the bootclass apps' odexes, you will see the screen that says how many remaining apps android is optimizing.
So after this is done, the performance, opening speed, boot time and everything is exactly the same as the odexed rom.
*The reason that OEMs put odexed roms is for 2 reasons, save storage space and zero to small extra time on 1st boot (or factory reset).
*And lastly, the only reason ART is faster on booting, is that it has faster app start up code and faster overall performance (because no interpreting to machine code is needed for every class/function/calculation etc, on app start up and while it's running).
Thanks again for making this guide

A simple NOOB QUestion out of the heard
did this thing will be always be available for 4.4 or will it be ever be able to port for the lower end devices like oHTC Wildfire. Because those phones only got upto 4.2 they are laggy as hell and it even don't got any GPU. so ever ART will work with 2.3.7 roms ?

sachoosaini said:
did this thing will be always be available for 4.4 or will it be ever be able to port for the lower end devices like oHTC Wildfire. Because those phones only got upto 4.2 they are laggy as hell and it even don't got any GPU. so ever ART will work with 2.3.7 roms ?
Click to expand...
Click to collapse
ART is a part of KitKat, Android 4.4. And it can't be downported. But not sure 100% in that.

Ohk... well that is my question
shut_down said:
ART is a part of KitKat, Android 4.4. And it can't be downported. But not sure 100% in that.
Click to expand...
Click to collapse
i was asking in case it is possible from developer point of view

sachoosaini said:
i was asking in case it is possible from developer point of view
Click to expand...
Click to collapse
it is not possible because it is a feature in 4.4 because, it needs support in it's kernel. i hope you can understand with following example
we cannot get features of Jelly bean in gingerbread only the gb roms can be themed like jb but you can't achieve key features, same like that

OHk
PradeepMurugan said:
it is not possible because it is a feature in 4.4 because, it needs support in it's kernel. i hope you can understand with following example
we cannot get features of Jelly bean in gingerbread only the gb roms can be themed like jb but you can't achieve key features, same like that
Click to expand...
Click to collapse
yep i can understand. the available API libraries and all that stuff is of higher framework. the available drivers are not available for lower android versions. but if the code can be implemented in the lower division then it will be worth. but thanx for making me clear.:good:

Just using ART for some days
I know ART is very different from Dalvik
Now the biggest problem for it is compatibility,
many apps don't support.

How can it be that none of the stock apps such as Google play, gallery, phone, etc work? Also, how come the time of compilation makes a difference in the compatibility of the apps? In the end the apps are all in machine code when they're run anyways?
Sent from my GT-I9300 using Tapatalk

Proud2bNoob said:
How can it be that none of the stock apps such as Google play, gallery, phone, etc work? Also, how come the time of compilation makes a difference in the compatibility of the apps? In the end the apps are all in machine code when they're run anyways?
Sent from my GT-I9300 using Tapatalk
Click to expand...
Click to collapse
Because some apps use specific Dalvik things, and they don't work when they are compiled before the app is run, when the app needs something that it's on memory (for example) when compiled in Dalvik, but it doesn't have it in ART as when it was compiled there was nothing, and...
Problems.
Anyway, that's why Dalvik is a not only Dalvik, but Dalvik VM
Virtual Machines, they translate specific code instructions to a optimized code for your CPU architecture. This has been always intended.
When Android 1.0 came out, Google used a very obvious but brilliant way to make the OS to gain market share.
Since Dalvik is a Virtual Machine (hence, Dalvik VM), you could throw any CPU on the device, and Dalvik WILL translate whatever you put in there, to a code that the CPU can understand.
And therefore, JIT (Just-in-time) compilation. If the code wasn't translated, the code would be utterly slow, because it will need to be reinterpreted for every instruction, that are not ordered, that are not correct, and that the CPU could possibly understand wrong.
So, by using JIT, the code will be translated instantly by Dalvik to a single instruction (instead of multiple ones) that will be executed once. It is FAST, but it's not optimal, because Dalvik also consumes CPU.
That ensured cross-platform compatibility for Android. Now, time has passed since Android 1.0 has come, and now that ARM has been consolidated as the de facto CPU platform for mobile phones. Android Runtime came...
So, instead of compiling CPU instructions on-the-fly that also consume CPU resources, when your APP is installed, it's automatically translated as a whole to ART (that's why it takes that much time), and when RUN, it will run with FULL CPU power, because there is no Dalvik VM running now.

kbcurtis said:
Just using ART for some days
I know ART is very different from Dalvik
Now the biggest problem for it is compatibility,
many apps don't support.
Click to expand...
Click to collapse
It works well here, and luckily I haven't found any compatibility problem yet. Let's hope that in the next version (4.5?) it will become stable!

danieleds said:
It works well here, and luckily I haven't found any compatibility problem yet. Let's hope that in the next version (4.5?) it will become stable!
Click to expand...
Click to collapse
Next version is rumoured to be 5.0 and not yet confirmed and it is also said that ART will be default runtime in next version

The space disadvantage is minor comparing to the advantages it offers, speed, battery etc. Another plus for low end devices that need that extra speed. I'm sure when most of the apps will be compatible with it, it will replace dalvik for sure in future versions. I would like to test it and i'm waiting for a more stable version of CM 11, currently on CM 10.2.
Very useful thread, well explained!

Thanks for data!

Related

Kernel Optimization

The lovely thing about having a Linux Kernel is that we can do a lot to optimize it.
I figured it would be a great idea to set up a thread where we can bring all these optimizations into one place.
Mind you, I'm no expert by any means...
For my (possibly useless) contribution:
When we compile the kernel to the G1, do we compile it with the general Arm eabi? If so, is that made for ALL ARM cpu's? We have an ARM6 in our G1's. If we set it up to optimize to ARM6, can we set it up to use the CPSID/CPSIE instruction instead of the SWP instruction? Are the drivers open source? Can we recompile them to do the same also? To learn more about why, read this:
http://forum.xda-developers.com/showthread.php?t=516223
That's where I got the idea from.
SWP is a deprecated opcode in armv6 that decreases performance due to the way it locks the bus.
Click to expand...
Click to collapse
Anyhow, whatever you guys post here, I will add to this post. Also, to the people to compile the kernels, can you answer my questions?
answers to some of your questions.
hi i usually don't post here since i am not a developer but in this case i think i can answer some of your questions (since i sometime make custom kernels for my laptop). kernel optimazation is used to removed excessive drivers and services from the kernel that you don't need that slows down your computer or in this case phone. i believe htc already does this when they configured android for the g1. most cell phone manufactures already do this to ensure that there products processor use energry efficiently and and run as smoothly as possible.
When we compile the kernel to the G1, do we compile it with the general Arm eabi? If so, is that made for ALL ARM cpu's? We have an ARM6 in our G1's
Click to expand...
Click to collapse
yes, arm eabi is made for all general arm cpu's i believe you can complie it for arm 6 specifically though. how do you know that htc hasn't already optimize the kernel for that specific processor? also if they didn't you wouldn't really see any noticible speed improvements by compliling the kernel for this specific processor.
Are the drivers open source?
Click to expand...
Click to collapse
no, futhermore they don't offer the drivers for the g1 except execpt for the usb driver so your computer can recognise the g1 as mass storage device.
If we set it up to optimize to ARM6, can we set it up to use the CPSID/CPSIE instruction instead of the SWP instruction?
Click to expand...
Click to collapse
i don't know sorry. thats all i know i'm really not a kernel, coding expert i hope this helps in your task.
bananajama said:
no, futhermore they don't offer the drivers for the g1 except execpt for the usb driver so your computer can recognise the g1 as mass storage device.
Click to expand...
Click to collapse
I think you meant to say "ADB interface" instead of "mass storage device."
t1n0m3n said:
I think you meant to say "ADB interface" instead of "mass storage device."
Click to expand...
Click to collapse
The system type is set to "Quaalcom MSM", so I would imagine that it's optimizing for arm6l.
cyanogen said:
The system type is set to "Quaalcom MSM", so I would imagine that it's optimizing for arm6l.
Click to expand...
Click to collapse
Sounds like it. Well, other than that, are there any other obtimizations anyone else can think of?
there are few things in linux that you can play with to see if you get any performance increase. It's mainly in memory management. run ls on /proc/sys/vm. you can play with the page cache but I doubt that you'll get much perf increase from it since, since most of the things we can play with are for write back cache. If we have access to the dalvikvm we may be able to do more optimization. The one thing that I've always wanted to be able to do is to pin Home in memory, and not allow garbage collector to kill it, so when we exit out of memory intensive apps, like browser, gallery, etc, we do not have to wait for Home to reload. If we have more control over garbage collection we may be able to do more, but I don't know much about the dalvikvm at all.
taking a quick look at the vm. The only nob that may have any effect on android may be vfs_cache_pressure. theoretically setting to 200 would push fs cache out quicker and give more memory to the vm. default is set to 100. I set it to 200 and 300 but didn't notice any difference.
knaries2000 said:
there are few things in linux that you can play with to see if you get any performance increase. It's mainly in memory management. run ls on /proc/sys/vm. you can play with the page cache but I doubt that you'll get much perf increase from it since, since most of the things we can play with are for write back cache. If we have access to the dalvikvm we may be able to do more optimization. The one thing that I've always wanted to be able to do is to pin Home in memory, and not allow garbage collector to kill it, so when we exit out of memory intensive apps, like browser, gallery, etc, we do not have to wait for Home to reload. If we have more control over garbage collection we may be able to do more, but I don't know much about the dalvikvm at all.
Click to expand...
Click to collapse
dxtop, which is a home replacement, does exactly that. It keeps itself in memory so going back to it is much faster than the default home application. And in low memory situations, it tries to free up as much resources as possible while still staying in memory.

android2sd

Hi All,
Here is my second contribution to the Android community, android2sd!
I tried to make the installation a bit more straight forward and the readme very verbose.
There is NO going into recovery and wiping of the Android to install this construct. (Of course you can if you want to have a clean slate to build from but it is by your choice only!)
Remove .zip from filename, then unrar (sorry to zip users, zip was too big) the package and copy the android2sd.sh install script to the Android say /data/local and make executable with something like chmod 0750 and copy the android2sd.img install image to the sdcard. (Detailed instructions are in the readme file.) Once the install is complete, you can delete both install files.
Execute the script {where ever you installed it}ie:
/data/local/android2sd.sh and follow the instructions.
Included are several of my scripts (updated from the ones in data2sd) and the rules still apply, adjust or remove as you see fit. The readme explains them all.
I have noticed an improvement in speed based on the install, but you can judge for yourself and tweak as you see fit!
The construct uses Overlay Profiles to overlay the Android system and thus any changes to the Android once loaded, are actually done to the overlay profile thus you have like a safe mode which is the untouched Android under the overlay.
Hope you find it useful!
Darkstrumn
Darkstrumn said:
Hi All,
Here is my second contribution to the Android community, android2sd!
I tried to make the installation a bit more straight forward and the readme very verbose.
There is NO going into recovery and wiping of the Android to install this construct. (Of course you can if you want to have a clean slate to build from but it is by your choice only!)
Remove .zip from filename, then unrar (sorry to zip users, zip was too big) the package and copy the android2sd.sh install script to the Android say /data/local and make executable with something like chmod 0750 and copy the android2sd.img install image to the sdcard. (Detailed instructions are in the readme file.) Once the install is complete, you can delete both install files.
Execute the script {where ever you installed it}ie:
/data/local/android2sd.sh and follow the instructions.
Included are several of my scripts (updated from the ones in data2sd) and the rules still apply, adjust or remove as you see fit. The readme explains them all.
I have noticed an improvement in speed based on the install, but you can judge for yourself and tweak as you see fit!
The construct uses Overlay Profiles to overlay the Android system and thus any changes to the Android once loaded, are actually done to the overlay profile thus you have like a safe mode which is the untouched Android under the overlay.
Hope you find it useful!
Darkstrumn
Click to expand...
Click to collapse
Damn man. Good work.
sounds interesting, what is this all about?
brilliant?!? I think.
So basically, this is a non-destructive method that enables us to run new roms on the G1 without flashing? Am I reading this right? If so... wow.
edit: or, erm... maybe not... i think i've been up too long. Gonna have to watch this thread to get a better grasp on this. interesting nonetheless.
Rename To RAR
Darkstrumn said:
Remove .zip from filename, then unrar (sorry to zip users, zip was too big) the package and copy the android2sd.sh install script to the Android say /data/local and make executable with something like chmod 0750 and copy the android2sd.img install image to the sdcard. (Detailed instructions are in the readme file.) Once the install is complete, you can delete both install files.
Click to expand...
Click to collapse
very interesting .. at first i failed to see this part as i'm sure many pay skip over the whole "rename to rar" thing - LOL - so this loads profiles from the SD to the phone
for anyone having trouble with the whole "rename" process try this:
http://files.lucidrem.us/jf/android2sd.rar
as i know windows with hidden file extensions does not allow a rename easily
So what exactly does this do? I see install instructions, but no description.
Overlay Profiles...
tr.slate said:
So what exactly does this do? I see install instructions, but no description.
Click to expand...
Click to collapse
Well,
I've worked up the natural progression to this XXX2SD business, and have made an Android2SD construct which can expand the Android similarly to the the previous constructs, but puts /system, /data and /cache on sd.
So let me explain the overlay thing:
An overlay profile is a snapshot of the Android file system, namely /system, /data, and /cache.
The initial profile is called 'android2sd' and is a snapshot of your android at the time of install, plus the file system structure as explained in the readme adding the mnt/ dir structure and additional scripts in bin/ (which you can remove or adjust as you need).
Typically I reckon folks would only have the one profile and under it your original Android. But you can create additional profiles and set them up however you like. The overlay is overlayed on top of the Android file system with any changes or edits to the system affecting the profile and not the Android under.
The effective change is that the /system /data/, cache are moved to the sdcard thus expanding them to however large your sdcp2 is; on a class 6 card also improving access time.
A second benefit is that the underlying Android is safe from alteration and can be booted into like a 'safe mode'. (It can also serve as the base for new profiles, or you can make new profiles from active overlays. These snapshots can serve as a form of backup, but that is a fringe benefit.
It cannot protect the Android from update.zip installs exactly, as those will modify the Android directly, but say you try a theme and it gafs your 'droid...you can reapply the firmware update to clean out the theme, then copy the desired profile back to the Android and restore the Android to the state of the profile. (I would recommend having a 'base' profile of the Android but not using that as an active profile which will thus serve as a backup) Note: To restore the Android as described above, you cannot restore using a profile with 250+ apps in /data as the Android doesn't have the space for it!
Originally I used unionfs for the overlays but it was too slow.
Hope that explains things here; the readme has far more detail.
I've gotta go, but if I see that I've been as clear as mud, I'll try to explain better when I have more time.
Hmm just out of curiosity: What are you using now? Bind mounts?
I got a little bit lost in setup, I am not sure if I had problems because I was using Cyanogens latest or something else but either way Im going back to JF to try this.
I installed it using the "-COMMIT" addition
But when I made it to installing/linking apps things wouldnt link
Maybe I will let a few other people try it first.
More info...
[email protected] said:
Hmm just out of curiosity: What are you using now? Bind mounts?
Click to expand...
Click to collapse
Yes. Originally it was to have a multi profile layered system using unionfs: union0 the ro base snapshot and union1 the rw profile containing the copy-on-write data. But as the tests went on, the unionfs was too slow to use for /data; Android is unforgiving of unresponsiveness and was ANR'ing the apps that didn't respond fast enough.
The faster bind mount means that union1 is now not used and union0 is rw.
The reason I wanted the union0,union1 path was that the union0 could serve as base and various profiles could be layered over any part of the file system granting "Lego" like flexibility in how the user could adjust their a2sdLoader.sh script (the android2sd loader which controls the overlay process).
You could have a pristine base and several "change" profiles that you layered to your liking and could change any sub layer to different effect.
While you still can under this paradigm, it is not as compact.
But the unionfs option is not completely done away with. It can still be used for the above layering but shouldn't be used for that apps and package system.
An example of the layering I'm on about:
The Android 0-layer which the base layer is a snapshot of.
The base layer is pristine (fully configured settings, but minimal apps loaded, maybe a particular base launcher layout and wallpaper).
A change profile containing my apps and package system
A change profile containing a version of etc with reconfigured bluetooth settings.
A change profile with a theme (manually installed, or snapshot to profile and restored to pristine)
Now I could take these 4 profiles and arrange several different setups:
'base' with all apps loaded, themed with custom bluetooth
'base' with all apps loaded, themed with normal bluetooth
'base' with all apps loaded with custom bluetooth
'base' with all apps loaded with normal bluetooth
'base' with all apps loaded
'base' themed with with custom bluetooth
'base' themed with normal bluetooth
'base' with custom bluetooth
'base' with normal bluetooth
...
Those would be set to serve as the ro union0 and the rw union1 which will hold the copy-on-write changes to the overlay (which preserves the sub layers)
You could have several more theme profiles and have a script that randomly chooses one at boot...
You could simply use the overlay to protect a favored configuration. Should anything untoward happen such as accidentally damaging the packages.xml file while experimenting with the system, you could simply delete the change profile, make a new blank change profile and the damaged files are undone.
The things one can do with the overlay concept are limited only by your imagination and need (and if they slow down app processing too much causing ANR's)
It vary well could if done correctly allow one to have multiple roms as profiles and switch them based on the selected profile, but I have yet to experiment on that...I reckon that is my next move! (Note that this path would have a high space cost as the roms are about 40MB zipped!)
brandenk said:
I got a little bit lost in setup, I am not sure if I had problems because I was using Cyanogens latest or something else but either way Im going back to JF to try this.
I installed it using the "-COMMIT" addition
But when I made it to installing/linking apps things wouldnt link
Maybe I will let a few other people try it first.
Click to expand...
Click to collapse
Taken from [Rom] CyanogenMod:http://forum.xda-developers.com/showthread.php?t=518851
"DO NOT RUN ANY OTHER APPS2SD APPLICATIONS ON THIS BUILD. YOU WILL BREAK YOUR SYSTEM. THEY ARE NOT NECESSARY BECAUSE THIS ROM WILL DO A2SD AUTOMATICALLY AND BETTER!"
The android2sd construct pretty much falls into the A2SD category and thus is likely the reason you had issues with the install.
My Android is based on JF 1.51... and thus your mileage will vary based on the rom you are using. I reckon with a rom derived from theh JF roms, the install may work as intended.
As I go into the next construct build process, I will see if I can't make it multi-rom compatible (to support multi-rom profiles) I'm sure it will take some time to do as I would have to use my actual Android to test with, but no worries!
Hope that helps a little. Sorry it's not better news though.
An excellent "misuse" of this concept would be to run ion (picking it for its speed and almost stock nature) with a hero overlay (picked due to known instability as we are still developing it) so that ion would serve as a "safe mode" for when you crash hero.
I have a spare phone if i crash this and a secondary sd for if that gets corrupted. Let me know if you need help testing.
twistedumbrella said:
An excellent "misuse" of this concept would be to run ion (picking it for its speed and almost stock nature) with a hero overlay (picked due to known instability as we are still developing it) so that ion would serve as a "safe mode" for when you crash hero.
Click to expand...
Click to collapse
Interesting thought, and if this could be done, I suppose it would be possible to have bluetooth working in ION while using a Hero overlay?
Request for feedback...
Hi All,
Those who've installed android2sd, how is it going?
Can you give some pros and cons of your experience so I may improve things going forward? (Hopefully no cons exists!)
I know that roms that already make use apps2sd will encounter issues as the apps2sd and android2sd function similarly and thus step on each other. I may be able to detect this condition and adjust for it going forward...we'll see.
Thanks in advance for your input!
Darkstrumn
LucidREM said:
very interesting .. at first i failed to see this part as i'm sure many pay skip over the whole "rename to rar" thing - LOL - so this loads profiles from the SD to the phone
for anyone having trouble with the whole "rename" process try this:
http://files.lucidrem.us/jf/android2sd.rar
as i know windows with hidden file extensions does not allow a rename easily
Click to expand...
Click to collapse
Thanks for putting the rar up, XDA wouldn't take the .rar and I didn't want to signup to a file-share site just yet.
And it being seemingly natural to make windows show file extensions, it didn't cross my mind to make a note about that.
Thanks again!
Darkstrumn said:
Thanks for putting the rar up, XDA wouldn't take the .rar and I didn't want to signup to a file-share site just yet.
And it being seemingly natural to make windows show file extensions, it didn't cross my mind to make a note about that.
Thanks again!
Click to expand...
Click to collapse
How come no one is trying this? It seems to me an excellent idea and would be really cool to boot mutipe roms if someone figures that out. I'm not testing this because I'm using appstosd and didn't want conflicts...but no one else with jf1.51 Rom is testing this idea?
Just curious
so wait a second. let me get this straight ... if I have a class 6 8gb card i might be able to install a hero build without rosie or widgets with the original launcher on the sd card that might actually come sorta, kinda, a little close to a speed that might be bearable? at least for like 5 minutes?
Can this be adapted to install bigger roms such as hero without the dangerspl .
XD
Ill try this with ion later tonight
wow this is beautiful work! now to test it!
Im trying so hard to understand this lol.. Correct me on my errors but from what i read this is my hypothesis on what i think this does..
This is like a apps2sd but with data and that type thing from the build we are using? And you Said this takes snapshots So we can create several profiles of the phone? Like for example have a profile with some apps loaded and another profile with all removed and be able to switch between them at will?

[ROM] 6/29/10 | Fresh Evo 0.5.3 | Outdated -- look for Fresh Evo 1.0.1

NOTE: This is old and has been replaced by Fresh Evo 1.0.1. I decided to start a new thread because this one was just too huge.
http://forum.xda-developers.com/showthread.php?t=726090
Click to expand...
Click to collapse
Geek For Me is proud to release:
Fresh Evo 0.5.3 for your Sprint Evo 4g
NOTE: Fresh Evo now assumes that you have NAND unlocked (part 2 of rooting). This means you are fully rooted and have write access to /system/ even when you are booted up. If you have not unlocked NAND protection then you should do so before flashing this rom!
This release was delayed for way too long due to various things out of my control (school, work, other projects, and a crashed hdd last weekend) so I'm happy to finally get it out!
I have been getting asked a lot when I'll integrate the new OTA update. I don't plan on including it until an RUU for it leaks out because it's a much better way to get files than to copy off patched ones. With that said Sprint pulled the update anyways due to it bricking people's phones. Haha. So just be patient and I'll update once it's out. Here's an analogy for you. You install Windows on a computer and then do all the windows updates. You then hunt down the random files that have changed and pull them off that computer, and just copy them over to another computer that hasn't had windows updates done, in an attempt to update it. While that may end up working, it is not nearly as clean as just getting an updated copy of windows that already has the updates on it and reinstalling it. THAT is why I don't plan on putting the OTA in until I have an RUU for it.
Do a data wipe! This version 100% requires one, even if you are coming from Fresh Evo 0.x. This should however be the last wipe required! It has also been reported that Clockwork Recovery is not wiping sd:ext properly. So if you do a data wipe (data, dalvik, cache, and sd:ext) and are still getting FC's or boot loops then you need to flash Amon's recovery and use it instead. In order to flash this rom you need to be rooted (unrevoked method doesn't count as root) to flash this. How To: Root Your Sprint Evo with NAND unlocked. Always make a nandroid backup, I can't be held responsible if something breaks, etc, etc.
Expect 1 loop at the very first boot! This is a side effect of the fixed vanilla lock. The very first time you boot up the phone it will load the lockscreen and then boot loop one time and then come up.
If it continues to loop then go here.
Go here to see all reported bugs: http://link.geekfor.me/freshevobugs -- if you are having a problem then check that page first, and read these release notes in their entirety!
Base: RUU_Supersonic_1.32.651.6
Changes from 0.3 to 0.5.3 (0.4 never made it to an official release):
Added Fresh Updater! Check the How To for information on setting it up and using it. This project has been on the back burner for months, and I'm happy to finally have brought it back and finished it up. Thanks to cyanogen and firefart as it's based on CMUpdater. It is built off of R657 which is the newest commit.
270 degree auto-rotation (you can turn the phone to the right or the left for landscape) -- Thanks to Optedoblivion for pointing me in the right direction
Fully fixed vanilla lock screen -- see screen shots. Use Fresh Updater to grab one of the vanilla patches to enable it. HTC's lock is enabled by default.
Landscape rosie (disabled by default!) -- see screen shots to see the issues with this. It is functional however it is definitely a hack. You will see some issues with using it. It doesn't look pretty, but it does work! Thanks to jschisurf for pointing me in the right direction on this one. NOTE: I have landscape rosie disabled by default! If you want to try it out then grab one of the patches in Fresh Updater to enable it. See the Fresh Updater How To for help with that.
Landscape settings.apk -- no problems here. Works fine.
12 new Rosie widgets. 7 that are available for our phone and 5 that aren't.
Profiles, ringtone, battery, call mom, coin flip, daily challenge, dice, notes, quick record, tasks, tip calculator, and today in history.
These are made by HTC and will only work in Rosie.
802.11N enabled (2.4 ghz only, not 5ghz) -- thanks to chuckhriczko!
Another brand new boot screen! -- thanks to wrx4memp
Updated DarkTremor apps2sd to 2.7 version 3 version 2. Version 3 was moving dalvik-cache to the sdcard even though it was set to not do so. Will upgrade to v3 when it's fixed. Thanks to tkirton!
Fixed wifi tether force close (still using the newest 2.0.5 pre 2)
Stock files have been resigned. This should prevent the need for any future wipes (not counting any major software changes by HTC/Sprint).
Updated launcher pro to 0.6.3
Updated google maps to 4.3.0
Updated estrongs file explorer to 1.4.2.2
Updated rom manager to 2.0.0.2 -- Note as mentioned above that clockwork recovery is currently having issues wiping sd:ext. So if you are having trouble with bootloops or FC's after flashing this rom then you need to use Amon's recovery instead. Additionally because of Fresh Updater, rom manager may not be needed anymore. VOTE BELOW on if you want me to continue including rom manager or not.
I have still chosen to NOT include adless browsing in my rom. I used adless browsing in all of my Hero Android 1.5 roms because it actually blocked ads from the browser. In Android 2.1 this functionality stopped working so I stopped including it. It was pointed out to me that while it doesn't block them in the browser, it does block them in apps (background data). The reason I am choosing to not include this is because as a developer myself, I feel that the authors deserve to get paid for what they do if you want to use their app. If you are choosing to use their free ad-driven application then I don't want to contribute to people blocking those ads and preventing the dev from getting paid.
Fresh Evo Features:
All APK's have been png optimized and zipalign'd
png optimize goes through every APK and losslessly compresses the png (picture) files without causing any type of visual change. This provides a smaller apk file size that loads faster. Each APK has then been zipalign'd. From Android's developer page: zipalign is an archive alignment tool that provides important optimization to Android application (.apk) files. The purpose is to ensure that all uncompressed data starts with a particular alignment relative to the start of the file. Specifically, it causes all uncompressed data within the .apk, such as images or raw files, to be aligned on 4-byte boundaries. This allows all portions to be accessed directly with mmap() even if they contain binary data with alignment restrictions. The benefit is a reduction in the amount of RAM consumed when running the application.
While this does free up space on /system/ (as seen below) it is not done to make free space considering we have more than enough. It is done purely for a performance gain. Every day use of the phone will go smoother and stock applications will respond faster. The reason this works is because it has reduced the application file size as much as 50%, so they load in to memory faster and run smoother.
Additionally all applications in /data/ (even ones you downloaded) will be zipalign'd on boot if they need to be.
Not every apk takes png optimization + zip align well. I've done it on enough roms that I think I know which ones cause issues now, but if you are getting FC's on any apps (I can't test them all) then let me know and I'll get it resolved. Thanks!
Apps2sd enabled! Using Darktremor by tkirton.
Apps2sd takes all applications from /data/app and /data/app-private and moves them to a partition on your sdcard. It was originally created for phones that didn't enough enough space on /data/ to store a large number of applications. This has mostly been resolved on the Evo because we have over 400mb of space allocated to /data/. However for some people this isn't enough. Additionally if your apps are stored on your sdcard then you can do a data wipe and they will still be there (albeit settings will be lost, but you won't need to reinstall them).
You do not have to use apps2sd if you don't want to use it. If you just don't format your sdcard with an ext partition (leave it all as fat32 like it is from the factory) then apps2sd will stay turned off.
How to setup apps2sd on Fresh Evo and warnings about apps2sd
Battery optimizations
The stock mms.apk was possibly causing a wake lock. I have swapped it for a different one while I do some testing.
Raised VM kernel dirty page writeback frequency to 15 seconds. This wakes the phone up less often for background VM activity. Every single application in Android is technically running in a VM (virtual machine) so that's why this helps (as recommended by lesswatts.org).
Compcache 0.6.2 / Ramzswap enabled -- Thanks to toastcfh for compiling the modules! Compcache creates a RAM based block device (named ramzswap) which acts as swap disk. Pages swapped to this disk are compressed and stored in memory itself. Compressing pages and keeping them in RAM virtually increases its capacity. This allows more applications to fit in given amount of memory. This will only kick in when the stock memory (which the Evo has plenty of) gets low.
I have tuned the default to be 100mb ramzswap size with 40% swappiness
You can check compcache's use by opening an adb shell and typing: rzscontrol /dev/block/ramzswap0 --stats
ES File Explorer
ROM Manager -- Fresh Evo does show up as an available download in the free version of ROM Manager, so you can use it to update Fresh Evo right through your phone if you want.
Launcher Pro
Wifi Tether (free 3g and 4g wireless tethering)
Qik
Facebook moved to /data/ so that it can be uninstalled
Custom boot screen thanks to wrx4memp!
Added PowerTOP 1.11. From LessWatts.org: Programs can make your [phone] use more power. PowerTOP is a Linux tool that helps you find those programs that are misbehaving while your [phone] is idle. -- Compiled by cyanogen.
To run PowerTOP just open an adb shell and type: "powertop -d". It will scan for 15 seconds and then print out a report.
The first section will show you what % of time your phone spent running at what Mhz. In the screen shot above my phone was asleep so it was at 245Mhz the whole time.
The next section shows wakeups-from-idle per second. 50-80 would be normal. If you are in that range then you don't have a problem.
The next list is the top causes for wakeups. Compare your list to mine (I only showed the top 3).
All the way at the bottom it will have optimizations that can be made to lower power use. These changes can not be made to the rom itself, they must be made to the kernel. While other roms claim they made changes to the kernel, if they are using the stock kernel (if they aren't over-clockable then they are using the stock kernel) then they didn't. While there is a kernel source available to us, I have chosen to continue using the stock kernel until our official source is released by HTC for stability reasons.
I have chosen to NOT include adless browsing in my rom. I used adless browsing in all of my Hero Android 1.5 roms because it actually blocked ads from the browser. In Android 2.1 this functionality stopped working so I stopped including it. It was pointed out to me that while it doesn't block them in the browser, it does block them in apps (background data). The reason I am choosing to not include this is because as a developer myself, I feel that the authors deserve to get paid for what they do if you want to use their app. If you are choosing to use their free ad-driven application then I don't want to contribute to people blocking those ads and preventing the dev from getting paid.
See the official change log for all previous notes and changes! READ IT. It can answer a lot of questions if you are new to Fresh Evo.
DOWNLOAD: http://geekfor.me/new-release/fresh-evo-053/
RADIO: 1.39.00.05.31 (make sure you are running the newest radio if you are having problems with 4g)
New screen shots:
Older: screen shots:
Thanks to D/\SH at smartphonejunkie.com for the video! This is from the last version of Fresh Evo but he has some nice things to say.
Any plan to get this into ROM Manager? I find that app to be super convenient.
sph33r said:
Any plan to get this into ROM Manager? I find that app to be super convenient.
Click to expand...
Click to collapse
Yup it will be, I was just waiting to release so that the links worked.
Flashing now. The one thing I missed when leaving the Hero was fresh rom's. Thanks Flipz
flipzmode said:
Yup it will be, I was just waiting to release so that the links worked.
Click to expand...
Click to collapse
Awesome! I'm glad to see developers embracing that software.
Can't wait to try it, it sounds great.
Haha mad people must be downloading this your site is having issues establishing a database connection
Nvm seems fine now
Flashed with no problems. My Evo is Fresh!
Thanks Flipz
flipz just made my weekend!
Can we install directly over Fresh 0.1c Beta without a wipe?
Flashing now. Thanks Flipz
TheBiles said:
Can we install directly over Fresh 0.1c Beta without a wipe?
Click to expand...
Click to collapse
Shouldn't be a problem. And yea, the site is getting murdered. I just enabled super cache.
drbgotenks said:
Flashed with no problems. My Evo is Fresh!
Thanks Flipz
Click to expand...
Click to collapse
Hahahaha... I've been dying to say that!!!
Great to see you here flipz!
The beta version was running fine for me but I am excited to see the public version released.
For anyone not familiar with flipzmode's work, just flash this ROM and you'll be a fan!
omg I SO wish my Evo's battery isn't dead right now.
Awesome stuff. Was a huge fan of the hero roms. Now on to bigger and better things
The rom manager wouldn't let me flash. It didn't force close, it just said failed. To fix, I changed the setting in the very bottom panel to an older version, then changed back to the current one and it worked fine.
Flipz,
I love the idea with moving some of them to /data/app... which got me thinking... why not move almost everything there? That way everyone can uninstall whatever they don't like... or at least moving everything you can, over there to allow everything to still work.
Hey Flipz... I noticed that the Hero kitchen worked to push some of the .apk's back to the Evo. But some return an error..and fail.
For example the HTCFMRadio apk;
Can u clarify, when u say: adb shell mount /sdcardadb shell mount /systemadb shellcp /sdcard/fresh-removed-apks/WHATEVERAPP.apk /system/app
Like would "adb shell mount /sdcardadb shell mount /systemadb shellcp /sdcard/fresh-removed-apks/WHATEVERAPP.apk /system/app be all one command line? Or where should that be broken up at? I tried doing adb shell/mount /sdcard and it said "Usage: mount [-r] [-w] [-o options] [-t type] device directory..
drbgotenks said:
The rom manager wouldn't let me flash. It didn't force close, it just said failed. To fix, I changed the setting in the very bottom panel to an older version, then changed back to the current one and it worked fine.
Click to expand...
Click to collapse
Ditto. Did the the fix you suggested, and it's back in action.
Tenny said:
Flipz,
I love the idea with moving some of them to /data/app... which got me thinking... why not move almost everything there? That way everyone can uninstall whatever they don't like... or at least moving everything you can, over there to allow everything to still work.
Click to expand...
Click to collapse
Damn good idea, a second this if it could be done! It would be the most customizable ROM ever!!!!!

Trimming ROMs for LG P500

As we know, JB and Kitkat ROMs have gotten much larger than their ICS predecessors. Flashing these and some gapps can easily run our device out of space on the system partition. Some apps will not even be installed, others will have errors. Even some hardware may not work correctly. So the ROMs must be trimmed to fit correctly.
In higher-end devices, they will be 1GB of system space. ROM-builders and chefs tend to dump everything on system as a convenience. Flash the ROM, a load of gapps and one has a complete-functioning system. What could be simpler?
For our oldie-but-goodie, we do not have this luxury. Even with micro-gapps consisting of an old Play/phonesky.apk and some framework will run out of space.
Really, anything not needed to get Android up and running does not need to be on system. There are some additional apps that require extra permissions afforded system apps to work. They need be kept there as well. But the others? Install as user apps. Then let link2sd or such symlink them out of the way (data space runs out too easily on our old phones as well!)
I trim the ROMs to bare metal. Not necessary to be so severe however. I ran ICS for a long time with 3 meg on system with no problems.
What do I remove, keep, etc?
1. /system/usr/srec (speech recognition stuff, most likely no longer in use!) I keep a copy on sd-ext and symlink to there. No problems.
2. Ringtones, alarms, sounds -- most of these have already been trimmed off the ROMs by the devs so I leave what they leave. Want more? Place in similarly name folders on the sdcard and Android will find them.
3. Fonts:
Linux, Android, XDA, are international communities. To save a small bit of space, non-Latin fonts have been removed from recent CM-11 and Omni ROMs. I objected, placed revert request on Jenkins. Raise those voices, folks. Many of us regularly use non-Latin fonts and languages. I keep all the fonts. The fairly large "fallback" font is usually missing on ROMs nowadays. Those using CJK languages or getting a lot of '?' in text should put it back.
4. Apps, apps, apps:
Calendar should be installed from Play. Take off ROM.
I install Apollo, Calculator, CMFilemanager, Cameras, Galleries as user apps. Work fine.
If one does not use live-wallpapers, take their apps off.
If one is using Google Search/Now (must be side-loaded as not fully compatable with our device and will not install from Play), the QuickSearchBox is no longer needed in system.
Google Play Services can be installed as a user app and auto-updates as such anyway. A version of Play, older and smaller the better, apparantly must be on system but the full newer versions should be installed as user apps and will be auto-updated as such.
Flash the tiniest gapps one can. Most all gapps such as Maps, Keep, Hangouts, etc., etc., are installable from Play as user apps.
.
5. Keyboards
The LatinIME with all the languages was ridiculously large. Recent ROMs only have English. There are numerous kbs on Play. One only needs a small kb on system to enter Google account on first start if one wiped data. Do not need swipes, handwriting, voice, dictionaries, etc. Since I do not wipe data, I do not even keep the LatinIME. But better to have a kb on the ROM.
Want swipes and languages without the bloat? Try multiling-o. Whole business is 330k and numerous!! languages install as user apps as well and do not eat up data space. Not quite as good as Swype or Swiftkey but pretty close, very light-weight, and very configurable as well. Note that recent paid link2sd versions can symlink app data as well so one can now have one's Swype or Swiftkey and eat it to
Interest in other's ideas and alternatives!
There is now an app on Play just for installing CM apps! Those include Apollo, CMFilemanger, DSPManager, etc. New there is a "CameraNext" which is NOT Focal. Says might not work. Does on my phone.
Anything available from this app can be made a user app, taken off system, symlinked away by link2sd. If the app is on system now, i.e. Camera, Messaging, et al, do not install from the app. Instead, force stop the app (avoid FCs after moving), link2sd convert to user app, create links. When flashing newer ROMs, trim the apps made user apps off the /system/app/ before flashing.
The weakness of this is that if the apps were upgraded, one might miss out. To check, compare apk sizes, dates. If seems like newer version, extract them before trimming and try an adb install -r.
This will gain some /system space and som /data space as well. However, the linked dalviks will be a larger total so will not help prevent link2sd "Achilles heel." More system space enables experimentation, placing something new there that needs to be.
After trom rom and how to pack .zip it? Thanks
Any PlayStore said:
After trom rom and how to pack .zip it? Thanks
Click to expand...
Click to collapse
I do it using KDE's ark. Have to downgrade to an older version to get it to work because they have not fixed the bugs in newer ones. Pain, but gets it done.
There must be other GUI apps to take care of this, for Android, Linux, Windows.
Otherwise, unzip the whole thing.
Remove files
Rezip.
Dovidhalevi said:
Otherwise, unzip the whole thing.
Remove files
Rezip.
Click to expand...
Click to collapse
Doing so rom will not work.
Doing so rom will not work. If rom activity will malfunction
Any PlayStore said:
Doing so rom will not work.
Doing so rom will not work. If rom activity will malfunction
Click to expand...
Click to collapse
OK, I never tried in "manually."
There is a Windows app on one of these forums. Do a search.
There is at least one Android app on Play as well.

Marshmallow & Nougat (AOSP/CM/Lineage) for Nook HD/HD+ (& Tablet)

This thread, and Marshmallow/Nougat porting in general, are a continuation of the previous KitKat and Lollipop development; the general installation steps are more or less the same. If you need a very detailed guide, PeteInSequim's is a good resource, especially if moving from stock. Read/search through the previous threads for any missing information (CM12.1 OP). That being said, I'm uploading personal builds of AOSP 6.0/7.1, CM 13.0/14.1, TWRP, etc, here.
Some of the important device-specific changes from KitKat/CM11 are described in Hashcode's thread. The goal is to remain fairly close to CM or AOSP upstream, and integrate whatever fixes and enhancements in unified device trees. More progress information will be added here gradually, as I have time. A lot of useful discussion happened on the previous CM11, CM12.[01] threads, and the status of things is available to anyone willing to search. I am not a developer, mostly a hobbyist, and the usual disclaimers apply.
AOSP vs CM
Initially, AOSP builds happened out of curiosity, but also necessity, since CM13 needs some time to stabilize. As expected, an AOSP ROM is a lot more barebones than CM, and there are pros and cons for each flavor. Now that initial porting is done following the previous philosophy of reusing and common-izing the device trees, it seems feasible to maintain both AOSP and CM ROMs (whenever 13 is usable), although nothing is promised.
In truth, the current builds are more accurately described as AOSP-ish; at the very least, a few core components need to be modified for our HALs, proprietary blobs, etc. On top of that, I've been adding features and fixes that seemed essential to me. Still, major differences remain compared to CM, and before people deem them as bugs, here are a few:
Wake with Home button: not an AOSP feature; I took the CM code to make it work in these builds.
The Advanced reboot menu: also a custom feature; may be ported at some point.
Mounting exFAT or NTFS media: not AOSP-supported filesystems, but a priority for me.
BusyBox was a CM extra, but I'm including it starting with the November 8th builds.
Etc, etc.
Because we have a reasonably flexible build system, other ROM flavors could happen in the future. A custom ROM like CM is actually easier to maintain than AOSP given all the fixes and enhancements that need separate maintenance with the latter.
The major difference with the first November builds is having SELinux enabled (albeit Permissive). It had to be kept completely disabled during the initial porting, due to a kernel bug/missing feature that took more than a week to track down. Thus, logs contain lots of AVC denials now, as sepolicy has not been fully updated for MM; no need to report or worry about these yet.
On a personal note, posting on my threads is pretty tricky business... My builds were never intended for general consumption, but rather a way to move porting and development forward, and I often debate only keeping the GitHub repositories for people to build themselves. Obviously, that would upset hundreds of people at this point, so I make an effort to upload reasonably bug-free builds, as well as help even with trivial non-problems whenever I can. Nevertheless, low quality, or badly written posts (and I don't mean bad English) are a sure way to get ignored, and my memory is pretty long term Basically, I won't police content here, but I also don't want to deal with the the kind of stupidity and entitlement so prevalent in real life.
In conclusion, no need to thank (unless you really want to), or ask about donating, etc, but do reassess the limits of your current understanding before making bold claims, as I do too. Nothing worse than having to fix a trail of misinformation... Also, comparisons to other people's work (unless constructive), complains about the state of things, or simply starting with "no offense" and such, will make your problem much less likely to be solved by me.
XDA:DevDB Information
AOSP 6.0/7.1; CM 13.0/14.1, ROM for the Barnes & Noble Nook HD, HD
Contributors
amaces, Hashcode, verygreen
Source Code: https://github.com/airend/android
ROM OS Version: 7.x Nougat
ROM Kernel: Linux 3.0.x
Version Information
Status: Nightly
Created 2015-11-02
Last Updated 2018-07-29
GApps & Partitioning Info
With unusual issues, especially if connected to Play Services, I recommend testing the ROMs without GApps before reporting bugs.
Currently, pico Open GApps should work on all AOSP, CM, or Lineage builds (M & N), although initial flashing should to be done before first boot (wiped data). With CM/Lineage 14, system space is barely enough, yet I still think we're fine with the current partitioning scheme. Changing it can introduce other complications, and haven't found an absolute reason for doing so. Nevertheless, it is possible to alter the partition sizes after installation, and thus increase available system space; @Lanchon prepared a pretty nice guide specifically for the Nook HDs.
About including GApps directly into the ROMs, I had tested this approach using the Open GApps manifests. While things can work better that way, legally, it wouldn't be a good idea to distribute these builds (for the same reasons CM had to stop including them). Also, I think there are a few people who wan't nothing to do with Google's proprietary services, so a likely deal breaker for them. We'll have to wait for the established packagers to decide how to deal with the MM changes, although my manifests are available, and one can include anything in personal builds.
Manifests & GitHub Branches
For people making their own builds, the customized manifests including my forked branches, and other changes, are kept more or less up to date at github.com/airend/android. There are currently three main branch pairs: cm-12/lolli, cm-13/marsh, and cm-14/nougat, the latter two being most updated. As the name implies, these manifests are based (and actually constantly rebased) on the corresponding upstream branch, either AOSP or CM/Lineage. Theoretically, once these manifests are stable, there is no need for local additions, but corrections might be needed nonetheless.
No need to repo init more than once, unless you're switching manifest branches (e.g., LP to MM, CM to AOSP, etc); repo sync will pull all manifest changes.
About naming conventions for my branches, I try to reuse as much as possible between CM/Lineage and AOSP, and when that's possible, branches are named lp-12, mm-13, etc. Otherwise, branches are named lolli, marsh, nougat, or cm-1*, depending on their base and specificity.
Upstream Lineage branch names haven't changed from old CM, and no current branch will be renamed here either (despite rebase).
The kernel repo contains additional feature branches named base/[subsystem], on top of Hashcode's last CM12.0 kernel. The main stable kernel is roughly equivalent to merging all these feature branches, although the history is different.
Recovery Information
We do have official TWRP images (https://twrp.me/Devices). While they don't work with CM12.1 anymore (for reasons described in that thread), they should be usable with all current Marshmallow builds.
More up to date eMMC TWRP images are included in the respective device folders. Personally, I've had a good experience with TWRP, and do not plan on looking at other recovery distributions. Now, there have been (very) sporadic reports of broken partition tables, soft-bricked devices, etc, blamed on recovery. Although recovery is usually not the actual culprit, here are some ways you can rescue a completely unresponsive device:
The instructions below are generic, and were meant for CWM. TWRP has all these image flashing features in the GUI, so CLI/shell is not strictly needed.
It's a good idea to keep a microSD card around, with my external recovery image, or verygreen's.
Once booted off the external recovery, you can easily fix whatever is broken (ADB is your friend here). There's no need to re-install CM11, as re-flashing recovery and/or boot will most likely fix your issue.
Recovery partition: dd if=<path to recovery image> of=/dev/block/platform/omap/omap_hsmmc.1/by-name/recovery
Boot partition: dd if=<path to boot/kernel image> of=/dev/block/platform/omap/omap_hsmmc.1/by-name/boot
Afterwards, you should at the very least have a working internal recovery. I don't recall any instance where /system and/or /data became corrupted because of recovery, but you can certainly fix them now.
I've never tested this part, but I believe that you may be able to install an eMMC CM12 ZIP with verygreen's external CWM, even if /data and /cache are F2FS (assuming you copied all ZIPs onto the external card). My understanding is that only /dev/block/platform/omap/omap_hsmmc.1/by-name/system (always ext4, mountable by any recovery) is touched during installation, so you may even bypass TWRP completely.
P.S. If you broke you bootloader by flashing the wrong recovery flavor, despite all images being clearly labeled as hummingbird or ovation, well, no sympathy for you… Still, you can bring your device back to life within minutes as described above.
Selected FAQs
Should I use AOSP or CM/Lineage?
Depends entirely upon personal preference, which requires testing, and some amount of research into what makes a ROM different. There are substantial core differences between the two flavors, which are not obvious immediately. If installing for the first time, flip a coin (and avoid builds in experimental, of course).
How do I get root back?
Until recently, some type of SU binary was included with all ROMs (WITH_SU=true on CM/Lineage, or using this repo on AOSP). This was needed because third-party system-less solutions don't work with our quirky bootimages, and system-mode installers have other issues on N. As builds mature, I'm separating the SU backend from main OTAs, roughly like CM/Lineage did. On my Nougat builds, there are currently two system-mode options:
On AOSP, I adapted phh's OSS backend for system-mode install (addonsu-phh-arm.zip). You need the matching manager to control access. Later on, I ported CM/Lineage's AppOps-based SU to AOSP, so that addon works here as well (see next item). These binaries need to be flashed after every ROM update, same as GApps.
On CM/Lineage, you can install their official add-on (addonsu-arm-signed.zip); it will use the baked-in manager, so no extra APK required. Or, you can install phh's SU and manager, like on AOSP. Neither needs to be flashed more than once here given the existing addon.d support.
Why no official CM/Lineage builds since 12.0?
The answer involves both technical complications, and some amount of politics. Getting changes accepted for non-mainstream/deprecated platforms like ours has been an uphill battle. Over time, many OMAP4 improvements have been developed outside CM, formerly by OMAP4-AOSP, now the Unlegacy-Android project. Those common hardware improvements have made it into 13.0/14.1 only recently, due to other people's perseverance. Although we're much closer to upstream Lineage compatibility, the hundreds of device tree, and more than a thousand kernel changes would still need to go through review. Given how long that takes for each item, and occasional opposition from non-OMAP4 reviewers, I decided to allocate my resources towards bettering these devices rather than official status. The downside is that people may feel dependent on my builds, which shouldn't be the case; I constantly rebase and maintain complete manifests, optimized for these devices. All the relevant changes are open and available in public GitHub repositories, which means anyone can submit them/try to work with upstream Lineage. However, for the above reasons, it's unlikely that I will make that effort.
What's the current status of full screen casting, Miracast, HDMI, etc?
Full screen casting to a Chromecast sink (either real, or emulated) works on all current Nougat builds. CM13 builds may have issues there, but AOSP M was fixes. Chrome casting from apps (the preferred way, if available) was never broken. Miracast in AOSP is pretty much legacy tech now. It also requires more hardware support compared to Chromecast-ing, and it probably doesn't work on any recent builds. Fixing HDMI is still a goal; it got broken on our devices after some Marshmallow revision. Until HDMI can be fixed, I disabled it completely to recover its unused VRAM allocation.
Will this (continue to) be based off AOSP, or CM?
belfastraven said:
@amaces, I am currently running with the 11/01 hummingbird build from experimental, which I installed yesterday. It doesn't work as well for me as the 10/29. It is laggier, and for some reason right now, I can't log into from the kindle app. I also note that on rebooting, it will go through the boot cycle more than once, optimizing various apps each time. Of course, since it just numbers the apps, you can't actually tell what it is doing. . I think there are olicy/permission issues since trickster mod can't install busybox into the system partition and, as stated before, system won't boot into to revery, soft boot, or shutdown, without use of power,home keys. Do you wan't logs?
thanks again.
Click to expand...
Click to collapse
On Ovation it is the same: 10/29 is far better than 11/01.
Graphics problems on 11/01: the screen shows some green lines sometimes and it feels laggier.
---------- Post added at 11:42 PM ---------- Previous post was at 11:40 PM ----------
twiztid_ said:
Will this (continue to) be based off AOSP, or CM?
Click to expand...
Click to collapse
I would prefer AOSP: less customization means less resources needed.
...and for Ovation every MB of ram free can be fundamental.
Or maybe both versions
For some happy news, multi-window mode (enable in developer options) seems to work pretty well (on my HD) It's probably even more useful on the HD+ where you have more real estate.
Thank you @amaces for M!
Questions:
Are your repos in a state that I can start trying to build it?
Is this your (local) manifest https://github.com/airend/android/blob/marsh/default.xml
I saw the above manifest and tried to build a couple of days ago and got many errors just updating my local repo. I'm reckoning that the manifest has such a mishmash of projects that I should probably delete my entire repo and download it all again. Is this likely the case?
Again, thanks. I'm so excited!
Things are still busy till probably tomorrow afternoon, but I will add proper replies here, and on the CM12 thread soon. As of now, there must be a few dozen posts I need to go through, plus lots of other updates.
amaces said:
Things are still busy till probably tomorrow afternoon, but I will add proper replies here, and on the CM12 thread soon. As of now, there must be a few dozen posts I need to go through, plus lots of other updates.
Click to expand...
Click to collapse
Is gapps for 6.0 available? If so, which one do you recommend?
js290 said:
Is gapps for 6.0 available? If so, which one do you recommend?
Click to expand...
Click to collapse
OP has only two paragraphs. Try reading it again.
I have 2 HD+ and wanted to dedicate one to Marshmallow. I spent time with this build and it just became too frustrating.
I did find a gapps benzo-gapps-M-20151011-signed-chroma-r3.zip that did get rid of the nag messages with settings in settings-apps. I'll get links if others are interested. AdaWay 2.2 did give some strange messages about BusyBox scripts but it turns out there is a Mars working version of AdaWay, AdAway-release_Build-Oct.09.2015.apk that I haven't tried yet.
Very frustrating not really being able to use the ExtSdcard. Installation of apps is not that simple without using a third party browser.
First efforst here are great. If you look at first efforts on phones, disaster and pre=alpha is what is going on.
And for those of you who, like I, have been looking to find where the external sd carded is mounted if you want to keep it as an external sd card, on 11/1 build ,it is at /mnt/media_rw/FFF9-7EC0 on my HD-I think that that actual hex address part may vary. I was able to manipulate the files on it with the root explorer app. I think other apps will work as well--they just don't know where to find the external sd card... .
Root Explorer lets you set that path.
Also, I was able to enable and use the Sytem UI Tuner setting...
belfastraven said:
And for those of you who, like I, have been looking to find where the external sd carded is mounted if you want to keep it as an external sd card, on 11/1 build ,it is at /mnt/media_rw/FFF9-7EC0
Click to expand...
Click to collapse
Couldn't you use a script to mount(or link?) the folder to its "proper" location at start up?
I thought that's what the system did anyway.
twiztid_ said:
Couldn't you use a script to mount(or link?) the folder to its "proper" location at start up?
I thought that's what the system did anyway.
Click to expand...
Click to collapse
I think the issue is that it's "proper" location for Marshmallow (the system locates the card with no problem) is different from where older apps are looking for it. I'm sure one could add a link or links I was just happy to locate it
sephiroth2k said:
Got a working keyboard by flashing attached, Google Play Services crashes constantly and the screen randomly flashes garbled graphics, then locked up. Not exactly a daily driver, but cool nonetheless!
Click to expand...
Click to collapse
That's a problem with whatever GApps package you flashed; there are many crappy ones floating around. Either way, a clean AOSP installation has none of those issues.
games906 said:
What gapps do I need to use for the 6.0? One was too big, another wouldn't flash, one flashed but all of the Google apps crashed. Help!!
Click to expand...
Click to collapse
Read post #3.
Monfro said:
Other bugs I have found: SD is not recognized, home button is not mapped to wake the device.
AOSP keyboard crashes, but we can flash others. Google Play services crashed in the first minutes...I don't know if it started working well maybe after a silent update or it was not starting again.
Click to expand...
Click to collapse
Read OP about the distinction between AOSP and custom ROMs such as CM. Also, the AOSP keyboard is fine unless you flash GApps (see post #3.)
asakurato said:
It's not for daily use. Performace is quite good, if not better, but there are many bugs, like computer can't recognize both Internal and external sd (in mtp), file managers can't recognize external sd, constant keyboard crashes (you can use any other) and many other which I have forgotten or haven't found yet.
Click to expand...
Click to collapse
Monfro said:
So the only important bug I found is SD card not accessible: only built in file browser can correctly access it.
Click to expand...
Click to collapse
There are significant changes to storage management in Marshmallow, and I suspect those basic AOSP apps were once-again left behind, and are not using the newer APIs.
belfastraven said:
On Hummingbird, same as above re sdcard. Also location services seem not to be working properly. Accuweather, google maps don't seem to be able to access the services even though they have permission.
Click to expand...
Click to collapse
It's probably a missing location provider issue, like we had in the early days of CM12.0 (and which CM fixed). I'll need to track that down.
belfastraven said:
I've noticed a bit of what seems to be a memory management problem... once you have been using several apps for a while, (for me, NYTimes, kindle, Chrome_dev, settings, gmail, e.g. ) apps become rather laggy and you get the application not responding message. I am going to attempt to keep using this as my daily driver, however. Is there a way to do a soft reboot in this rom--previously you could do it from the power menu.
Click to expand...
Click to collapse
Although I haven't noticed that, all is possible; I haven't used my device for more than a few hours before having to work on fixing stuff, followed be reboot. The reboot options you're familiar with were a CM feature as described in the OP, but I plan to adapt their code. Beyond that, soft/reboot/recovery/power off don't seem to work at all, root or no root. It's possible CM was setting those in a legacy fashion for our devices (and even then, they were falling apart as you know).
toplist said:
Reboot to recovery isn't working for me. Currently, I'm running the latest experimental marshmallow build. I've been running op's cm12.1 build even before this thread was created. I didn't have recovery or power off problem like some users until the last cm12.1 10/18 build. When I saw the marshmallow build and decided to try it, that's when I found out that reboot to recovery and complete power off are not working properly. The way I access recovery now is manually pressing power button to shut it off and do power+home to boot to recovery. I tried flashing twrp 2.8.7.4 from amaces's folder and also twrp 2.8.7.0 using flashify. It doesn't fix the problem. I can't access fastboot from computer. When I use adb reboot bootloader command, it loads to cyanoboot and few seconds later shows android boot window. How can I get reboot recovery and power off working again?
Click to expand...
Click to collapse
The devices never had reboot to bootloader or fastboot support, and TWRP doesn't have much to do with reboot/power off within the ROM. Otherwise, read above; currently, if you need to power off, hold the power button for a few seconds to force shutdown.
belfastraven said:
@amaces, I am currently running with the 11/01 hummingbird build from experimental, which I installed yesterday. It doesn't work as well for me as the 10/29. It is laggier, and for some reason right now, I can't log into from the kindle app. I also note that on rebooting, it will go through the boot cycle more than once, optimizing various apps each time. Of course, since it just numbers the apps, you can't actually tell what it is doing. . I think there are olicy/permission issues since trickster mod can't install busybox into the system partition and, as stated before, system won't boot into to revery, soft boot, or shutdown, without use of power,home keys. Do you wan't logs? […] Have trickster mod running now--needed to install busybox through recovery. If there is anything you want looked at, let me know. I note that the system is "idling" a bit warmer than it was onlast Lollipop build--at a little over 30 degrees C. "miscellaneous" is using 22% of battery.
Click to expand...
Click to collapse
Didn't notice new lags on non-GApps install, but again, I must've tested a dozen builds since last week. The only major difference with 11/01 was turning SELinux on (albeit Permissive, see OP), after a week-long bug hunt. In the meantime, the repos jumped to r26 (MDB08M, same as latest Nexus 6P builds), which represents about two months of development upstream, so hopefully the next builds will be better. AOSP doesn't include busybox as you discovered, but you can easily install the package once you have root (Trickster MOD's dev publishes a good installer, so no need to flash stuff in recovery, although that works too).
Logs won't help much at this point since I can see all these issues on my device as well; I'm tackling them sequentially, but all these take a lot of time, so it'll be a while until decent ROMs happen.
Tschumi said:
In the experimental folder are the Marshmallow builds, did you flash over Lollipop? There are still a lot of kinks.
Click to expand...
Click to collapse
Definitely factory reset before installing Marshmallow.
belfastraven said:
no--I had been running the 10/29 Marshmallow--. I know that these are very early, but I think the 10/29 was working better for me. I'm sure some of this is not the rom, but the apps. I do note a lot of avc permission problems in the logs, as well as Choreographer complaining about missed frames..., I am excited that this is running at all.
Click to expand...
Click to collapse
The AVC denial messages finally show up after I fixed SELinux, and Permissive shouldn't negatively impact performance, but yeah, sepolicy needs to be updated for MM soonish. The missing frame issue is troubling, and I'll definitely investigate if it persists into what I deem as stable builds.
Monfro said:
On Ovation it is the same: 10/29 is far better than 11/01. Graphics problems on 11/01: the screen shows some green lines sometimes and it feels laggier […] I would prefer AOSP: less customization means less resources needed. ...and for Ovation every MB of ram free can be fundamental. Or maybe both versions
Click to expand...
Click to collapse
Same as above, and do let me know if these issues happen on a clean GApps-free installation.
twiztid_ said:
Will this (continue to) be based off AOSP, or CM?
Click to expand...
Click to collapse
OP updated with relevant info, but yeah, ideally both will be maintained side-by-side. Of course, CM13 is in huge flux right now.
Zippy Dufus said:
Are your repos in a state that I can start trying to build it?
Is this your (local) manifest https://github.com/airend/android/blob/marsh/default.xml
I saw the above manifest and tried to build a couple of days ago and got many errors just updating my local repo. I'm reckoning that the manifest has such a mishmash of projects that I should probably delete my entire repo and download it all again. Is this likely the case?
Click to expand...
Click to collapse
I've be trying to keep everything on GiHub up-to-date and reasonably stable. As you noticed, I've been crafting a de-bloated manifest that will make it even easier to replicate my builds (details in post #2).
Now, you can repo init on top of the CM12 sources, but you'll need to --force-sync since many repos are overwritten. That would only matter if you made local commits, especially if you didn't upload them, because you'd likely lose them. Better yet, I suggest keeping the CM folder separate, then initialize another one for AOSP with the --reference option. By referencing the CM folder, repo will attempt to reuse common repositories, which is the majority of Git objects. The checkout will still consume space, but the hidden .repo folder will be much smaller. Of course, referencing is not needed if you have enough space. Conversely, if you delete everything (that is including .repo) and initialize anew, you avoid all these issues, but going back will be a hassle.
Otherwise, I'm using a 4.9 EABI for kernel, but Google may insist on 4.8. If that creates issues (it'll be obvious, missing compiler type errors), you can either remove those prebuilts in your local manifest additions plus bring in a 4.9 kernel toolchain, or simply create a symbolic link (ln -s arm-eabi-4.8 arm-eabi-4.9) in platform/prebuilts/gcc/linux-x86/arm.
king200 said:
I have 2 HD+ and wanted to dedicate one to Marshmallow. I spent time with this build and it just became too frustrating. I did find a gapps benzo-gapps-M-20151011-signed-chroma-r3.zip that did get rid of the nag messages with settings in settings-apps. I'll get links if others are interested. AdaWay 2.2 did give some strange messages about BusyBox scripts but it turns out there is a Mars working version of AdaWay, AdAway-release_Build-Oct.09.2015.apk that I haven't tried yet.
Very frustrating not really being able to use the ExtSdcard. Installation of apps is not that simple without using a third party browser.
First efforst here are great. If you look at first efforts on phones, disaster and pre=alpha is what is going on.
Click to expand...
Click to collapse
You gotta read the OP, especially the end of it... But yeah, I'm sure you did your research regarding GApps; the end of October packages were much better, albeit still very flawed (see post #3). AdAway works perfectly once you're rooted, even with versions older than 10/09 in the semiofficial thread, which should've been your first go to. There's no issue with SD card mounting, but you should be aware that fancy filesystems (e.g., exFAT, NTFS) are not supported by AOSP. Also, apps need to use the MM storage APIs. In conclusion, do your testing on a clean slate, before flashing any GApps; all are buggy currently, and that situation has nothing to do with these ROMs.
twiztid_ said:
Couldn't you use a script to mount(or link?) the folder to its "proper" location at start up?
I thought that's what the system did anyway.
Click to expand...
Click to collapse
That won't work well since that path is not constant or universal. I'm sure we'll learn more about these new storage APIs, but I'm only providing the hooks based on the official documentation at: https://source.android.com/devices/storage/config.html#android_6_0.
belfastraven said:
I think the issue is that it's "proper" location for Marshmallow (the system locates the card with no problem) is different from where older apps are looking for it. I'm sure one could add a link or links I was just happy to locate it
Click to expand...
Click to collapse
Has anyone tried BaNKs MM gapps? People seem to be using them on the N4 with MM builds without any issues.
I'm doing much better with the 0129 build than the 1101. The 1101 build is unresponsive. Also, something like opening an SMB tab doesn't work.
I did this to solve the Google Play Services fc http://www.ibtimes.co.uk/android-6-0-marshmallow-gapps-how-fix-google-play-services-force-close-error-1524431
------------------------------------------------------------------------
With aosp_ovation-ota-MRA58K.151029.zip:
Avoided many hangs and reboots. Developer options->background processes limit->3 max has to be reset on each boot.
Green streaks on screen: developer options_>disable HW overlays. Select but after reboot, will reset to off.
Could browse to MicroSD card with Root Explorer, mnt/media_rw/147E-92D1, was not able to set the path for external card to that value.
Was able to set Home to card with Root Browser https://play.google.com/store/apps/details?id=com.jrummy.root.browserfree
Moon Reader could find the card but not see any files in the root folder.
AnTuTu starts test but then closes.
Google Text-tospeech Engine give error messages. Pico TTS works but has to be set to very slow speech rate to be intelligible. Voice search works but, again, difficult to understand.
Kodi ran well. A big battery eater and video intensive.
Use Swype keyboard and freeze Android Keyboard.
Adaway, even the AdAway-release_Build-Oct.09.2015.apk would not install. Placed a working Hosts from another device file in /system/etc and it works fine.
Adb is more reliable with WiFi than cable.
king200 said:
I'm doing much better with the 0129 build than the 1101. The 1101 build is unresponsive. Also, something like opening an SMB tab doesn't work.
I did this to solve the Google Play Services fc http://www.ibtimes.co.uk/android-6-0-marshmallow-gapps-how-fix-google-play-services-force-close-error-1524431
------------------------------------------------------------------------
With aosp_ovation-ota-MRA58K.151029.zip:
Avoided many hangs and reboots. Developer options->background processes limit->3 max has to be reset on each boot.
Green streaks on screen: developer options_>disable HW overlays. Select but after reboot, will reset to off.
Could browse to MicroSD card with Root Explorer, mnt/media_rw/147E-92D1, was not able to set the path for external card to that value.
Was able to set Home to card with Root Browser https://play.google.com/store/apps/details?id=com.jrummy.root.browserfree
Moon Reader could find the card but not see any files in the root folder.
AnTuTu starts test but then closes.
Google Text-tospeech Engine give error messages. Pico TTS works but has to be set to very slow speech rate to be intelligible. Voice search works but, again, difficult to understand.
Kodi ran well. A big battery eater and video intensive.
Use Swype keyboard and freeze Android Keyboard.
Adaway, even the AdAway-release_Build-Oct.09.2015.apk would not install. Placed a working Hosts from another device file in /system/etc and it works fine.
Adb is more reliable with WiFi than cable.
Click to expand...
Click to collapse
On the 11/05 hummingbird rom, rooted, but without gapps or any additional app loaded, I have no sound
or video . Loading a couple of apps from APKs, no location services, Amazon Kindle not responding, same as earlier.
This was a clean flash--wiped system, data, cache, dalvik...
I'll try playing with this a bit more.
belfastraven said:
On the 11/05 hummingbird rom, rooted, but without gapps or any additional app loaded, I have no sound
or video . Loading a couple of apps from APKs, no location services, Amazon Kindle not responding, same as earlier.
This was a clean flash--wiped system, data, cache, dalvik...
Click to expand...
Click to collapse
Hmm, the A/V stuff may be due to the inclusion of media_codecs_ffmpeg.xml, which is present only in CM. Since you're rooted, you could test this by deleting the <Include href="media_codecs_ffmpeg.xml" /> line at the end of /system/etc/media_codecs.xml.
The Amazon Kindle issue is intriguing; do you remember if you had it on the last CM12.1 builds? There could be several reasons, including a heap change that I made about a month ago. Either way, can you describe in more details what happens, and possibly capture a log?
amaces said:
Hmm, the A/V stuff may be due to the inclusion of media_codecs_ffmpeg.xml, which is present only in CM. Since you're rooted, you could test this by deleting the <Include href="media_codecs_ffmpeg.xml" /> line at the end of /system/etc/media_codecs.xml.
The Amazon Kindle issue is intriguing; do you remember if you had it on the last CM12.1 builds? There could be several reasons, including a heap change that I made about a month ago. Either way, can you describe in more details what happens, and possibly capture a log?
Click to expand...
Click to collapse
Deleting the line from /system/etc/media_codecs.xml fixed the sound and video problems.
Amazon definitely was fine on lollipop builds--it may have even worked on 10/29 Marshmallow, but I was so excited about that build I can't remember now It's one of my 3 or 4 most used apps.
What happens is that the application will start and if you are not logged into it already, will allow you to click on "start reading" and will bring up a log in page. Sometimes I have had the page come up, sometimes the application seems to freeze and then quit, sometimes I will get the "xxxx application is not responding..." message, sometimes it appears to restart on its own. I managed to log in once on the 11/01 rom, and then the application would die/freeze/etc when synching content so it never was usable. I could make no sense of the messages in the logs because I'm not experienced enough with this.
thanks for your help.
p.s. I cannot get the "file manager" app root access...

Categories

Resources