android - AOSP 基于自定义设备 - 模拟器构建

标签 android android-emulator android-source

我正在学习 AOSP 构建系统,尤其是如何添加新设备。
我在默认的全英配置上构建 android-6.0.1_r46 Marshmallo 并在模拟器上运行它。它工作正常。

但是,当我尝试在/device/my_company/my_product/之类的源树中添加我的自定义设备而不是成功构建并在模拟器上运行它时 - 模拟器只是挂断了黑屏。根本不加载。

我怎样才能让模拟器工作?
我的makefile如下所示..

安卓.mk

ifneq ($(filter my_product, $(TARGET_DEVICE)),)

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

include $(call all-makefiles-under,$(LOCAL_PATH))

endif

AndroidProducts.mk
PRODUCT_MAKEFILES := \
 $(LOCAL_DIR)/aosp_my_product.mk 

vendorsetup.sh
add_lunch_combo aosp_my_product-eng

aosp_my_product.mk
#$(call inherit-product, device/generic/mini-emulator-armv7-a-neon/mini_emulator_common.mk) //copied to device.mk

$(call inherit-product, device/my_company/my_product/device.mk)

#Overrides

PRODUCT_NAME := aosp_my_product
PRODUCT_DEVICE :=my_product
PRODUCT_MODEL := Customized Android
PRODUCT_MANUFACTURER :=my_company
PRODUCT_BRAND :=Android

PRODUCT_LOCALES := en_US 
PRODUCT_PACKAGE_OVERLAYS := device/my_company/my_product/overlay
PRODUCT_CHARACTERISTICS := nosdcard

设备.mk
 PRODUCT_NAME :=aosp_my_product
    PRODUCT_DEVICE :=my_product
    PRODUCT_MODEL := Customized Android
    PRODUCT_MANUFACTURER := my_company
    PRODUCT_BRAND := Android

    LOCAL_KERNEL := prebuilts/qemu-kernel/arm/kernel-qemu-armv7
    PRODUCT_COPY_FILES += \
    $(LOCAL_KERNEL):kernel

# common stuffs across mini_emulators

PRODUCT_PACKAGES += \
    audio.primary.goldfish \
    camera.goldfish \
    gps.goldfish \
    gralloc.goldfish \
    lights.goldfish \
    power.goldfish \
    sensors.goldfish \
    vibrator.goldfish \
    qemu-props \
    qemud \
    libGLES_android \
    libGLESv1_CM_emulation \
    lib_renderControl_enc \
    libEGL_emulation \
    libGLESv2_enc \
    libOpenglSystemCommon \
    libGLESv2_emulation \
    libGLESv1_enc \
    rild


PRODUCT_COPY_FILES += \
    device/generic/mini-emulator-armv7-a-neon/init.mini-emulator.rc:root/init.goldfish.rc \
    device/generic/goldfish/init.goldfish.sh:system/etc/init.goldfish.sh \
    device/generic/goldfish/ueventd.goldfish.rc:root/ueventd.goldfish.rc \
    device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
    frameworks/native/data/etc/android.hardware.camera.autofocus.xml:system/etc/permissions/android.hardware.camera.autofocus.xml \
    frameworks/av/media/libeffects/data/audio_effects.conf:system/etc/audio_effects.conf \
    hardware/libhardware_legacy/audio/audio_policy.conf:system/etc/audio_policy.conf \
    device/generic/goldfish/camera/media_profiles.xml:system/etc/media_profiles.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:system/etc/media_codecs_google_audio.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:system/etc/media_codecs_google_telephony.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:system/etc/media_codecs_google_video.xml \
    device/generic/goldfish/camera/media_codecs.xml:system/etc/media_codecs.xml \
    device/generic/goldfish/fstab.goldfish:root/fstab.goldfish

BoardConfig.mk
# config.mk
#
# Product-specific compile-time definitions.
#
# The generic product target doesn't have any hardware-specific pieces.


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

SMALLER_FONT_FOOTPRINT := true
MINIMAL_FONT_FOOTPRINT := true
# Some framework code requires this to enable BT
BOARD_HAVE_BLUETOOTH := true
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/generic/common/bluetooth

BOARD_USES_GENERIC_AUDIO := true

USE_CAMERA_STUB := true

BUILD_EMULATOR_OPENGL := true
USE_OPENGL_RENDERER := true

BOARD_USE_LEGACY_UI := true
VSYNC_EVENT_PHASE_OFFSET_NS := 0

TARGET_USERIMAGES_USE_EXT4 := true



BOARD_BOOTIMAGE_PARTITION_SIZE := 576716800
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 576716800
BOARD_USERDATAIMAGE_PARTITION_SIZE := 576716800

BOARD_CACHEIMAGE_PARTITION_SIZE := 69206016
BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_FLASH_BLOCK_SIZE := 512
TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true

BOARD_SEPOLICY_DIRS += build/target/board/generic/

#ifndef PDK_FUSION_PLATFORM_ZIP
#ifeq ($(HOST_OS),linux)
# WITH_DEXPREOPT := true
#endif
#endif # PDK_FUSION_PLATFORM_ZIP

输出/目标/产品/my_product$ ls
android-info.txt  hardware-qemu.ini         symbols
cache             installed-files.txt       system
cache.img         kernel                    system.img
clean_steps.mk    obj                       userdata.img
data              previous_build_config.mk  userdata-qemu.img
dex_bootjars      ramdisk.img
gen               root

adb 设备显示
emulator-5554 离线

[cmd]~/aosp$ 模拟器 &
[1] 17183


[cmd]~/aosp$ 模拟器 -verbose
    emulator:Found ANDROID_PRODUCT_OUT: /home/azahar/aosp/out/target/product/my_product
    emulator:Found build target architecture: arm
    emulator:Looking for ranchu emulator backed for arm CPU
    emulator:Probing program: ./emulator64-ranchu-arm
    emulator:Probing program: ./emulator-ranchu-arm
    emulator:Probing path for: emulator64-ranchu-arm
    emulator:Probing path for: emulator-ranchu-arm
    emulator:Looking for emulator-arm to emulate 'arm' CPU
    emulator:Probing program: ./emulator64-arm
    emulator:Probing program: ./emulator-arm
    emulator:Probing path for: emulator64-arm
    emulator:Found target-specific emulator binary: /home/azahar/aosp/prebuilts/android-emulator/linux-x86_64/emulator64-arm
    emulator:GPU emulation is disabled
    emulator: found Android build root: /home/azahar/aosp
    emulator: found Android build out:  /home/azahar/aosp/out/target/product/my_product
    emulator: Read property file at /home/azahar/aosp/out/target/product/my_product/system/build.prop
    emulator: Cannot find boot properties file: /home/azahar/aosp/out/target/product/my_product/boot.prop

    emulator: Found target API sdkVersion: 23

    emulator: virtual device has no config file - no problem
    emulator: using core hw config path: /home/azahar/aosp/out/target/product/my_product/hardware-qemu.ini
    emulator: found skin-specific hardware.ini: /home/azahar/aosp/development/tools/emulator/skins/HVGA/hardware.ini
    emulator: autoconfig: -skin HVGA
    emulator: autoconfig: -skindir /home/azahar/aosp/development/tools/emulator/skins
    emulator: found skin-specific hardware.ini: /home/azahar/aosp/development/tools/emulator/skins/HVGA/hardware.ini
    emulator: keyset loaded from: /home/azahar/.android/default.keyset
    emulator: trying to load skin file '/home/azahar/aosp/development/tools/emulator/skins/HVGA/layout'
    emulator: skin network speed: 'full'
    emulator: skin network delay: 'none'
    emulator: autoconfig: -kernel /home/azahar/aosp/out/target/product/my_product/kernel
    emulator: Auto-detect: Kernel image requires legacy device naming scheme.
    emulator: Auto-detect: Kernel does not support YAFFS2 partitions.
    emulator: autoconfig: -ramdisk /home/azahar/aosp/out/target/product/my_product/ramdisk.img
    emulator: autoconfig: -sysdir /home/azahar/aosp/out/target/product/my_product
    emulator: Using initial system image: /home/azahar/aosp/out/target/product/my_product/system.img
    emulator: WARNING: system partition size adjusted to match image file (550 MB > 200 MB)

    emulator: autoconfig: -data /home/azahar/aosp/out/target/product/my_product/userdata-qemu.img
    emulator: autoconfig: -initdata /home/azahar/aosp/out/target/product/my_product/userdata.img
    emulator: WARNING: data partition size adjusted to match image file (550 MB > 200 MB)

    emulator: autoconfig: -cache /home/azahar/aosp/out/target/product/my_product/cache.img
    emulator: Physical RAM size: 512MB

    emulator: GPU emulation is disabled
    emulator: WARNING: CPU acceleration only works with x86/x86_64 system images.
    emulator: Auto-config: -qemu -cpu cortex-a8
    Content of hardware configuration file:
      hw.cpu.arch = arm
      hw.cpu.model = cortex-a8
      hw.ramSize = 512
      hw.screen = touch
      hw.mainKeys = yes
      hw.trackBall = yes
      hw.keyboard = no
      hw.keyboard.lid = no
      hw.keyboard.charmap = qwerty2
      hw.dPad = yes
      hw.gsmModem = yes
      hw.gps = yes
      hw.battery = yes
      hw.accelerometer = yes
      hw.audioInput = yes
      hw.audioOutput = yes
      hw.sdCard = yes
      disk.cachePartition = yes
      disk.cachePartition.path = /home/azahar/aosp/out/target/product/my_product/cache.img
      disk.cachePartition.size = 66m
      hw.lcd.width = 320
      hw.lcd.height = 480
      hw.lcd.depth = 16
      hw.lcd.density = 160
      hw.lcd.backlight = yes
      hw.gpu.enabled = no
      hw.initialOrientation = portrait
      hw.camera.back = emulated
      hw.camera.front = none
      vm.heapSize = 48
      hw.sensors.proximity = yes
      hw.sensors.magnetic_field = yes
      hw.sensors.orientation = yes
      hw.sensors.temperature = yes
      hw.useext4 = yes
      kernel.path = /home/azahar/aosp/out/target/product/my_product/kernel
      kernel.parameters =  androidboot.hardware=goldfish android.checkjni=1
      kernel.newDeviceNaming = no
      kernel.supportsYaffs2 = no
      disk.ramdisk.path = /home/azahar/aosp/out/target/product/my_product/ramdisk.img
      disk.systemPartition.initPath = /home/azahar/aosp/out/target/product/my_product/system.img
      disk.systemPartition.size = 550m
      disk.dataPartition.path = /home/azahar/aosp/out/target/product/my_product/userdata-qemu.img
      disk.dataPartition.size = 550m
      avd.name = <build>
    .
    QEMU options list:
    emulator: argv[00] = "/home/azahar/aosp/prebuilts/android-emulator/linux-x86_64/emulator64-arm"
    emulator: argv[01] = "-android-hw"
    emulator: argv[02] = "/tmp/android-azahar/emulator-lsvyCj"
    Concatenated QEMU options:
     /home/azahar/aosp/prebuilts/android-emulator/linux-x86_64/emulator64-arm -android-hw /tmp/android-azahar/emulator-lsvyCj
    emulator: registered 'boot-properties' qemud service
    emulator: Using kernel serial device prefix: ttyS
    emulator: Ramdisk image contains fstab.goldfish file
    emulator: Found format of system partition: 'ext4'
    emulator: Found format of userdata partition: 'ext4'
    emulator: Found format of cache partition: 'ext4'
    emulator: system partition format: ext4
    emulator: Mapping 'system' partition image to /tmp/android-azahar/emulator-AvYGsQ
    emulator: nand_add_dev: system,size=0x22600000,file=/tmp/android-azahar/emulator-AvYGsQ,initfile=/home/azahar/aosp/out/target/product/my_product/system.img,pagesize=512,extrasize=0
    emulator: userdata partition format: ext4
    WARNING: userdata image already in use, changes will not persist!
    emulator: Mapping 'userdata' partition image to /tmp/android-azahar/emulator-YcBfzc
    emulator: Creating empty userdata partition image at: /tmp/android-azahar/emulator-YcBfzc
    Creating filesystem with parameters:
        Size: 576716800
        Block size: 4096
        Blocks per group: 32768
        Inodes per group: 7040
        Inode size: 256
        Journal blocks: 2200
        Label: 
        Blocks: 140800
        Block groups: 5
        Reserved block group size: 39
    Created filesystem with 11/35200 inodes and 4536/140800 blocks
    emulator: nand_add_dev: userdata,size=0x22600000,file=/tmp/android-azahar/emulator-YcBfzc,pagesize=512,extrasize=0
    emulator: cache partition format: ext4
    WARNING: cache image already in use, changes will not persist!
    emulator: Mapping 'cache' partition image to /tmp/android-azahar/emulator-wM4p7H
    emulator: Creating empty cache partition image at: /tmp/android-azahar/emulator-wM4p7H
    Creating filesystem with parameters:
        Size: 69206016
        Block size: 4096
        Blocks per group: 32768
        Inodes per group: 4224
        Inode size: 256
        Journal blocks: 1024
        Label: 
        Blocks: 16896
        Block groups: 1
        Reserved block group size: 7
    Created filesystem with 11/4224 inodes and 1302/16896 blocks
    emulator: nand_add_dev: cache,size=0x4200000,file=/tmp/android-azahar/emulator-wM4p7H,pagesize=512,extrasize=0
    emulator: registered 'boot-properties' qemud service
    emulator: Adding boot property: 'dalvik.vm.heapsize' = '48m'
    emulator: Adding boot property: 'ro.config.low_ram' = 'true'
    emulator: Adding boot property: 'qemu.sf.lcd_density' = '160'
    emulator: Adding boot property: 'qemu.hw.mainkeys' = '1'
    emulator: Adding boot property: 'qemu.sf.fake_camera' = 'back'
    emulator: Kernel parameters: qemu.gles=0 qemu=1 console=ttyS0 android.qemud=ttyS1 androidboot.hardware=goldfish android.checkjni=1 ndns=1
    emulator: autoconfig: -scale 1
    emulator: Forcing ro.adb.qemud to "0".
    emulator: control console listening on port 5556, ADB on port 5557
    emulator: sent '0012host:emulator:5557' to ADB server
    emulator: android_hw_fingerprint_init: fingerprint qemud listen service initialized

    emulator: ping program: /home/azahar/aosp/prebuilts/android-emulator/linux-x86_64/ddms
    goldfish_fb_get_pixel_format:170: display surface,pixel format:
      bits/pixel:  16
      bytes/pixel: 2
      depth:       16
      red:         bits=5 mask=0xf800 shift=11 max=0x1f
      green:       bits=6 mask=0x7e0 shift=5 max=0x3f
      blue:        bits=5 mask=0x1f shift=0 max=0x1f
      alpha:       bits=0 mask=0x0 shift=0 max=0x0

最佳答案

您正在构建一个无法在 qemu 上模拟的 arm 设备。
您可以尝试为任何预先存在的设备(如珊瑚或梅林)构建并检查它是否为它们启动。但可能不会。

关于android - AOSP 基于自定义设备 - 模拟器构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49492965/

相关文章:

android - 我如何知道 Android 存储库中的当前版本?

android - 我正在尝试在 ANDROID 中开发 map (基本上是静态图像),我可以在其中显示不同的项目(在 map 本身中绘制)

java - 如何将字符串数据从 sqlite 发送到另一个 Activity

android - 模拟器真的很烦人的问题

android - 如何 lint Android 系统/平台应用程序

python - 在 Ubuntu 的外部驱动器上尝试 repo init 时出错

android - 拍摄后立即从相机应用程序获取图像数据

android - Kotlin Android 启动新 Activity

android - 开发和发布 Android 应用程序而不首先在真实设备上进行测试是否可取?

Android Studio 1.3 RC3。 Google Play 服务已过时。需要 7571000 但找到 6774470