AOSP построен на настраиваемом устройстве

Я строю AOSP 4.2 Jelly Bean. Все нормально, когда я создаю конфигурацию по умолчанию full-eng и запускаю ее на эмуляторе.

Мне нужно создать собственное устройство и запустить его (на emulator - для тестирования, если он действительно работает, и на реальном устройстве). Когда я создаю настраиваемое устройство на основе файла full_base.mk и запускаю его на emulator - emulator, просто зависает на первом экране с текстом ANDROID и не будет загружаться вообще. У меня есть system.img, userdata.img, ramdisk.img после сборки из каталога. Это все, что мне нужно для создания пользовательского AOSP и запуска его на устройстве? Могу ли я запустить свою сборку на эмуляторе или на реальном устройстве?

Должен ли я иметь что-то дополнительное для создания AOSP для реального устройства: ядро, драйверы устройств и т.д.?

файлы папок пользовательских устройств (устройство/my_company/my_product):

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

ifneq ($(filter my_product,$(TARGET_DEVICE)),)
include $(call all-makefiles-under,$(LOCAL_PATH))
endif

AndroidProducts.mk

PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/full_myproduct.mk

BoardConfig.mk

TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := true

TARGET_ARCH := arm

TARGET_ARCH_VARIANT := armv7-a
TARGET_CPU_VARIANT := generic
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi

HAVE_HTC_AUDIO_DRIVER := true
BOARD_USES_GENERIC_AUDIO := true

# no hardware camera
USE_CAMERA_STUB := true

# Enable dex-preoptimization to speed up the first boot sequence
# of an SDK AVD. Note that this operation only works on Linux for now
ifeq ($(HOST_OS),linux)
  ifeq ($(WITH_DEXPREOPT),)
    WITH_DEXPREOPT := true
  endif
endif

# Build OpenGLES emulation guest and host libraries
BUILD_EMULATOR_OPENGL := true

# Build and enable the OpenGL ES View renderer. When running on the emulator,
# the GLES renderer disables itself if host GL acceleration isn't available.
USE_OPENGL_RENDERER := true

full_myproduct.mk

$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)

#DEVICE_PACKAGE_OVERLAYS :=
#PRODUCT_PACKAGES +=
#PRODUCT_COPY_FILES +=

PRODUCT_NAME := full_myproduct
PRODUCT_DEVICE := myproduct
PRODUCT_MODEL := Customized Android
PRODUCT_BRAND := Android

vendorsetup.sh

add_lunch_combo full_myproduct-userdebug

Ответ 1

Кажется, что у вас есть хорошая поддержка системы сборки AOSP, особенно о том, как добавлять новые устройства.

full-eng предназначен только для эмулятора. Обычно вы создаете пользовательский .img для рассматриваемого устройства, поскольку драйверы оборудования играют большую роль в работе устройства или нет.

Например, если у вас есть grouper или maguro, вы должны создать для этого устройства вместо full-eng. lunch должен указывать дополнительные устройства при их добавлении в деревья device/ и vendor/. Google предоставляет файлы, необходимые для создания линии устройств Nexus на своем [сайте] [https://developers.google.com/android/nexus/drivers].

Какое пользовательское устройство вы строите? Если ваше устройство продано коммерчески, есть вероятность, что кто-то из XDA пытается подключить AOSP и друзей (CM, AOKP и т.д.) К вашему устройству.

Даже если ваше устройство не находится на XDA, скорее всего, у него есть аппаратное обеспечение, общее с кучей других устройств, которые вы можете найти на AOSP. В этот момент вам придется переходить на вишневые куски кода, например, на чипсеты Wi-Fi, звуковые устройства и т.д.

У меня нет хорошего учебника для создания верхней части головы, но http://wiki.cyanogenmod.org/w/Main_Page должен быть вам полезен. Эта вики значительно улучшилась с момента ее создания и теперь содержит множество полезных сведений.

Ответ 2

Вам не хватает некоторых драйверов поставщиков. goto: https://developers.google.com/android/nexus/drivers

загрузить соответствующие драйверы для точного устройства. поместите файл *.sh в верхний каталог aosp. запустите каждый файл оболочки и примите условия.

затем перекомпилируйте код!