Construir um módulo em particular no código fonte android
Quando faço alterações no código externo/webkit e o construo com
make -j4 libwebcore
ele compila o arquivo correspondente e atualiza o libwebcore.so e isso poupa-me muito tempo.
O mesmo se aplica às aplicações e também à construção apks.
o problema surge quando faço alterações na estrutura e dou o comando como
make -j4 framework
não está a compilar os ficheiros correspondentes.
Qualquer um pode ajudar-me!
2 answers
A pasta frameworks
contém muitas coisas, você tem que ser mais específico sobre como dizer fazer o que construir.
frameworks/base/cmds/input/src/com/android/commands/input/Input.java
.
Agora o ficheiro Android.mk
correspondente está localizado em:
frameworks/base/cmds/input/Android.mk
, que contém uma linha que diz: LOCAL_MODULE := input
.
Assim, o módulo que está a ser construído a partir da fonte chama-se input
, por isso chamo:
$ make input
Que reconstrói esse módulo específico.
Como informação de bónus, poderá usar o mmm
auxiliar e poderá indicar o caminho do módulo para compilar desta forma:
$ mmm frameworks/base/cmds/input
Ou usando mm
que apenas constrói o módulo na sua pasta de trabalho actual:
$ cd frameworks/base/cmds/input
$ mm
Normalmente uso mmm
como a minha ferramenta preferida.
Actualizar
Vejo que estás a falar especificamente do módulo chamadoframework
Só tentei modificar: frameworks/base/core/java/android/app/Dialog.java
, e fazer um: make framework
.
Isto parece recompilar muito bem o quadro. Em que ficheiro exactamente está a fazer alterações antes a correr ?
Em resposta ao seu comentário
Acabei de tentar modificar.mmm frameworks/base
assim como make framework
funciona perfeitamente para mim.
Se não funcionar para si, pode actualizar a sua pergunta com informações adicionais sobre a versão do android que está a construir, quais os comandos que está a escrever exactamente, e o resultado que está a ver?
mm
, mmm
, e outras funções convenientes fornecidas por sourcing do Arquivo build/envsetup.sh
:
Invoque . build/envsetup.sh
da sua consola para adicionar as seguintes funções ao seu ambiente:
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.