El AndroidManifest

Aqui esta traducido el articulo , muy importante para aquellos que quieren aprender Android. Existen algunas partes que no se traducieron bien, debido a falta de conocimiento, esperemos que conforme vaya aprendiendo lo componga.

Este post es una traduccion de manifest.
<manifest>
Sintaxis:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="string"
              android:sharedUserId="string"
              android:sharedUserLabel="string resource" 
              android:versionCode="integer"
              android:versionName="string"
              android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
        . . .
    </manifest>
Incluido en:
    none
Debe tener:
    <application>

Puede tener:
    <instrumentation>
    <permission>
    <permission-group>
    <permission-tree>
    <uses-configuration>
    <uses-permission>
<uses-sdk>
Descripción:
Es el elemento raiz del archivo AndroidManifest.xml file. Debe de tener un elemento <application> y especificar los atributos xmlns:android y package. 
 

Atributos:

xmlns:android
Define el namespace de Android. Este atributo siempre será "http://schemas.android.com/apk/res/android".
package
Se basa en el estandar que usa Java para organizar la aplicación en paquetes. El nombre debe de ser unico, y puede contener letras mayusculas y minusculas (de la "A" a la "Z"), numeros y underscores ("_"). Sin embargo cada package individual debe de comenzar con letras.
Para evitar conflictos con otros desarrolladores, deberias usar el nombre del dominio de Internet que te pertenece, para nombrar tus package(en sentido contrario). Por ejemplo, las aplicaciones publicadas por Google inician con com.google. Nunca debes de utilizar el namespace com.example cuando publicas tu aplicación.
El nombre del package sirve como un identificador unico para la aplicacion. Tambien es el nombre por defecto del proceso de la aplicacion (lee el elemento del proceso perteneciente al atributo del proceso en <application>) y la afinidad por defecto de una tarea de una actividad(lee el atributo del elemento taskAffinity de <activity>)
Precaución:
Una vez que hayas publicado tu aplicación, no puedes cambiar el nombre del package definido en la identidad de tu aplicacion, pero si tu lo cambias, entonces va a ser considerada como una diferente aplicacion y un diferente usuario de las previas versiones y no podra actualizarse a una nueva version.
android:sharedUserId
El nombre de un ID de usuario de Linux, que es compartido con otras aplicaciones. Por defecto, Android asigna a cada aplicacion su propio y unico ID de usuario. Sin embargo, si el valor de este atributo  es igual a dos o mas aplicaciones, ellos compartiran el mismo ID, siempre y cuando sean firmados por el mismo certificado. La aplicacione con el mismo ID de usuario tendran acceso a la informacion de otras aplicaciones y, si se quiere, se ejecutaran en el mismo proceso.
android:sharedUserLabel
Es una etiqueta legible para el ID de usuario compartido. La etiqueta debe establecerse como una referencia a un recurso de string, no puede ser una raw string.
Este atributo fue introducido en la API Level 3. Esto es util solamente si el atributo sharedUserId es tambien instanciado.
android:versionCode
Es el numero de la version interna. Este numero es usado solamente para determinar si una version es mas reciente que otra, con los numeros mas altos se indica las versiones mas recientes. Este no es el numero de version mostrado a los usuarios; el que se muestra a los usuarios es el atributo versionName. 
El valor instanciado debe ser un integer, como "100". Puedes definirlo sin embargo si tu quieres, como un long siempre y cuando la version siguiente tenga un valor mayor. O tu puedes traducir el numero de version en el formato "x.y" a un integer codificando la "x" y la "y" por separado, dividiendo los 32 bits del integer en 16 bits y usando el inferior y superior para la "x" y la "y".
android:versionName
El numero de version se muestra a los usuarios, Este atributo puede ser establecido usando una raw string o una string resource. La string solo tiene el proposito de ser mostrado a los usuarios. El atributo versionCode toma el número de versión significativa usado internamente.
android:installLocation
Lugar en donde se va a instalar por default la aplicacion.  Los siguientes valores son reconocidos:
"internalOnly"
La aplicacion debe ser instalada solamente en el almacenamiento interno del dispositivo. Si este es valor es instanciado, la aplicacion nunca podra ser instalada en el almacenamiento externo (tarjeta SD). Si el almacenamiento interno esta lleno, entonces el sistema no instalara la aplicacion. Este ultimo es el comportamiento por default si tu no defines android:installLocation.
"auto"
Es posible que la aplicacion pueda ser instalada en un almacenamiento externo, pero el sistema instalara por default la aplicacion en el almacenamiento interno. Si el almacenamiento interno esta lleno, entonces el sistema la instalara en el almacenamiento externo. Una vez instalado, el usuario podra mover la aplicacion a cualquiera de los almacenamientos a traves de la configuracion del sistema.
"preferExternal"
De preferencia la aplicacion se instalara en el almacenamiento externo. No se garantiza que el sistema lo lleve a cabo siempre. La aplicacion podra ser instalada en el almacenamiento interno si el externo no esta accesible o esta lleno, o si la aplicacion usa el mecanismo forward-locking (no soportado en almacenamiento esterno). Una vez instalado, el usuario puede mover la aplicacion a otro almacenamiento, interno o externo a traves de la configuracion del sistema.
Precaucion: Si la aplicacion usa Google Play's Copy Protection, no podra ser instalada en una SD card. Sin embargo, si usas Google Play's Application Licensing, la aplicacion puede ser instalada en el almacenamiento interno o externo, incluido el SD card.
Nota: Por default, tu aplicacion sera instalada en el almacenamiento interno y no puede instalada en el almacenamiento externo, a pesar que se haya definido este atributo con "auto" o "preferExternal".
Cuando una aplicacion es instalada en el almacenamiento externo:
El archivo .apk es guardado en el almacenamiento externo, pero cualquier informacion perteneciente a la aplicacion (como la base de datos) es guardada en la memoria interna del dispositivo.
El contenedor en donde el archivo .apk es guardado esta encriptado con una llave que permite a la aplicacion operar solamente en el dispositivo instalado. El usuario no puede instalar la SD card a otro dispositivo y usar la aplicacion instalada en la SD car.  Considera, multiples SD cards pueden ser usadas con el mismo dispositivo.
Cuando el usuario solicita que la aplicacion sea trasladada al almacenamiento interno.
El usuario puede tambien solicitar que la aplicacion sea trasladada del almacenamiento interno al externo. Sin embargo el sistema no lo permitira mover la aplicacion al almacenamiento externo si el atributo esta establecido como internalOnly, el cual es el valor por defecto.
Lee App Install Location para mas informacion relacionada con el uso de este atributo, incluyendo como mantener la compatibilidad hacia atras.
Introducido en: API Level 8.
Introducido en: API Level 1 para todos los atributos a excepcion de que en la descripcion del atributo mencione otra cosa.
Lee tambien
<application>