title: AOSP build on custom device -emulator
body: <p>I'm learning AOSP build system, especially how to add new devices.<br>
  I build android-6.0.1_r46  Marshmallo ,on default full-eng configuration and run it on emulator. It was working properly.</p>
  
  <p>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.</p>
  
  <p>how can i make emulator work ?
  my makefiles are as given below..</p>
  
  <p><strong>Android.mk</strong></p>
  
  <pre><code>ifneq ($(filter my_product, $(TARGET_DEVICE)),)
  
  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  
  include $(call all-makefiles-under,$(LOCAL_PATH))
  
  endif
  </code></pre>
  
  <p><strong>AndroidProducts.mk</strong></p>
  
  <pre><code>PRODUCT_MAKEFILES := \
   $(LOCAL_DIR)/aosp_my_product.mk 
  </code></pre>
  
  <p><strong>vendorsetup.sh</strong></p>
  
  <pre><code>add_lunch_combo aosp_my_product-eng
  </code></pre>
  
  <p><strong>aosp_my_product.mk</strong></p>
  
  <pre><code>#$(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
  </code></pre>
  
  <p><strong>device.mk</strong></p>
  
  <pre><code> 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
  </code></pre>
  
  <p><strong>BoardConfig.mk</strong></p>
  
  <pre><code># 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
  </code></pre>
  
  <p><strong>out/target/product/my_product$ ls</strong></p>
  
  <pre><code>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
  </code></pre>
  
  <p>adb devices  shows
  emulator-5554   offline</p>
  
  <p><strong>[cmd]~/aosp$ emulator &amp;
  [1] 17183</strong></p>
  
  <p><strong>[cmd]~/aosp$ emulator -verbose</strong></p>
  
  <pre><code>    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 &gt; 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 &gt; 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 = &lt;build&gt;
      .
      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
  </code></pre>