Construir um módulo em particular no código fonte android

Estou a trabalhar num código-fonte android que descarreguei de source.android.com.

Depois de uma construção completa, passei por este sítio. http://elinux.org/Android_Build_System o que explica o sistema de construção 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!

Author: jdm, 2012-10-30

2 answers

A pasta frameworks contém muitas coisas, você tem que ser mais específico sobre como dizer fazer o que construir.

Por exemplo, fiz uma mudança na: 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 chamado framework 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?

 37
Author: Bjarke Freund-Hansen, 2012-10-31 12:36:35
Aqui estão descrições mais completas de 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.
 21
Author: Wonil, 2018-04-06 06:57:11