In order to build XOSP for your device, first of all you need to get familiar with Git and Repo.
To initialize your local repository using the XOSP trees, use a command like this:
repo init -u git://github.com/XOSP-Project/platform_manifest.git -b xosp-n-rebase
Then to sync up:
repo sync -c -f -j<number_of_threads> --force-sync --no-clone-bundle --no-tags
Contributing to XOSP
We love contributions from the community so if you want to submit patches you can do it by pushing on our gerrit: review.xosp.org:8081
First make sure that your Name and Email are named globally on Git:
$ git config --global user.name "YourName" $ git config --global user.email "YourEmail"
Create a SSH Key and add it to your Gerrit Profile, otherwise you will not be able to push your changes, to do so just follow the steps foundable here: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
Now, select the repo/s you're interested to contribute to from here: http://review.xosp.org:8081/#/admin/projects/
Clone it with the SSH method like here for example:
$ git clone ssh://email@example.com:29418/your_repo
Make your changes and commit as usual,when pusing do like this:
$ git push origin HEAD:refs/for/xosp-n-rebase
Perfect! you now uploaded your very first patch on Gerrit. Please allow time for it to be verified, depending by the change it could take from very less to very much time
If you want to assign a topic to your commit just push the commit as follow:
$ git clone ssh://firstname.lastname@example.org:29418/your_repo -o topic=your_topic
If you made mistakes or new changes were made to the current commit just use amend:
$ git add -A $ git commit -s --amend --no-edit
If you're on Linux you can use directly the command git-review to push instead of git push which is much more automated
Building XOSP for your device
- Tested and Working on any version of Ubuntu - 15.10 & 16.04 16.10 (64-bit)
- Any other distribution based of the Ubuntu Distro such as Lubuntu, Xubuntu and etc.
- A Terminal window
- A Good specs of hardware like 8 GB of RAM and an Intel I3 dual core (Minimum)
- A storage unit of any kind (minimum 100 GB). It would be better to use SSD because is more fast during the compliation process
- Some dependencies that should be installed
Building XOSP ROM for your device
- Preparing Required Binaries and Device Drivers
- Set CCache for Faster Building (Optional)
- Build phase
$ export USE_CCACHE=1 $ prebuilts/misc/linux-x86/ccache/ccache -M 150G
Congratulations,the sources are initialized!
Preparing XOSP for your device
To know how to include propietary vendors files from your device, follow this guide which explains everything you need to know: (http://forum.xda-developers.com/showpost.php?p=54118631&postcount=4)
Once you finished setting up your device tree, you will need to add this line into the xosp.mk of your device:
$(call inherit-product, vendor/xosp/config/xosp.mk)
If you want to include ROOT support in your build you will have to specify a parameter in xosp.mk which includes 2 possibilities: "supersu" and "magisk":
ROOT_METHOD := supersu OR ROOT_METHOD := magisk
To build XOSP ROM
$ cd ~/XOSP $ source build/./envsetup.sh $ brunch <device> -j<number_of_threads> (USE brunch ALWAYS!)
Obtaining the zip created from the build process
To get the zip file that has been built, navigate to the out directory and find for the zip file there. If you found it, then congratulations! If you didn't, try retrying the build process but before doing so, ensure you do the following:
$ cd ~/XOSP $ make clean
When you done the initialization once you're free to build now without making that again.
For those who finally get the compilation process done
Well you made it my friend, after all these hours passed now you finally got the ROM ready to be flashed through the recovery of your device. Share it on XDA or on every forum,blog site etc... (as you wish). We expect you to contribute as well and to give credits to the XOSP Team and their contributors! Don't forget to sync your repo everytime and build XOSP more than just one because the source get changed almost everyday with new fixes or new features. Don't hesitate to make pull requests because we will take them all in consideration.