The manifest for x86vbox

Based on an analysis of the preceding table, we can create the manifest file for x86vbox. From the preceding table, we can see that we reuse 39 projects from Android-x86 to form the HAL of VirtualBox. Out of these 39 projects, 16 of them are from AOSP and changed by Android-x86. To run our x86vbox device on VirtualBox, we need to create the device x86vbox at device/generic/x86vbox. We also need to change four projects: kernel, bootable/newinstaller, device/generic/common, and frameworks/base.

In the manifest of the x86vbox, we will include the preceding projects for the x86 kernel, HAL, and have modified system/ as well as frameworks/:

<?xml version="1.0" encoding="UTF-8"?> 
<manifest>

<remote name="github"
revision="refs/tags/android-7.1.1_r4_x86vbox_ch08_r1"
fetch="." />

<remote name="aosp"
fetch="https://android.googlesource.com/" />
<default revision="refs/tags/android-7.1.1_r4"
remote="aosp"
sync-c="true"
sync-j="1" />

<!-- github/android-7.1.1_r4_ch08 -->
<project path="kernel" name="goldfish" remote="github" />
<project path="bootable/newinstaller"
name="platform_bootable_newinstaller"
remote="github" />
<project path="device/generic/common" name="device_generic_common"
groups="pdk"
remote="github" />
<project path="device/generic/x86vbox" name="x86vbox"
remote="github" />
<project path="bootable/recovery" name="android_bootable_recovery"
remote="github" groups="pdk" />

<project path="frameworks/base" name="platform_frameworks_base"
groups="pdk-cw-fs,pdk-fs" remote="github" />

<project path="bionic" name="platform_bionic" groups="pdk"
remote="github" />
<project path="device/generic/firmware"
name="device_generic_firmware"
remote="github" />
<project path="external/alsa-lib" name="platform_external_alsa-lib"
remote="github" />
<project path="external/alsa-utils"
name="platform_external_alsa-utils"
remote="github" />
<project path="external/bluetooth/bluez"
name="platform_external_bluetooth_bluez" remote="github" />
<project path="external/bluetooth/glib"
name="platform_external_bluetooth_glib"
remote="github" />
<project path="external/bluetooth/sbc"
name="platform_external_bluetooth_sbc"
remote="github" />
<project path="external/busybox" name="platform_external_busybox"
remote="github" />
<project path="external/drm_gralloc"
name="platform_external_drm_gralloc"
groups="drm_gralloc" remote="github" />
<project path="external/drm_hwcomposer"
name="platform_external_drm_hwcomposer"
groups="drm_hwcomposer" remote="github" />
<project path="external/e2fsprogs" name="platform_external_e2fsprogs"
groups="pdk" remote="github" />
<project path="external/ffmpeg" name="platform_external_ffmpeg"
remote="github" />
<project path="external/libdrm" name="platform_external_libdrm"
groups="pdk"
remote="github" />
<project path="external/libtruezip"
name="platform_external_libtruezip"
remote="github" />
<project path="external/llvm" name="platform_external_llvm"
groups="pdk"
remote="github" />
<project path="external/mesa" name="platform_external_mesa"
remote="github" />
<project path="external/s2tc" name="platform_external_s2tc"
remote="github" />
<project path="external/stagefright-plugins"
name="platform_external_stagefright-plugins" remote="github" />
<project path="external/v86d" name="platform_external_v86d"
remote="github" />
<project path="frameworks/av" name="platform_frameworks_av"
groups="pdk"
remote="github" />
<project path="frameworks/native" name="platform_frameworks_native"
groups="pdk" remote="github" />
<project path="hardware/broadcom/wlan"
name="platform_hardware_broadcom_wlan"
groups="pdk,broadcom_wlan" remote="github" />
<project path="hardware/gps" name="platform_hardware_gps"
remote="github" />
<project path="hardware/intel/audio_media"
name="platform_hardware_intel_audio_media" groups="intel"
remote="github" />
<project path="hardware/intel/libsensors"
name="platform_hardware_intel_libsensors" remote="github" />
<project path="hardware/libaudio" name="platform_hardware_libaudio"
remote="github" />
<project path="hardware/libcamera" name="platform_hardware_libcamera"
remote="github" />
<project path="hardware/libhardware"
name="platform_hardware_libhardware"
groups="pdk" remote="github" />
<project path="hardware/libhardware_legacy"
name="platform_hardware_libhardware_legacy" groups="pdk"
remote="github" />
<project path="hardware/liblights" name="platform_hardware_liblights"
remote="github" />
<project path="hardware/libsensors"
name="platform_hardware_libsensors"
remote="github" />
<project path="hardware/ril" name="platform_hardware_ril"
groups="pdk"
remote="github" />
<project path="hardware/x86power" name="platform_hardware_x86power"
remote="github" />
<project path="system/core" name="platform_system_core" groups="pdk"
remote="github" />

<!-- aosp -->
<project path="build" name="platform/build" groups="pdk,tradefed" >
<copyfile src="core/root.mk" dest="Makefile" />
</project>

...
</manifest>

We can see that the manifest of x86vbox includes two parts. The first part includes the x86 kernel, x86vbox HAL, and modified AOSP projects that are all in GitHub. The second part includes the original AOSP projects. All the projects in the second part are not touched by either Android-x86 or x86vbox. The majority of projects in the first part are changed by Android-x86 only so we don't have to do anything for these projects as well.

In the first part of manifest, all the projects in the external/ or hardware/ directory are x86 HAL-related projects. The only AOSP project that you may have questions is bionic. You may be wondering why it is changed by Android-x86, since it is the C library of Android. You may know that system calls are implemented in the C library in the Linux system. There are two system calls ioperm and iopl missing from the original bionic and they are needed by the external/v86d project, which is the user space daemon for the vesafb frame buffer driver.

All the preceding analysis helps us to clarify the scope of work. As we can see, the scope of work is not as big as we thought at the beginning. There are many open source projects available nowadays. If we can reuse them as much as possible, the amount of work usually can be reduced dramatically.

All Android-x86 projects in GitHub are forked from the Android-x86 mirror so that we can change them.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.17.187.116