[Sprint Samsung Galaxy S III] timmetal6669:
Ok I'm gonna do my best here, i hope I've understood all your questions correctly;....

I think that really depends on a few things if they are the same phone across different carriers. ;

1. The app.. If its an app that's provided by a particular carrier such as Verizon or Sprint, (i.e. certain types of bloatware) OR a specific device (i.e. Note II S pen ); then I would imagine that the individual carrier would try to protect their app from being used on another carrier's device. It may be a monetary reason, or just being prideful. The 2 most common places to prevent an app from being used on a device are the csc/.xml's and the build.prop. The build prop identifies the device to the app, and the csc/ xml's as well as a few other files in bin, &xbin have files that allow permissions for which device can run the app. Although we know where to find these files, sometimes editing the file can render the device useless to the carriers service or make the device inoperable. Understand, I'm only addressing apks here and not how to port ROMS. Sometimes we can make edits to these files of course as we are all familiar with csc edits/build prop edits etc. system/ framework.apk rarely effects whether the app you're trying to install is compatible with the device, although occasionally the app itself is built for a particular platform, i.e. GB, ICS, or JB. Again the app will check for the platform and device/carrier ID via the methods mentioned above (usually) and if the app was developed and compiled with say Android 2.3 GB (armV6) in mind and your device is running Android 4.1.2 (armV7) , then even though the device is fully capable of handling the performance of the APK in question, the APK itself was made prior to the version of android you're running thus the apk will not recognize your version of android and give you the standard non compatible message even if it is or could be. I saw this personally when switching from GB to ICS. I lost some of my favorite games because they were no longer supported on ICS. Thankfully, I still had a back up and my phone was rooted so i could occasionally flash back and play all my favorite games.

2. The device itself. Often times Samsung or the device carrier may use slightly different hardware at the request of the carrier such as the radio for example, due to the type of towers and hardware the carrier uses to provide service to their customers. Although the phones across the different carriers may be similar and have generally the same specs, this does NOT mean it's the same phone. This can also carry over to other hardware on the device such as the processor, screen, etc. This can also effect whether or not an app can work on a particular device. A common example would be the s3 and international s3, and the galaxy s2 (most carriers) and sprints E4GT. (Sprint's gs2 variant )

Coroprate Developers name their apks according to provisions set by their employers, the function of the app, and sometimes for their own reasons. As far as how we know which apps do what? Sometimes we don't. Sometimes it's a matter of pulling the apk, decompiling it and looking at the codes and images to see the precise function of the apk. As for Amazon, its common knowledge that they like to incorporate adware and unnecessary apps for the sole function of selling something to the consumer. I'm not familiar with any apps from Amazon as I try to stay away from apps that contain any bloatware, adware, or malware that pushes for me to spend my money. Never the less to answer your question, it's still very possible that Amazon may include sub-apks that are used to help the Main.apk run. We see similar apps on stock ROM builds (bloatware) and in compressed files such as smali, lib and jar files.

An ISO image is another compression method that provides a "structured container" that preserves multiple file types and formats. It also can be used for faster data transfer to multiple different devices from dvd/cd players to computers, game consoles and android devices. If you've ever opened a TAR file for android or a DVD on your computer you probably have found an ISO. ISO's can be edited with many free programs online. For Windows, ISO recorder and plugin for your version of windows is one such program that makes editing and creating new ISO files easy. Happy "slipstreaming".

As far as a good method for backing up and restoring apps with android.. (Ok don't flame me here i know there are some devout Titanium Backup users, and Im not knocking the developer but yes Ive had issues using it too...) A free app in the playstore that ive been able to pretty much exploit to do my bidding is AppBackup & Restore. It creates a folder on your external sd (which clockwork doesn't format so its safe) called.. Yup, AppBackUp. The App itself pulls the latest copy of all your apps installed and can scan for currently installed apps on your device as well as give you a list of archived apps on your sd card with a very user friendly interface that even gives you the option to replace out dated apps with a more current version installed on the device. The exploit is just as easy. Simply take your apps you've kept on your pc or sd card and put them in the AppBackUp folder on your internal or external sd. Then after flashing the latest and greatest ROM, simply use the "my files" app that comes with all ROMS to navigate to the AppBackUp folder and install the AppBackUp.apk.. Don't forget to enable 3rd party apps in settings. Once installed again go to your app drawer and open up AppBackup. It easily re-installs all of the archived apps you select fresh. I prefer this method because it doesn't restore old conflicting data that can be hazardous to the system and cause force closes or worse issues. Ive been using this method since the gingerbread days.

Now, as for adding apps to ROM zips, some apps need to be installed after the ROM first boots unless you're excellent at writing the updater scripts and setting permissions. There are too many apps to mention that may or may not have this issue and scripting is a whole lesson in itself. Signing apps or ROM.tar files is only necessary if you are decompiling, editing and recompiling the apk or ROM.tar, but there is a work around for ROM.zips and apk's. After recompiling an apk, simply open the archive of a copy of the original unedited apk and the archive of your modified apk and drag the META-INF folder from the original archive to the modded archive and replace the META-INF folder in the archive of your modded apk or ROM.tar. There. You just signed your apk with its original signature. But to answer the question,... Can you put your apps in the ROM zip.. Well Yes. Absolutely. Developers do it all the time. Realize though that some apps (like the BANE of my existence G-apps lol) install an auto-update script that call to be updated regardless of if the app needs to be updated or its the latest version of the app. G-apps for example do this and install themselves to 2 locations. system/app and data/app. For this reason i always turn off automatic updates in the playstore settings. Generally speaking all system apps (or apps you want to MAKE permanent system apps) are located in system/app on your android device or respectively in your ROM zip and all non system apps (i.e. your latest Angry Birds in Space) areinstalled to data/app. Take note that not all apps that you "drop" into the data/app or system/app archive of a ROM zip will install correctly on first boot. Some apps (like Swype beta for example) need to write lib files(and have a log of it) to the device to run properly. These apps are a whole lot easier to just install normally after flashing the ROM. :)

Hey.. I don't wanna hear nothing k? He asked!!!! Lol