Reputation: 202
I'm learning AOSP build system, especially how to add new devices.
I build android-6.0.1_r46 Marshmallo ,on default full-eng configuration and run it on emulator. It was working properly.
But when I tried to add my custom device in source tree like /device/my_company/my_product/ than build successfully and run it on emulator - emulator just hangs up with black screen. Not loading at all.
how can i make emulator work ? my makefiles are as given below..
Android.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
device.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
out/target/product/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 devices shows emulator-5554 offline
[cmd]~/aosp$ emulator & [1] 17183
[cmd]~/aosp$ emulator -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
Upvotes: 5
Views: 4607
Reputation: 545
You are building for an arm device which cannot be emulated on qemu. You can try to build for any pre existing device like coral or merlin and check it it boot for them. But probably it will not.
Upvotes: 0