Note: If you aren't much of a reader, or already have a working understanding of partitions, symbolic links etc or just don't feel like reading this just go to the "recap" section on the bottom.
There has been a good deal of posts regarding this, but few with good details. In this post, it is my goal to be precise but also concise and still explain in laymans terms. If this is too basic for you, then move along nothing to see here. I just wanted to explain this so that others will not have to do the headache of digging for this information like I did.
Internal Storage
If you have a Prevail (and actually installed anything), more than likely you've seen the low internal storage warnings. Here's a brief explanation of what Internal storage is.
Your phone comes with internal flash storage (117MB to be exact, way too little for typical users) which is used both for the android system and any apps you have installed, and any that came installed on the phone. This is depleted quickly, as it is very small compared to many other phones. The "system" memory cannot be seen by you or your apps as it's reserved for system purposes, this is why you may see that using a custom rom you can install more apps before running out of space (because the rom and pre-installed apps take less space).
Apps2SD
When talking about "Apps2sd", you may be talking about at least 4 things (maybe more). Google's App2sd enabler style app (more common, allows you to use the default google application on a larger variety of apps and there are many named many different things), and Cyanogenmod's Apps2sd. Finally, the best option here is probably Darktremor's A2SD.
Symbolic Links
These applications all work in a very similar way. They move the app's .apk file onto the sd card then "link" to the file instead of leaving it on the internal memory. By "linking", I mean they use a symbolic link. A symbolic link is a file of very tiny size that is similar to a shortcut in windows. It differs because any program or thing trying to access the symbolic link will actually access the exact file the link points to, not the link itself. This means whatever is accessing this file is completely unaware (unless it's specifically looking) that the file it's trying to access doesn't reside where that program is looking.
Applications' 3 Types of Data
An app contains 3 things. It contains the app itself (the .apk file), user data & cache, and "library" files. User data and cache is basically some saved data that helps the app run better and remembers things like settings, high scores in games, etc. Library files are like DLL's on computers (dynamic link library in windows, .so or shared objects in linux). These are basically the "brains" of the application and tell it how to do certain functions like draw to the screen or other things like that. Sometimes many programs can use the same library file, which is why Linux (Android is Linux) more accurately describes these files as "shared objects". As I said before, Apps2sd only links the apps .apk file, leaving the user data & cache, and library files on the internal memory so apps still take up room and you can still run out of room. If I understand correctly, Darktremor's A2SD moves more than the standard apps2sd, but still leaves libraries on the internal memory (please correct me if I'm wrong).
Link2sd
Link2sd is a more advanced application that does essentially the same thing as apps2sd. What really sets them apart, however, is link2sd is more complicated but offers more benefits. Link2sd works by moving apps from internal memory, then creating a symbolic link just like apps2sd. Link2sd can offer more space savings, however, since it can also move the user data/cache and the libraries to the sdcard. The down side to link2sd is that it requires you to add a partition to your sdcard, which is a little more advanced and requires an sdcard reader for your PC (unless you can get it to work via clockwork mod which I was unable).
Partitions
Partitioning refers to a basic computer/storage principal that applies to any permanent storage, like sdcards, hard drives, even writable cd's etc (but on cd's/dvd's they are typically referred to as sessions). When you partition something, it's not much different than "partitioning" a room in your home. You're essentially taking the space you have and dividing it so that part of that space is its own container and the other is its own container. The best partitioning software for windows that I have found is the one recommended by the link2sd guide "MiniTool Partition Wizard Home Edition" (google it). It's free, easy to use, and offers reliable partition resizing which is difficult to come by in free applications. I wont go into the nitty-gritty of how to add a partition to your sdcard here since that could end up being longer than this whole post. Google it if you need more help, there are countless resources on how to partition and repartition your sdcard.
Just remember, if you are unsure of which file system to use, use Fat32
Cautions:
When using any application that moves apps to the SD card, there are reasons why the default google application does not allow all apps to be moved to the SD card. One reason is, SD card storage *might* be slower than internal memory, causing performance issues (though this isn't always the case). Another and more important thing to remember is that if your phone requires an app in order to boot and operate correctly and that app is on your sdcard, if your sdcard is ever removed or damaged your phone will no longer boot. Workarounds for this have been built into Darktremor's A2SD, but failsafes aren't always fool-proof, so use your brain when it comes to what you move to the SD card. As a rule of thumb, you should try to avoid moving any system application or widget to the sd card.
Recap
Apps2SD:
Link2SD:
Hope this helps someone like me, please provide feedback! I hope I haven't gotten any of these details wrong, I am new to all of this myself. I have lots of linux experience, but very little android experience.
There has been a good deal of posts regarding this, but few with good details. In this post, it is my goal to be precise but also concise and still explain in laymans terms. If this is too basic for you, then move along nothing to see here. I just wanted to explain this so that others will not have to do the headache of digging for this information like I did.
Internal Storage
If you have a Prevail (and actually installed anything), more than likely you've seen the low internal storage warnings. Here's a brief explanation of what Internal storage is.
Your phone comes with internal flash storage (117MB to be exact, way too little for typical users) which is used both for the android system and any apps you have installed, and any that came installed on the phone. This is depleted quickly, as it is very small compared to many other phones. The "system" memory cannot be seen by you or your apps as it's reserved for system purposes, this is why you may see that using a custom rom you can install more apps before running out of space (because the rom and pre-installed apps take less space).
Apps2SD
When talking about "Apps2sd", you may be talking about at least 4 things (maybe more). Google's App2sd enabler style app (more common, allows you to use the default google application on a larger variety of apps and there are many named many different things), and Cyanogenmod's Apps2sd. Finally, the best option here is probably Darktremor's A2SD.
Symbolic Links
These applications all work in a very similar way. They move the app's .apk file onto the sd card then "link" to the file instead of leaving it on the internal memory. By "linking", I mean they use a symbolic link. A symbolic link is a file of very tiny size that is similar to a shortcut in windows. It differs because any program or thing trying to access the symbolic link will actually access the exact file the link points to, not the link itself. This means whatever is accessing this file is completely unaware (unless it's specifically looking) that the file it's trying to access doesn't reside where that program is looking.
Applications' 3 Types of Data
An app contains 3 things. It contains the app itself (the .apk file), user data & cache, and "library" files. User data and cache is basically some saved data that helps the app run better and remembers things like settings, high scores in games, etc. Library files are like DLL's on computers (dynamic link library in windows, .so or shared objects in linux). These are basically the "brains" of the application and tell it how to do certain functions like draw to the screen or other things like that. Sometimes many programs can use the same library file, which is why Linux (Android is Linux) more accurately describes these files as "shared objects". As I said before, Apps2sd only links the apps .apk file, leaving the user data & cache, and library files on the internal memory so apps still take up room and you can still run out of room. If I understand correctly, Darktremor's A2SD moves more than the standard apps2sd, but still leaves libraries on the internal memory (please correct me if I'm wrong).
CyanogenMod Wiki said:NOTE: Not all of the application's data is actually moved to the SD card; the dex files, private data directories, and native shared libraries remain in internal storage.
Link2sd
Link2sd is a more advanced application that does essentially the same thing as apps2sd. What really sets them apart, however, is link2sd is more complicated but offers more benefits. Link2sd works by moving apps from internal memory, then creating a symbolic link just like apps2sd. Link2sd can offer more space savings, however, since it can also move the user data/cache and the libraries to the sdcard. The down side to link2sd is that it requires you to add a partition to your sdcard, which is a little more advanced and requires an sdcard reader for your PC (unless you can get it to work via clockwork mod which I was unable).
Partitions
Partitioning refers to a basic computer/storage principal that applies to any permanent storage, like sdcards, hard drives, even writable cd's etc (but on cd's/dvd's they are typically referred to as sessions). When you partition something, it's not much different than "partitioning" a room in your home. You're essentially taking the space you have and dividing it so that part of that space is its own container and the other is its own container. The best partitioning software for windows that I have found is the one recommended by the link2sd guide "MiniTool Partition Wizard Home Edition" (google it). It's free, easy to use, and offers reliable partition resizing which is difficult to come by in free applications. I wont go into the nitty-gritty of how to add a partition to your sdcard here since that could end up being longer than this whole post. Google it if you need more help, there are countless resources on how to partition and repartition your sdcard.
Just remember, if you are unsure of which file system to use, use Fat32
Cautions:
When using any application that moves apps to the SD card, there are reasons why the default google application does not allow all apps to be moved to the SD card. One reason is, SD card storage *might* be slower than internal memory, causing performance issues (though this isn't always the case). Another and more important thing to remember is that if your phone requires an app in order to boot and operate correctly and that app is on your sdcard, if your sdcard is ever removed or damaged your phone will no longer boot. Workarounds for this have been built into Darktremor's A2SD, but failsafes aren't always fool-proof, so use your brain when it comes to what you move to the SD card. As a rule of thumb, you should try to avoid moving any system application or widget to the sd card.
Recap
Apps2SD:
- Easy to use
- Moves the largest part of an application
- Does not move all of the application
- Can still run out of internal storage even if every app is moved to the SD card
Link2SD:
- More difficult to set up
- Requires you to partition SDcard
- Can move all 3 parts of an application
- Less room can be taken on internal memory, practically nothing enabling you to install nearly unlimited apps.
Hope this helps someone like me, please provide feedback! I hope I haven't gotten any of these details wrong, I am new to all of this myself. I have lots of linux experience, but very little android experience.