Quantcast
Channel: Статьи Intel Developer Zone
Viewing all articles
Browse latest Browse all 133

Сборка модуля Android AOSP с помощью компилятора Intel® C++ для Android*

$
0
0

В этой статье описывается сборка модулей с помощью компилятора Intel C++ для Android* (ICC) и их интеграция в сборку проектов Android с открытым исходным кодом (AOSP). Модуль обычно представляет собой общую библиотеку или приложение, которое войдет в состав образа Android на устройстве. В качестве примера можно назвать аудио- и видеокодеки, приложения мультимедиа.

Сборка отдельного модуля вне процесса сборки AOSP

Сборка модуля Android в компиляторе Intel® C++ для Android* аналогична сборке с помощью набора инструментов GCC. Следуйте руководству Приступая к работе для компиляции модуля с помощью системы сборки NDK или автономной цепочки инструментов.

Копирование заранее собранного модуля в образ AOSP в ходе процесса сборки

После компиляции и компоновки модуль можно интегрировать в процесс сборки AOSP в виде заранее собранной библиотеки. Он будет включен в системный образ Android. 

Создайте файл Android.mk внутри корневого каталога дерева AOSP со следующим содержимым:

include $(CLEAR_VARS)
LOCAL_MODULE := <library_name>
LOCAL_MODULE_SUFFIX:=.so
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_SRC_FILES := <library_file_name>
include $(BUILD_PREBUILT)

Местозаполнители <library_name> и <library_file_name> должны содержать имя файла библиотеки на хосте и в месте назначения. Обычно они одинаковы. 

Сборка модуля в составе процесса сборки AOSP

Предоставляемые корпорацией Intel версии дерева исходного кода AOSP должны быть уже подготовлены к использованию ICC в составе процесса сборки. Можно определить, поддерживается ли ICC в дереве исходного кода, проверив наличие файла <AOSP_ROOT>build/core/icc_config.mk exists. 

Настройка среды сборки

Перед использованием компилятора нужно настроить путь к компилятору в файле <AOSP_ROOT>build/core/icc_config.mk. Укажите путь к ICC, изменив переменную TARGET_ICC_TOOLS_PREFIX. К примеру:

TARGET_ICC_TOOLS_PREFIX := /opt/intel/cc_android_14.0.1.017/bin/

Здесь есть пара полезных для настройки переменных. Все упоминаемые переменные можно также указать напрямую в командной строке.

  • ICC_MODULES
    Принудительная компиляция указанных модулей с помощью ICC вне зависимости от компилятора по умолчанию. 
  • GCC_MODULES
    Принудительная компиляция указанных модулей с помощью GCC вне зависимости от компилятора по умолчанию.
  • ICC_IPO_MODULES
    Указывает модули, которые должны быть скомпилированы с межпроцедурной оптимизацией (IPO), если модуль компилируется с помощью ICC.
  • ICC_FREESTANDUNG_MODULES
    Указывает модули, не компонующиеся со стандартными библиотеками. Подробные сведения см. в документации. Этот параметр не следует изменять 

Сборка модуля

Если модуль, который следует компилировать в ICC, уже настроен с помощью  переменной ICC_MODULES, никаких дополнительных действий не требуется. Просто запустите компиляцию обычным образом:


	source build/envsetup.sh
lunch
make flashfiles

Также можно указать модуль, который следует компилировать в ICC, непосредственно в командной строке: 


	source build/envsetup.sh
lunch
make ICC_MODULES=libskia ICC_STATIC_MODULES=libskia ICC_IPO_MODULES=libskia flashfiles

Устранение неполадок

Для компиляции модулей, входящих в состав AOSP, могут потребоваться дополнительные исправления. Обратитесь к представителю корпорации Intel при возникновении проблем.


Viewing all articles
Browse latest Browse all 133

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>