To get started with the building process, you'll need to get familiar with Git and Repo.
- Tested and Working on any version of Ubuntu - 14.04,14.10,15.04,16.04,18.04 (64-bit)
- Any other distribution based of the Ubuntu Distro such as Lubuntu, Xubuntu and etc.
- Any form of Terminal
- Decent hardware (minimum of at least a quad core CPU and 16 GB of RAM)
- A storage unit of any kind (We recommend utilizing SSDs as Mechanical HDDs slow down the build proccess drastically and the minimum storage size is 70GB. Having more will be useful with CCache[More on that later])
- Required Packages should have been installed
[Hint: This command updates the Ubuntu Packages List (Install Listing) and install the required version of Java]
sudo apt-get install openjdk-8-jdk
[Hint: Running this command installs the other required packages to build android]
sudo apt-get update && sudo apt-get install bc git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk3.0-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-8-jre openjdk-8-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline6-dev gcc-multilib maven tmux screen w3m ncftp adb fastboot repo python default-jdk
- Making required directories
- Obtaining the repo binary
- Adding repo binary to your path
- Giving the repo binary proper permissions
- Initializing an empty repo
- Syncing the repo
Alright, so now we’re getting there. I have outlined the basics of what we’re about to do and broke them down as I know them. This is all pretty much going to be copy/paste so it’ll be fairly difficult to screw this up :)
mkdir ~/bin
PATH=~/bin:$PATH
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
mkdir ~/ssos
cd ~/ssos
repo init -u https://github.com/ShapeShiftOS/android_manifest.git -b android_12
[Hint: This might take a long time as the source is ~75GB]
repo sync -c --force-sync --optimized-fetch --no-tags --no-clone-bundle --prune -j$(nproc --all)
- Preparing Required Binaries and Device Drivers
- Setting Up CCache (Optional)
- Building ShapeShiftOS
Congratulations on the successful build initialization! Now, we shall go ahead and prepare to build for your device!
- CCache is a method of utilizing a specified storage space to speed up building. It can be referred to as the same caching your android device does to speed up application and system boot times. In this case, CCache will help build ShapeShiftOS faster than standard build times (Able to cut-down 50% of time taken to build).
- To set up CCache, follow the following:
echo "export USE_CCACHE=1" >> ~/.bashrc
cd ~/ssos
source build/envsetup.sh
lunch ssos_<devicecodename>-userdebug
make bacon -j$(nproc --all) | tee log.txt
To get the zip file that has been built, navigate to the following directory and find for the zip file:
cd ~/ssos/out/target/product/<devicename>
OR
cd $OUT
If you found it, then congratulations! If you didn't, try retrying the build process but before doing so, ensure you do the following to make sure your next build is clean;
cd ~/ssos
make clean
repo sync --force-sync
After doing so, redo everything stated from the Building Section.
Well, Congratulations on your victory! Now, you have a .zip file that flashable to your device! Share it to the internet as you wish but be sure to contribute back and also give credits to the ShapeShiftOS Team and its contributors! Do come and build ShapeShiftOS another time as source code is routinely being improved upon. If you wish to contibute, feel free to make a pull request to the ShapeShiftOS Team! See you again builder!
To get Official Maintainership for ShapeShiftOS you should have a stable device source with all the main components working. Read the charter to get a clearer idea.
First make an unofficial build of ShapeShiftOS and post in XDA if you want to. Make sure you use the template here! Click on the raw button and change the links up where ever required.
Then, read here
Join our Telegram Channel and our Telegram group