android - AOSP 在自定义设备上构建

标签 android android-source

我正在 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对于有问题的设备,因为硬件驱动程序在设备是否工作方面起着重要作用。

例如,如果您有一个 groupermaguro ,您最终会为该设备构建而不是 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/

相关文章:

android - 密码切换图标 textinputlayout 覆盖错误图标

java - 使用指向单个方法的按钮区分单击了android按钮数组中的哪个android按钮

android - 从android源代码构建

java - AOSP 在 Android M _r46 标签上生成错误

android - 替代 git-repo ( aosp repo )

android - 在一个位置为布局中的所有 TextView 元素设置样式

java - Android中如何识别滑动?

android - 如何确定 Firebase 用户是否使用电子邮件和密码身份验证登录

android - Android 本地化的工作原理

Android 只能使用 make 版本 3.81 构建