Skip to Content
waving_handOnboarding

Congratulations & welcome to the Evolution X team! sitefav

This page will walk you through the new device maintainer onboarding process!

References to “us” or “we” mean Joey  or Anierin  in the #maintainers  channel of the Evolution X Discord server . The usage of codename should be replaced with your device’s codename throughout this process.

1. Device repositories & initial installation images

Once you’ll be accepted as an official maintainer, please provide us:

Specify the repositories you need created or access to under the Evolution X Devices GitHub organization 

Once these repositories are created, and you have been granted access and pushed, please delete lineage.dependencies (if existing) and set up evolution.dependencies in each applicable repository for device source syncing via roomservice .

Additionally, provide a list of image names required to be flashed in order to boot Evolution X recovery (initial installation images) coming from the stock ROM of your device. (E.g boot, recovery etc)

You MAY NOT substitute Evolution X recovery with TWRP or any of its derivatives (OFOX/PBRP)

Example message using panther:

# Device: Device name: Google Pixel 7 Device codename: panther # Usernames: GitHub Username: AnierinBliss SourceForge Username: anierin # Device Repositories: 1. Repository Name: device_google_panther Repository Description: Roomservice & scripts support 2. Repository Name: device_google_pantah Repository Description: Device tree for the Google Pixel 7 & 7 Pro 3. Repository Name: device_google_gs201 Repository Description: Board tree for Google Tensor G2 devices 4. Repository Name: device_google_gs101 Repository Description: Board tree for Google Tensor G1 devices 5. Repository Name: device_google_gs-common Repository Description: Common interfaces & sepolicies for tensor-based Google Pixel devices 6. Repository Name: packages_apps_PixelParts Repository Description: Parts application for tensor-based Google Pixel devices # Initial installation images (required to boot Evolution X recovery when coming from the stock ROM): 1. boot 2. dtbo 3. vendor_kernel_boot 4. vendor_boot

Roomservice chain

Here is an example of how to setup the roomservice chain (mentionned in lunch guide.) We’ll use Panther again as an example.

device_google_panther :

[ { "repository": "device_google_pantah", "target_path": "device/google/pantah" } ]

As previously said in lunch guide, we can see that Panther has only 1 dependency, which is Pantah. Pantah contains the dependencies for building Pantah and Panther.

device_google_pantah :

{ "repository": "device_google_gs201", "target_path": "device/google/gs201" }, { "repository": "device/google/pantah-kernel", "target_path": "device/google/pantah-kernel", "remote": "aosp-pantah" } ]

But we can see that Pantah itself has a dependency, device_google_gs201, common to both devices.

device_google_gs201 :

[ { "repository": "device_google_gs101", "target_path": "device/google/gs101" } ]

And again, this tree has an other dependencies: device_google_gs101 :

[ { "repository": "device_google_gs-common", "target_path": "device/google/gs-common" }, { "repository": "packages_apps_PixelParts", "target_path": "packages/apps/PixelParts" } ]

Now you understand why this is called a roomservice chain. All the dependencies are +- linked.

2: Setting up the environment

This part assume you’ve read Setting up the environment before.

Since you are now an official maintainer, you have to make sure your builds are official too.

In order to set it up, you only have to

export EVO_BUILD_TYPE=Official

In order to set it up, you only have to To make sure it’s applied every time, you can add it at the end of your ~/.bashrc file:

echo 'export EVO_BUILD_TYPE=Official' >> ~/.bashrc source ~/.bashrc

3: Signed Releases

Maintainers are required to sign all releases with our private keys .

Note that it has already been explained here.

There are no manual signing steps required. Just clone the repository to $ANDROID_BUILD_TOP/vendor/evolution-priv/keys/ and compile. Releases not signed by these keys will be removed from sourceforge without warning.

Please keep these keys CONFIDENTIAL. Be cautious, especially if you’re using a shared server!

ANY INTENTIONAL OR ACCIDENTAL LEAK WILL RESULT IN IMMEDIATE REMOVAL FROM THE PROJECT, AND YOU WON’T BE ALLOWED BACK.

4: Upload to SourceForge

Maintainers are responsible for uploading releases and initial installation images to SourceForge .

Example using Panther:

ROM uploading :

scp EvolutionX-14.0-20240724-panther-v9.2-Official.zip anierin@frs.sourceforge.net:/home/frs/p/evolution-x/panther/14/

boot.img uploading :

scp EvolutionX-14.0-20240724-panther-v9.2-Official.zip anierin@frs.sourceforge.net:/home/frs/p/evolution-x/panther/14/

dtbo.img uploading :

scp dtbo.img anierin@frs.sourceforge.net:/home/frs/p/evolution-x/panther/14/dtbo/

vendor_kernel_boot.img uploading :

scp vendor_kernel_boot.img anierin@frs.sourceforge.net:/home/frs/p/evolution-x/panther/14/vendor_kernel_boot/

vendor_boot.img uploading :

scp vendor_boot.img anierin@frs.sourceforge.net:/home/frs/p/evolution-x/panther/14/vendor_boot/

All these commands assume you already have the corresponding folder created on sourceforge.

5: Create an XDA thread

Create an XDA forums thread  using the $ANDROID_BUILD_TOP/evolution/XDA/generate_xda_thread.sh script found in the XDA repository .

croot && cd evolution/XDA/ && . generate_xda_thread.sh

Please be aware that you will need to manually update the installation instructions to reflect the procedure specific to your device. The ability to automatically update these instructions during the generation script will be added in the future.

6: Add your device to OTA

Fork the OTA  repository and add your device using the json located at $ANDROID_BUILD_TOP/out/target/product/codename/codename.json. The contents must match that of the uploaded build! If the device is not currently in the OTA repository, your codename.json will look similar to the example below.

it is up to you to fill out the unpopulated fields and create a codename.txt changelog.

Subsequent jsons in $ANDROID_BUILD_TOP/out/target/product/codename/codename.json will be fully populated using $ANDROID_BUILD_TOP/evolution/OTA/codename.json after your initial commit to OTA has been merged, allowing you to directly copy/paste.

Please respect the format when making a PR for OTA ! Examples: Adding a device : OTA: Add Google Pixel 7 (panther) Updating single device: Panther: 08/24/2024 Update Updating multiple device: Panther/Cheetah/Lynx: 08/24/2024 Update

Example codename.json name using panther :

{ "response": [ { "maintainer": "Anierin Bliss", "oem": "Google", "device": "Pixel 7", "filename": "EvolutionX-14.0-20240825-panther-v9.3-Official.zip", "download": "https://sourceforge.net/projects/evolution-x/files/panther/14/EvolutionX-14.0-20240825-panther-v9.3-Official.zip/download", "timestamp": 1724548829, "md5": "4e9f1d05510efd85d2b24d06ad496371", "sha256": "b27e481a476d094972d4d6380cc31972f3384b4702b7453f0405a7011bbffc57", "size": 2697824926, "version": "9.3", "buildtype": "Release", "forum": "https://xdaforums.com/t/rom-14-0-0_r53-official-evolution-x-9-2-08-01-2024.4546503/", "firmware": "", "paypal": "https://PayPal.me/AnierinB", "telegram": "https://telegram.me/AnierinB", "github": "AnierinBliss", "initial_installation_images": [ "boot", "dtbo", "vendor_kernel_boot", "vendor_boot" ] } ] }

If needed, super_empty image has to be put on top of the list !

Example :

"initial_installation_images": [ "super_empty", "recovery", "other image..." ]

When done, commit, push, and submit a pull request via comparing forks  with the main OTA repository; we will review and merge it at our earliest convenience.

keepevolving.png

Last updated on