Подтвердить что ты не робот

Создание конкретного модуля в исходном коде Android

Я работаю над исходным кодом Android, который я скачал с source.android.com.

После полной сборки я прошел этот сайт http://elinux.org/Android_Build_System, где рассказывается о системе сборки Android.

Когда я делаю изменения во внешнем коде/коде webkit и собираю его с помощью

make -j4 libwebcore компилирует соответствующий файл и обновляет libwebcore.so, и это экономит мне много времени. То же самое относится к приложениям, а также для создания apks.

Проблема возникает, когда я делаю изменения в рамках и даю команду как make -j4 framework не компилирует соответствующие файлы. Может кто-нибудь помочь мне!

4b9b3361

Ответ 1

В папке frameworks содержится много вещей, вы должны быть более конкретными в том, чтобы сообщать, что делать.

Например, я внес изменения: frameworks/base/cmds/input/src/com/android/commands/input/Input.java. Теперь соответствующий файл Android.mk находится в: frameworks/base/cmds/input/Android.mk, который содержит строку: LOCAL_MODULE := input.

Таким образом, модуль, строящийся из источника, называется input, поэтому я вызываю:

$ make input

Что перестраивает этот конкретный модуль.

В качестве информации о бонусе вы можете использовать помощник mmm, и вы можете указать путь к модулю, который будет построен следующим образом:

$ mmm frameworks/base/cmds/input

или используя mm, который только строит модуль в вашем текущем рабочем каталоге:

$ cd frameworks/base/cmds/input
$ mm

Обычно я использую mmm в качестве своего предпочтительного инструмента.


Обновление

О, я вижу, вы можете говорить конкретно о модуле под названием framework

Я просто попытался изменить: frameworks/base/core/java/android/app/Dialog.java и сделать a: make framework.

Это похоже на то, что перекомпилировать структуру просто отлично. В каком файле вы вносите изменения, прежде чем запускать make framework?


В ответ на ваш комментарий

Я просто попытался изменить frameworks/base/core/java/android/webkit/WebView.java. mmm frameworks/base а также make framework отлично работает для меня.

Если это не сработает для вас, можете ли вы обновить свой вопрос с дополнительной информацией о том, какую версию для Android вы создаете, какие команды вы вводите точно, и результаты, которые вы видите?

Ответ 2

Вот более подробное описание mm, mmm и других удобных функций, предоставляемых источником файла build/envsetup.sh:

Вызовите . build/envsetup.sh из своей оболочки, чтобы добавить в свою среду следующие функции:

   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.

Пожалуйста, проверьте комментарии к файлу build/envsetup.sh, чтобы увидеть полный список функций.