para - manual de programacion android pdf
Construyendo un módulo particular en el código fuente de Android (2)
Estoy trabajando en un código fuente de Android que he descargado de source.android.com.
Después de una compilación completa pasé por este sitio http://elinux.org/Android_Build_System que explica el sistema de compilación de Android.
Cuando hago cambios en el código externo / webkit y lo construyo con
make -j4 libwebcore
compila el archivo correspondiente y actualiza libwebcore.so, y me ahorra mucho tiempo. Lo mismo se aplica a las aplicaciones y también para construir apks.
El problema surge cuando realizo cambios en el marco y doy al comando como make -j4 framework
no compila los archivos correspondientes. ¡Alguien puede ayudarme!
Aquí hay descripciones más completas de mm
, mmm
, y otras funciones convenientes proporcionadas por la fuente del archivo build/envsetup.sh
:
Invocar . build/envsetup.sh
desde su shell para agregar las siguientes funciones a su entorno:
lunch: lunch <product_name>-<build_variant>
tapas: tapas [<App1> <App2> ...] [arm|x86|mips|armv5] [eng|userdebug|user]
croot: Changes directory to the top of the tree.
m: Makes from the top of the tree.
mm: Builds all of the modules in the current directory, but not their dependencies.
mmm: Builds all of the modules in the supplied directories, but not their dependencies.
To limit the modules being built use the syntax: mmm dir/:target1,target2.
mma: Builds all of the modules in the current directory, and their dependencies.
mmma: Builds all of the modules in the supplied directories, and their dependencies.
cgrep: Greps on all local C/C++ files.
jgrep: Greps on all local Java files.
resgrep: Greps on all local res/*.xml files.
godir: Go to the directory containing a file.
Los frameworks
carpetas contienen muchas cosas, tiene que ser más específico acerca de decir qué construir.
Por ejemplo, hice un cambio en: frameworks/base/cmds/input/src/com/android/commands/input/Input.java
. Ahora el archivo Android.mk
correspondiente se encuentra en: frameworks/base/cmds/input/Android.mk
, que contiene una línea que dice: LOCAL_MODULE := input
.
Por lo tanto, el módulo que se está construyendo desde la fuente se llama input
, así que llamo:
$ make input
Que reconstruye ese módulo específico.
Como información adicional, puede usar el ayudante de mmm
y puede especificar la ruta del módulo para construir así:
$ mmm frameworks/base/cmds/input
o usando mm
que simplemente construye el módulo en su directorio de trabajo actual:
$ cd frameworks/base/cmds/input
$ mm
Normalmente uso mmm
como mi herramienta preferida.
Actualizar
Oh, veo que podría estar hablando específicamente sobre el módulo llamado framework
Acabo de intentar modificar: frameworks/base/core/java/android/app/Dialog.java
, y hacer un: make framework
.
Esto parece volver a compilar el marco bien. ¿En qué archivo exactamente estás haciendo cambios antes de ejecutar make framework
?
En respuesta a tu comentario.
Acabo de intentar modificar los frameworks/base/core/java/android/webkit/WebView.java
. mmm frameworks/base
, así como el make framework
funcionan perfectamente bien para mí.
Si no funciona para usted, ¿puede actualizar su pregunta con información adicional sobre qué versión de Android está construyendo, qué comandos está escribiendo exactamente y cuál es el resultado que está viendo?