Structure
Plan: add projects to this base.
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="manifest" name="tools/manifest" />
<project path="platform-manifest" name="platform/manifest" />
</manifest>
Fundamentally the manifest links sources with destinations in the build environment.
Location
The device.xml
will go in this location: /.repo/local_manifests/device.xml
. This is very similar to roomservice.xml.
Device tree and Sources
Look up a device tree for a3xelte
. Your chosen components must be available in the branch you intend to build. Let’s try https://github.com/LineageOS/android_device_samsung_a3xelte/tree/lineage-18.1 (Notice the use of lineage-18.1 branch selected, you can always check for other branches.)
Method
This is a device supported by LineageOS an /e/ so this is a relatively simple manifest.
Take the url and break it apart to fit the required format:
a) the url: https://github.com/LineageOS/android_device_samsung_a3xelte
b) remote=“github”
c) name=“LineageOS/android_device_samsung_a3xelte”
d) path is destination, where it is going to fit in the android build environment. No leading or trailing slash.
path=“device/samsung/a3xelte”
e) <project path="device/samsung/a3xelte" remote="github" name="LineageOS/android_device_samsung_a3xelte" />
Clue 2. From https://github.com/LineageOS/android_device_samsung_a3xelte look on the page for lineage.dependencies
Links to the url: https://github.com/LineageOS/android_device_samsung_universal7580-common
a) url: https://github.com/LineageOS/android_device_samsung_universal7580-common
b) remote=“github”
c) name=“LineageOS/android_device_samsung_universal7580-common”
d) path=“device/samsung/universal7580-common”
e) <project path="device/samsung/universal7580-common" remote="github" name="LineageOS/android_device_samsung_universal7580-common" />
Clue 3. From https://github.com/LineageOS/android_device_samsung_universal7580-common look for lineage.dependencies
– links to this
Expressed
[
{
"repository": "android_hardware_samsung",
"target_path": "hardware/samsung"
},
{
"repository": "android_hardware_samsung_nfc",
"target_path": "hardware/samsung/nfc"
},
{
"repository": "android_hardware_samsung_slsi_exynos",
"target_path": "hardware/samsung_slsi/exynos"
},
{
"repository": "android_hardware_samsung_slsi_exynos5",
"target_path": "hardware/samsung_slsi/exynos5"
},
{
"repository": "android_hardware_samsung_slsi_exynos7580",
"target_path": "hardware/samsung_slsi/exynos7580"
},
{
"repository": "android_hardware_samsung_slsi_openmax",
"target_path": "hardware/samsung_slsi/openmax"
},
{
"repository": "android_kernel_samsung_universal7580",
"target_path": "kernel/samsung/universal7580"
}
]
a) https://github.com/LineageOS/android_hardware_samsung
b) remote=“github”
c) name=“LineageOS/android_hardware_samsung”
d) path=“hardware/samsung”
e) <project path="hardware/samsung" remote="github" name="LineageOS/android_hardware_samsung" />
a) https://github.com/LineageOS/android_hardware_samsung_nfc
b) remote=“github”
c) name="LineageOS/android_hardware_samsung_nfc
d)“target_path”: path=“hardware/samsung/nfc”
e) <project path="hardware/samsung/nfc" remote="github" name="LineageOS/android_hardware_samsung_nfc" />
Work through the remainder of the sources.
Find proprietary / vendor
Try https://github.com/TheMuppets/ and / or https://gitlab.com/the-muppets
Here is one at Android R: https://github.com/TheMuppets/manifests/blob/lineage-18.1/muppets.xml a little extravagant, it brings in all the Samsungs in their catalogue, but with the addition of depth="1"
we restrict the download to “essential” – please look it up to understand !
Put them all together
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="device/samsung/a3xelte" remote="github" name="LineageOS/android_device_samsung_a3xelte" />
<project path="device/samsung/universal7580-common" remote="github" name="LineageOS/android_device_samsung_universal7580-common" />
<project path="hardware/samsung" remote="github" name="LineageOS/android_hardware_samsung" />
<project path="hardware/samsung/nfc" remote="github" name="LineageOS/android_hardware_samsung_nfc" />
<project path="hardware/samsung_slsi/exynos" remote="github" name="LineageOS/android_hardware_samsung_slsi_exynos" />
<project path="hardware/samsung_slsi/exynos5" remote="github" name="LineageOS/android_hardware_samsung_slsi_exynos5" />
<project path="hardware/samsung_slsi/exynos7580" remote="github" name="LineageOS/android_hardware_samsung_slsi_exynos7580" />
<project path="hardware/samsung_slsi/openmax" remote="github" name="LineageOS/android_hardware_samsung_slsi_openmax" />
<project path="kernel/samsung/universal7580" remote="github" name="LineageOS/android_kernel_samsung_universal7580" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" depth="1" />
</manifest>
This is very much an entry level example – not yet covered
the use of remote and fetch
<!-- Remote -->
<remote fetch="https://github.com/K9100ii" name="K9100ii" />
A very much fuller guide on the device tree itself from XDA [GUIDE] How to make a device-tree for your phone