我正在 build AOSP 4.2 Jelly Bean
.
当我构建默认值时一切正常 full-eng
配置并在模拟器上运行。
我需要构建自定义设备并运行它(在 emulator
上 - 用于测试它是否真的有效,并在真实设备上运行)。
当我基于 full_base.mk
创建自定义设备时文件,并在 emulator
上运行它- emulator
只是卡在第一个带有 ANDROID 文本的屏幕上,根本不会加载。
我有system.img, userdata.img, ramdisk.img
在 out 目录中构建之后。这是我构建自定义 AOSP 并在设备上运行它所需要的全部吗?我可以在模拟器上运行我的构建还是只在真实设备上运行?
我是否应该有一些额外的东西来为真实设备构建 AOSP:内核、设备驱动程序等?
自定义设备文件夹文件(device/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
最佳答案
看来您对 AOSP 构建系统掌握得很好,尤其是如何添加新设备。
full-eng
仅针对模拟器。通常你构建自定义 .img
对于有问题的设备,因为硬件驱动程序在设备是否工作方面起着重要作用。
例如,如果您有一个 grouper
或 maguro
,您最终会为该设备构建而不是 full-eng
. lunch
应该在将其他设备添加到 device/
时列出这些设备和 vendor/
树。 Google 在其[网站][https://developers.google.com/android/nexus/drivers] 上提供了构建 Nexus 设备系列所需的文件。
您正在构建的定制设备是什么?如果您的设备是商业销售的,那么 XDA 上的某个人可能正在尝试将 AOSP 和 friend (CM、AOKP 等)移植到您的设备。
即使您的设备不在 XDA 上,它的硬件也可能与您可以在 AOSP 上找到的许多其他设备相同。到那时,您必须挑选特定于驱动程序的代码位,例如 wifi 芯片组、声音设备等。
我没有好的入门书来构建我的头脑,但是 http://wiki.cyanogenmod.org/w/Main_Page应该对你很有帮助。这个 wiki 自创建以来有了很大的改进,现在有很多有用的信息。
关于android - AOSP 在自定义设备上构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721457/