AOSP建立在自定义设备上

时间:2013-03-30 17:38:18

标签: android android-source

我正在建造AOSP 4.2 Jelly Bean。 当我构建默认的full-eng配置并在模拟器上运行它时,一切正常。

我需要构建自定义设备并运行它(在emulator上 - 用于测试它是否真的有效,并且在真实设备上)。 当我根据full_base.mk文件创建自定义设备,并在emulator - emulator上运行时,只需在带有ANDROID文本的第一个屏幕上挂起,并且根本不会加载。 在out out目录之后我有system.img, userdata.img, ramdisk.img。这就是构建自定义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

2 个答案:

答案 0 :(得分:12)

您似乎对AOSP构建系统有很好的把握,尤其是如何添加新设备。

full-eng仅针对模拟器。通常,您可以为相关设备构建自定义.img,因为硬件驱动程序在设备是否正常工作中发挥着重要作用。

例如,如果您有groupermaguro,则最终会为该设备构建而不是full-englunch会在您将其添加到device/vendor/树时列出其他设备。 Google在其[网站] [https://developers.google.com/android/nexus/drivers]上提供了为Nexus设备系列构建所需的文件。

您正在构建的自定义设备是什么?如果您的设备已经商业销售,XDA上的某个人可能会尝试将AOSP和朋友(CM,AOKP等)移植到您的设备上。

即使您的设备不在XDA上,也有可能与AOSP上可以找到的许多其他设备共用的硬件。那时,你必须选择特定于驱动程序的代码,比如wifi芯片组,声音设备等。

我没有一个很好的底漆来构建我的头顶,但http://wiki.cyanogenmod.org/w/Main_Page应该对你很有帮助。自创建以来,这个wiki已经有了很大的改进,现在有了大量有用的信息。

答案 1 :(得分:1)

您缺少某些供应商的驱动程序。 转到:https://developers.google.com/android/nexus/drivers

下载适用于确切设备的相应驱动程序。将* .sh文件放在aosp top目录中。 运行每个shell文件并接受条款。

然后重新编译代码!