2012-07-03 9 views

Respuesta

23

Básicamente, está tratando de tener una compilación personalizada de AOSP donde la "Casa" es su aplicación. Si nos fijamos en /packages/apps/Launcher2, encontrará el código para la pantalla de inicio predeterminada.

Si nos fijamos en el archivo AndroidManifest.xml allí, verá algo como esto:

 <activity 
     android:name="com.android.launcher2.Launcher" 
     android:launchMode="singleTask" 
     android:clearTaskOnLaunch="true" 
     android:stateNotNeeded="true" 
     android:theme="@style/Theme" 
     android:screenOrientation="nosensor" 
     android:windowSoftInputMode="stateUnspecified|adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.MONKEY"/> 
     </intent-filter> 
    </activity> 

essentialy, esto dice que esta actividad reacciona con el androide

.intent.category.HOME intento.

Cuando el sistema termina de arrancar (el ActivityManager más específicamente), envía esa intención. Por lo tanto, si desea que su aplicación se inicie en lugar del Iniciador, simplemente cree una aplicación con un filtro de intención similar y elimine el Launcher2 predeterminado (sacarlo de la lista en build/target/product/generic.mk y ponerlo el tuyo en su lugar). También asegúrese de que el archivo correspondiente .mk tiene algo como esto:

LOCAL_OVERRIDES_PACKAGES := Home 

siempre y cuando su aplicación no proporciona una forma para que el usuario lanzar otras aplicaciones que utilizan iconos (como el lanzador hace), ninguna otra aplicación se iniciará; a menos que, por supuesto, algo envíe un intento de inicio de actividad desde otra ruta diferente a la controlada por su aplicación, digamos usando el comando "am" en el shell de Android del objetivo.

+0

¡qué gran respuesta! Obtuve más de esto que una lectura completa de doc. –

+0

es 'Home' en' LOCAL_OVERRIDES_PACKAGES: = Home' la aplicación con la que está reemplazando Launcher2. –

+0

Creo que 'Home' es el nombre del módulo del iniciador actual utilizado en AOSP. Puede ser que el viejo Android construya el módulo Home usado para eso, hoy en día es Launcher2. Por lo tanto, se deben usar 'LOCAL_OVERRIDES_PACKAGES: = Launcher3', o incluso' LOCAL_OVERRIDES_PACKAGES: = Launcher2 Launcher3'. Cyanogenmod 12 usa Trebuchet launcher, por lo que para CM build usaría 'LOCAL_OVERRIDES_PACKAGES: = Launcher3 Trebuchet' – Mixaz

3

Según el sonido de su pregunta, quiere crear su propia compilación del sistema operativo Android. Eso va a ser más complicado que desarrollar aplicaciones normales de Android y, en consecuencia, tendrá que leer mucho, especialmente el código fuente del sistema operativo Android.

Te recomiendo que comiences here at the Android Open Source Project.

3

Mire la fuente del sistema de recuperación; es un entorno de arranque alternativo que es mucho, mucho más simple. Hay algunas versiones de terceros con soporte de pantalla táctil, también.

Cuestiones relacionadas