Since I sold my Galaxy Nexus and I won't continue to build crDroid rom for it, I made this step by step guide to build 4.4 KitKat crDroid rom running on this device from Cristiano Matos and cm's github.
This guide is meant for Ubuntu 13.10 64 bit. 32 Bit won't work.
If you want to use another ubuntu version, some things might be a little different. Just search on xda and you will find all the instructions that you need to complete the setup.
DISCLAMER
Although the procedures in this guide were tested on my pc/phone and produced a working build for my Galaxy Nexus, I take no responsibility for any consequences derived from their use.
1) SET UP THE BUILD ENVIRONMENT
Remove openJDK and install Java 6 jdk. Open a terminal and type:
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
This will uninstall openJDK.
Code:
sudo add-apt-repository ppa:webupd8team/java
Adds a PPA to your system, needed to download java.
Code:
sudo apt-get update && sudo apt-get install oracle-java6-installer
Download and installs java!
To make sure the correct version of Java is activated, run the following at the Terminal prompt:
Code:
java -version
You should see something like that:
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
Now type:
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev python lzop
This will install the needed packages.
When done, do this:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Now, install the repo binary:
Code:
mkdir ~/bin && curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo && chmod a+x ~/bin/repo
Edit .bashrc:
Code:
sudo nano ~/.bashrc
At the bottom of the file, add the following line:
Code:
export PATH=~/bin:$PATH
Save it (In nano type Ctrl-O and then Enter, then Ctrl-X to exit back to a prompt).
Restart bash:
Code:
source ~/.bashrc
2) DOWNLOAD THE SOURCES:
Code:
mkdir ~/cyanogenmod
cd ~/cyanogenmod
This creates a folder named "cyanogenmod" and opens it.
Initialize the repo:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
Open cyanogenmod folder, press ctrl+H to show hidden files, open .repo, open local_manifests and edit roomservice.xml (If it isn't present create it) to be like this one:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="http://github.com/" name="gh" revision="master" />
<remote fetch="https://github.com/TheMuppets/" name="TheMuppets" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="gh" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_imgtec" path="vendor/imgtec" remote="gh" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_broadcom" path="vendor/broadcom" remote="gh" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_invensense" path="vendor/invensense" remote="gh" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_widevine" path="vendor/widevine" remote="gh" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_nxp" path="vendor/nxp" remote="gh" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_maguro" path="device/samsung/maguro" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_toroplus" path="device/samsung/toroplus" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_toro" path="device/samsung/toro" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_kernel_samsung_tuna" path="kernel/samsung/tuna" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_tuna" path="device/samsung/tuna" remote="github" revision="cm-11.0" />
<remove-project name="CyanogenMod/android_packages_apps_Dialer" />
<project name="cristianomatos/android_packages_apps_Dialer" path="packages/apps/Dialer" remote="github" revision="cm-11" />
<remove-project name="CyanogenMod/android_packages_apps_InCallUI" />
<project name="cristianomatos/android_packages_apps_InCallUI" path="packages/apps/InCallUI" remote="github" revision="cm-11" />
<remove-project name="CyanogenMod/android_packages_services_Telephony" />
<project name="cristianomatos/android_packages_services_Telephony" path="packages/services/Telephony" remote="github" revision="cm-11" />
<remove-project name="CyanogenMod/android_frameworks_base" />
<project name="cristianomatos/android_frameworks_base" path="frameworks/base" remote="github" revision="cm-11" />
<remove-project name="CyanogenMod/android_packages_apps_Settings" />
<project name="cristianomatos/android_packages_apps_Settings" path="packages/apps/Settings" remote="github" revision="cm-11" />
</manifest>
Download time!
Code:
repo sync
It will download about 10gb of data, so be patient!
Download the prebuilts:
Code:
~/cyanogenmod/vendor/cm/get-prebuilts
3) BUILD THE ROM:
Code:
. build/envsetup.sh && brunch name_of_device
Where "name_of_device" is maguro, toro or toroplus, depending for which ersion you want to build.
It will take some time (on my pc with 3GHz dual core and 4gb of ram about 2h30min)
If everything goes right the flashable zip of the rom will be in cyanogenmod/out/target/product/name_of_device/cm-11-XXXXXXXXX-UNOFFICIAL-name_of_device.zip
4) Install the rom on your phone!
-------------------------------------------------------------------------------------------------------------
Some other tips:
When you want to download latest crdroid/cm changes open a new terminal and type:
Code:
cd cyanogenmod
repo sync
When you want to delete the build products (because something has gone wrong or you want to make a new build):
Code:
make clean
Then:
Code:
. build/envsetup.sh && brunch name_of_device
To start building again.
Reserved
Simply perfect bro!
Inviato dal mio Galaxy Nexus utilizzando Tapatalk
Thanks for this useful tutorial, awesome #bow
Sent from my Galaxy Nexus using Tapatalk
--deleted--
Thanks for this useful tutorial
Thanks for this useful tutorial.
I can make other unofficial builds in your favor.
@elia222 any idea why I get this when I do a repo sync:
Code:
Fetching project platform/external/scrypt
Fetching project CyanogenMod/android_external_elfutils
Fetching project CyanogenMod/android_external_svox
Fetching projects: 66% (307/465) Fetching project CyanogenMod/android_external_grub
Fetching project platform/external/sfntly
error: Cannot fetch cristianomatos/android_frameworks_base
Fetching project platform/prebuilts/runtime
error: Cannot fetch cristianomatos/android_packages_apps_Settings
error: Exited sync due to fetch errors
linezero said:
@elia222 any idea why I get this when I do a repo sync:
Code:
Fetching project platform/external/scrypt
Fetching project CyanogenMod/android_external_elfutils
Fetching project CyanogenMod/android_external_svox
Fetching projects: 66% (307/465) Fetching project CyanogenMod/android_external_grub
Fetching project platform/external/sfntly
error: Cannot fetch cristianomatos/android_frameworks_base
Fetching project platform/prebuilts/runtime
error: Cannot fetch cristianomatos/android_packages_apps_Settings
error: Exited sync due to fetch errors
Click to expand...
Click to collapse
Probably Cristiano Matos has changed/removed something on his github repositories. I didn't followed the project recently, so your best bet would be to contact him to solve the issue.
So if we re-initialize repo, would that solve the fetch errors?
CristiS2012 said:
So if we re-initialize repo, would that solve the fetch errors?
Click to expand...
Click to collapse
You can try, not sure if it will work or not.
Could i just download resource for specify device only ?
Not download reaource for all device
Is this guide also work on non nexus device ?
Can i use the maguro CM device trees for other roms like slim, beanstalk for lollipop ??
iddu.daragah said:
Can i use the maguro CM device trees for other roms like slim, beanstalk for lollipop ??
Click to expand...
Click to collapse
Yes, but it might need some little corrections.
elia222 said:
Yes, but it might need some little corrections.
Click to expand...
Click to collapse
What should i exactly edit ??
iddu.daragah said:
What should i exactly edit ??
Click to expand...
Click to collapse
It depends from which rom are you building. You will see from build errors what needs to be edited
elia222 said:
It depends from which rom are you building. You will see from build errors what needs to be edited
Click to expand...
Click to collapse
I am building PA 5.0 and currently my device is running slimkat.
So if i flash PA 4.4 and extract the proprietary blobs from device or download the kitkat maguro device trees via local manifest so will it give me build errors ?? and okay ill know by the build errors what changes should i make ....
Thnk You
iddu.daragah said:
I am building PA 5.0 and currently my device is running slimkat.
So if i flash PA 4.4 and extract the proprietary blobs from device or download the kitkat maguro device trees via local manifest so will it give me build errors ?? and okay ill know by the build errors what changes should i make ....
Thnk You
Click to expand...
Click to collapse
I haven't followed maguro since a long time. There aren't 5.0 blobs available?
elia222 said:
I haven't followed maguro since a long time. There aren't 5.0 blobs available?
Click to expand...
Click to collapse
There are for cyanogemod .. but how will they work in PA ???
iddu.daragah said:
There are for cyanogemod .. but how will they work in PA ???
Click to expand...
Click to collapse
They work. Use cm vendor tree
Related
I put this tutorial together in an attempt to create the most complete and easy to follow guide for building a ROM from source. Including steps for adding apps to your build, changing toolchains and more... The entire guide uses a single Linux terminal window from start to finish in an attempt to keep everything as user friendly as possible. Please feel free to PM me suggestions on where changes need be made.
If you find this guide helpful please press the Thanks button on my posts and rate the thread a 5.
Prerequisites1. This guide is for Ubuntu 12+ based machine, I run Linux Mint 15. Follow links at end of OP for alternate directions
Windows Users: Setup Ubuntu in Virtualbox Instructions
2. You need to know the location for your device, vendor, and kernel repos. This can be found fairly easily in the forum for your phone. Also take note of your phones codename.
For example the Optimus G is the gee and its repos can be found here https://github.com/TeamPlaceholder
Note*All terminal commands will be in Code boxes*
Part 1 - Setting Up The Build Environment
Install Java JDK
Code:
sudo add-apt-repository ppa:webupd8team/java
Code:
sudo apt-get update
Code:
sudo apt-get install oracle-java6-installer
Installing required packages
Code:
sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Set-up ccache This Is Optional
Code:
nano ~/.bashrc
Add these two lines
export USE_CCACHE=1
export CCACHE_DIR=<path-to-your-cache-directory>
Click to expand...
Click to collapse
Save and exit by pressing ctrl+x, selecting Y then enter.
Install ADB & Fastboot This is optional, as you may already have them working. If not, they're a good thing to have.
Code:
sudo add-apt-repository ppa:nilarimogard/webupd8
Code:
sudo apt-get update
Code:
sudo apt-get install android-tools-adb android-tools-fastboot
Setup Repo
Code:
mkdir ~/bin
Code:
PATH=~/bin:$PATH
Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Create working directory
Code:
mkdir [I][B]working-dir[/B][/I]
(Replace working-dir with whatever you'd like to call it, ie. aokp)
Code:
cd working-dir
Part 2 - Get SourceROM Source
Choose which custom rom you are going to build and initialize the repo for it
Code:
repo init -u [I][B]chosen-manifest[/B][/I]
(Replace chosen-manifest appropriately from the list below)
AOKP: https://github.com/AOKP/platform_manifest.git -b Branch
Cyanogenmod: https://github.com/CyanogenMod/android.git -b Branch
CarbonDev: https://github.com/CarbonDev/android.git -b Branch
Liquid Smooth: https://github.com/LiquidSmooth/android.git -b Branch
Replace Branch with appropriate branch from github repo ie cm-10.2 or jb3
If unsure which branch click the link above to locate appropriate branch
Click to expand...
Click to collapse
Device Source
Go HERE and follow instructions on obtaining your device specific repos.
Sync the repo
Code:
repo sync
This will take a while as it downloads all the required source
Part 3 - Preparing SourceBefore you're ready to build your source needs to be configured to include your device. This preparation varies slightly for different custom Roms.
Go HERE and follow instructions for your ROM choice
Part 4 - Edit SourceThis Is OptionalThis is where you can make edits to the source before building to suit your needs.
Go HERE and follow the instructions to tweak source
Part 5 - Building ROM
Code:
. build/envsetup.sh
Code:
lunch
Locate your device on the list and enter appropriate number
Code:
make -j[B][I]# [/I][/B]otapackage
Replace # with the number of cores in your system (Is the number of jobs that will be done at once, more cores means more jobs)
Build Errors
This can be hard, especially if you're new to programming languages and building. Meet Google your new best friend.
Here is a basic overview to get you started, and if no more at least googling in the right direction.
FinishedWhen it's done you're rom will be in working-dir/out/target/product/codename/
Enjoy.
I used these sites while making this guide
http://source.android.com/source/initializing.html
http://www.webupd8.org/2012/11/oracle-sun-java-6-installer-available.html
http://www.webupd8.org/2012/08/install-adb-and-fastboot-android-tools.html
Device Source As stated in the prerequisites you will need a device specific Device repo, Vendor repo, and Kernel repo. You can find links to them in the threads for your devices. Also take note of your device codename ie Nexus 4 is mako, Optimus G is gee.
There are two options for adding in device specific source, local manifest and git clone.
Note: The local path for your phone's repos should be device/manufacturer/codename, vendor/manufacturer/codename, kernel/manufacturer/codename regardless of method chosen.
Git Clone
Git clone is a one time download of a specific repo to the directory indicated and is not affected when a repo sync is run. This is probably the better choice if you make edits to the device source as they won't be over written or cause conflicts when syncing.
This method is used AFTER the inital rom source sync. Preform a repo sync before cloning repos
Code:
git clone [B][COLOR=DarkOrange]repo[/COLOR][/B] -b [B][COLOR=Red]branch[/COLOR][/B] [B][COLOR=Lime]destination-path[/COLOR][/B]
here is and example for the vendor repo for the E973 from TeamPlaceHolder
git clone https://github.com/TeamPlaceholder/proprietary_vendor_lge_gee -b cm-10.2 vendor/lge/gee
Click to expand...
Click to collapse
Local Manifest
Local manifest syncs the device repos each time a repo sync is run. This is probably the better choice if you don't make edits and rely on the repo's maintainer for changes. Be wary making edits locally to the repos you list as a repo sync may overwrite your changes.
This method is used BEFORE the initial rom sync. This gets your device source during the first repo sync
Code:
mkdir .repo/local_manifests
Code:
touch .repo/local_manifests/local_manifest.xml
Code:
nano .repo/local_manifests/local_manifest.xml
Add these lines:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="name-for-remote" fetch="remote-url" />
<project path="destination-folder-path" name="repo-location" remote="name-for-remote" revision="branch" />
</manifest>
Click to expand...
Click to collapse
name-for-remote - Any name you want to give to identify the url where your repos are stored
remote-url - The url for the remote location your repos are stored
destination-folder-path - Where do you want this repo stored locally
repo-location - Where on the remote url is your repo stored
branch - The branch of the remote repo you are using
**You will need a project line for each repo you wish to add to the source. **
Here is an example for E973 using TeamPlaceHolder repos, adding all device/vendor/kernel repos.
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="gh"
fetch="git://github.com/" />
<project path="kernel/lge/gee" name="TeamPlaceholder/android_kernel_lge_gee" remote="gh" revision="cm-10.2-update" />
<project path="device/lge/geeb" name="TeamPlaceholder/android_device_lge_geeb" remote="gh" revision="cm-10.2" />
<project path="device/lge/gee-common" name="TeamPlaceholder/android_device_lge_gee-common" remote="gh" revision="cm-10.2" />
<project path="vendor/lge/gee" name="TeamPlaceholder/proprietary_vendor_lge_gee" remote="gh" revision="cm-10.2" />
</manifest>
Click to expand...
Click to collapse
Preparing Source
Preparing SourceROM specific setup instructions prior to building. All source should be downloaded already.
All ROM setup is fairly similar,
1. You must add your device to the ROM's vendor repo(vendor/cm or vendor/aokp) This process is slightly different per rom. Look at how other devices are added in the vendor repo and emulate those.
2. A ROM specific makefile, again look at how other devices are added.
3. If building AOSP based ROMs, a pre-built kernel is generally required. Look here for instructions on how to compile a kernel separately.
Here are examples of how to set up AOKP or Carbon to build. Device used in example is Optimus G.
Manufacturer and codename MUST be updated to reflect your device.
AOKP
Code:
nano vendor/aokp/vendorsetup.sh
Add this line
add_lunch_combo aokp_geeb-userdebug
Click to expand...
Click to collapse
Save and exit by pressing ctrl+x, selecting Y then enter.
Code:
touch vendor/aokp/products/geeb.mk
Code:
nano vendor/aokp/products/geeb.mk
Add these lines
If building for CDMA network change gsm.mk to cdma.mk
# Inherit AOSP device configuration for geeb
$(call inherit-product, device/lge/geeb/full_geeb.mk)
# Inherit AOKP common bits
$(call inherit-product, vendor/aokp/configs/common.mk)
# Inherit GSM common stuff
$(call inherit-product, vendor/aokp/configs/gsm.mk)
# Setup device specific product configuration
PRODUCT_NAME := aokp_geeb
PRODUCT_BRAND := google
PRODUCT_DEVICE := geeb
PRODUCT_MODEL := Optimus G
PRODUCT_MANUFACTURER := LGE
Click to expand...
Click to collapse
Save and exit by pressing ctrl+x, selecting Y then enter.
Code:
nano vendor/aokp/products/AndroidProducts.mk
Add this line
$(LOCAL_DIR)/geeb.mk \
Click to expand...
Click to collapse
Save and exit by pressing ctrl+x, selecting Y then enter.
CarbonDev
Code:
nano vendor/carbon/vendorsetup.sh
Add this line
add_lunch_combo carbon_geeb-userdebug
Click to expand...
Click to collapse
Once your device has been added you're ready to build! Go back to the OP and complete the guide from where you left off.
good stuff haze
AGREED!!
What bout building ROMs based on LG source? I'd rather see more LG based ROMs because the camera quality is higher, and a lot of AOSP/AOKP ROMs feel more or less the same.
geokilla said:
What bout building ROMs based on LG source? I'd rather see more LG based ROMs because the camera quality is higher, and a lot of AOSP/AOKP ROMs feel more or less the same.
Click to expand...
Click to collapse
Seriously ? Find me LG source to build a rom and I'll make you one.
@moderator.
Btw, This post and the previous should be removed, that thread locked to prevent post like these and pinned. thanks.
Haze028 said:
Well I had put up build instructions for AOKP but thought I would generalize them so people could use them for other ROM bases. My therory is the more people that are trying to build, the more improvments/enhancements can be put forth to the OG community.
As I've stated before I do not consider myself a dev. So don't be afraid of giving this a try, even if you have little to no android building experience. The instructions are as step by step as I could make them, and I'll always try to help where I can.
When it's done you're rom will be in out/target/product/geeb/
I'm writing this now from memory, so if it doesn't work let me know so I may update accordingly
Enjoy.
Click to expand...
Click to collapse
It was what I'm looking for...
Thanks a lot..
Definitely I'll give a try!
chadouming said:
Seriously ? Find me LG source to build a rom and I'll make you one.
@moderator.
Btw, This post and the previous should be removed, that thread locked to prevent post like these and pinned. thanks.
Click to expand...
Click to collapse
Why would want to lock the thread? How do we suppose to learning? I think @Haze purpose was opposite that you suggest, if we do not learn, we'll keeping ask you to change this, or do that instead to help you and even do some nice stuff.
Don't be like that be patience and share your great knowledge. I'm your fan. :good:
d.terenzzo said:
Why would want to lock the thread? How do we suppose to learning? I think @Haze purpose was opposite that you suggest, if we do not learn, we'll keeping ask you to change this, or do that instead to help you and even do some nice stuff.
Click to expand...
Click to collapse
Yeah, I don't think it should get locked, I started it to try to help people out, so they can get assistance through this thread with their builds. Being new to building myself, I have found that the issues, and resolutions to them, in similar threads to this to be a wealth of knowledge.
getting error
build/core/product_config.mk:239: *** _nic.PRODUCTS.[[vendor/aokp/products/geeb.mk]]: "device/lge/geeb/full_geeb.mk" does not exist. Stop.
** Don't have a product spec for: 'aokp_geeb'
** Do you have the right repo manifest?
Any idea what i missed?
Recon Freak said:
build/core/product_config.mk:239: *** _nic.PRODUCTS.[[vendor/aokp/products/geeb.mk]]: "device/lge/geeb/full_geeb.mk" does not exist. Stop.
** Don't have a product spec for: 'aokp_geeb'
** Do you have the right repo manifest?
Any idea what i missed?
Click to expand...
Click to collapse
have you cloned the geeb device tree into device/lge/geeb? seems the error is saying that full_geeb.mk doesn't exist, so either you've not yet cloned the device tree, or you have it in a differnt folder name, I'm assuming currently.
let me know if that's not the case.
I know most people want to run latest and greatest but I'm curious if we could build a cm10 (4.1.2) using LG's released kernel sources?
Any thoughts??
Would be cool to get a 4.1.2 build without LG's proprietary software...
Hopefully you see my point in posting this here as building from lg's sources and either aosp or cm10 isn't the most straightforward.
I'm attempting but I don't expect to have much success...
Mate, how long does repo sync takes? I saw something to download about 10gb?
cheers
d.terenzzo said:
Mate, how long does repo sync takes? I saw something to download about 10gb?
cheers
Click to expand...
Click to collapse
It all depends on your internet connection, looking at around 10-20gb. I think my AOKP repo is 12gb...give or take
Haze028 said:
It all depends on your internet connection, looking at around 10-20gb. I think my AOKP repo is 12gb...give or take
Click to expand...
Click to collapse
"Once you know the truth, there is no going back"
for learning purpose:
Why should we have to download all projects in AOKP, if I wont use it.
There is a way to choice between what to download and what to not download?
cheers
d.terenzzo said:
"Once you know the truth, there is no going back"
for learning purpose:
Why should we have to download all projects in AOKP, if I wont use it.
There is a way to choice between what to download and what to not download?
cheers
Click to expand...
Click to collapse
In the third post i show you how to use a local manifest to remove projects you don't want/need from the repo before you sync, linked to in the build instructions. I always remove the device tree and vendor for other devices before my initial sync.
Yeah, I tried that, but I got weird error. Something about manifest, once I removed the example line about Samsung groups, it worked.
Would you mind to share your local_manifest.
Cheers
Sent from my LG-E971 using xda app-developers app
d.terenzzo said:
Yeah, I tried that, but I got weird error. Something about manifest, once I removed the example line about Samsung groups, it worked.
Would you mind to share your local_manifest.
Cheers
Sent from my LG-E971 using xda app-developers app
Click to expand...
Click to collapse
Sorry for the delay, didn't notice your post, anyways here is my current local manifest file for aokp
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="device/lge/geeb" name="Haze028/android_device_lge_geebca" remote="aokp" revision="aokp"/>
<project path="vendor/lge/geeb" name="Haze028/android_vendor_lge_geeb" remote="aokp" revision="cm-10.1"/>
<project path="kernel/lge/geeb" name="Haze028/geeb" remote="aokp" revision="geeb"/>
<project path="prebuilts/gcc/linux-x86/arm/arm-eabi-4.7" name="platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7" revision="master" groups="linux,arm" />
<project path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7" revision="master" groups="linux,arm" />
<remove-project name="AOKP/packages_apps_Launcher2" />
<remove-project name="AOKP/device_acer_a510" />
<remove-project name="AOKP/device_asus_grouper" />
<remove-project name="AOKP/device_asus_tilapia" />
<remove-project name="CyanogenMod/android_device_common" />
<remove-project name="device/generic/armv7-a-neon" />
<remove-project name="device/generic/armv7-a" />
<remove-project name="device/generic/common" />
<remove-project name="device/generic/goldfish" />
<remove-project name="device/generic/mips" />
<remove-project name="device/generic/x86" />
<remove-project name="device/google/accessory/arduino" />
<remove-project name="device/google/accessory/demokit" />
<remove-project name="AOKP/device_htc_evita" />
<remove-project name="AOKP/device_htc_msm8960-common" />
<remove-project name="AOKP/device_lge_iprj-common" />
<remove-project name="AOKP/device_lge_mako" />
<remove-project name="AOKP/device_lge_p930" />
<remove-project name="AOKP/device_lge_su640" />
<remove-project name="AOKP/device_lge_vs920" />
<remove-project name="AOKP/device_motorola_maserati" />
<remove-project name="AOKP/device_motorola_omap4-common" />
<remove-project name="AOKP/device_motorola_solana" />
<remove-project name="AOKP/device_motorola_spyder" />
<remove-project name="AOKP/device_motorola_targa" />
<remove-project name="AOKP/device_motorola_umts_spyder" />
<remove-project name="device/sample" />
<remove-project name="AOKP/device_samsung_aries-common" />
<remove-project name="AOKP/device_samsung_celox-common" />
<remove-project name="AOKP/device_samsung_d2-common" />
<remove-project name="AOKP/device_samsung_d2att" />
<remove-project name="AOKP/device_samsung_d2tmo" />
<remove-project name="AOKP/device_samsung_d2usc" />
<remove-project name="AOKP/device_samsung_d2vzw" />
<remove-project name="AOKP/device_samsung_galaxys2-common" />
<remove-project name="AOKP/device_samsung_hercules" />
<remove-project name="AOKP/device_samsung_i605" />
<remove-project name="AOKP/device_samsung_i9100" />
<remove-project name="AOKP/device_samsung_i9100g" />
<remove-project name="AOKP/device_samsung_i9300" />
<remove-project name="AOKP/device_samsung_l900" />
<remove-project name="AOKP/device_samsung_maguro" />
<remove-project name="AOKP/device_samsung_manta" />
<remove-project name="AOKP/device_samsung_msm8660-common" />
<remove-project name="AOKP/device_samsung_msm8960-common" />
<remove-project name="CyanogenMod/android_device_samsung_omap4-common" />
<remove-project name="AOKP/device_samsung_qcom-common" />
<remove-project name="AOKP/device_samsung_smdk4412-common" />
<remove-project name="CyanogenMod/android_device_samsung_smdk4412-qcom-common" />
<remove-project name="AOKP/device_samsung_t0lte" />
<remove-project name="AOKP/device_samsung_t0ltecdma" />
<remove-project name="AOKP/device_samsung_toro" />
<remove-project name="AOKP/device_samsung_toroplus" />
<remove-project name="AOKP/device_samsung_tuna" />
<remove-project name="AOKP/device_samsung_vibrantmtd" />
<remove-project name="device/ti/panda" />
<remove-project name="AOKP/vendor_htc" />
<remove-project name="AOKP/vendor_lge" />
<remove-project name="AOKP/vendor_motorola" />
<remove-project name="AOKP/vendor_samsung" />
<remove-project name="AOKP/vendor_acer_a510" />
<remove-project name="AOKP/vendor_asus" />
</manifest>
Click to expand...
Click to collapse
Haze028 said:
Sorry for the delay, didn't notice your post, anyways here is my current local manifest file for aokp
Click to expand...
Click to collapse
Hey Haze028, thanks for this great write up!
Anyways, im trying to build this for the Sprint LG OG. Do i need to sync with different device trees then this? Im very new at building from source, so, sorry if this is a stupid question.
Thanks!
eletendre84 said:
Hey Haze028, thanks for this great write up!
Anyways, im trying to build this for the Sprint LG OG. Do i need to sync with different device trees then this? Im very new at building from source, so, sorry if this is a stupid question.
Thanks!
Click to expand...
Click to collapse
I believe you will need different repo's, check out Team LGOG's github(https://github.com/TeamLGOG) They have device tree's for all variants, Chadouming is a member of that team and as such his CM10.1 uses those repo's. The local_manifest for Cyanogenmod in the OP should show you which repo's to use.... then depending on what rom you're looking to build some minor changes might be required.
I've not built using their repo's, but I'll help you in getting it all set up.
I've spent some time in the last couple of days trying to set up a Linux box to compile my own Cyanogenmod ROM and have run into some issues that are not mentioned in the official CM Wiki (http://wiki.cyanogenmod.org/w/Build_for_odin). You can start there, but to make things easier, I wanted to put everything in ONE single post so others don't have to go looking around different sources. Feel free to make any comments and suggestions.
This can easily be moved to a wiki if that's deemed more appropriate, but I just wanted to put it somewhere.
First, get yourself a 64 bit PC or VM (you can use Virtualbox) and install Ubuntu 12.04 LTS. You can install the latest version, but LTS builds have longer support and are more stable. If you're only using it for building ROMs, it's nice to be more consistent. Make sure you have at LEAST 35 GB, but the more the better. 100 GB are best if you have the space.
Once you have Ubuntu up and running, fire up a terminal, and get ready to type (or copy and paste). These steps are taken from Here
You need java, and you need the RIGHT java environment. We must get rid of any undesired ones that come with Ubuntu. These will be reinstalled if you do an update or install updates, so always make sure you are running the right version by default.
Remove unwanted JREs
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Now we add a repository that contains the proper Sun Java 1.6 JRE (this repository works as of 7/30/13, but it might disappear due to Oracle licensing claims)
Code:
sudo add-apt-repository ppa:webupd8team/java
Once the PPA is added, Ubuntu will know where to install the correct packages from. Next we copy and paste:
Code:
sudo apt-get update && sudo apt-get install oracle-java6-installer
The above command will update the repository database and then install the JRE. Follow the onscreen prompts to accept the license agreement, and when done, you should be able to confirm you have the right version by typing
Code:
java -version
And it should return something like this:
java version “1.6.0_37″
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
Now we install the packages needed to build and compile properly. Copy and paste this whole line:
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev python lzop
This might take a while, since the package manager has to download and install all those packages.
When done, we set up 'repo' which is the script in charge of downloading all the source code and files you will need to build your ROM. Copy and paste this into your terminal:
Code:
mkdir ~/bin && curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo && chmod a+x ~/bin/repo
Use your favorite text editor to add the new folder created above into your path (so you can run repo from anywhere). I use vi, but nano is more friendly:
Code:
sudo nano ~/.bashrc
At the very bottom, add this
Code:
export PATH=~/bin:$PATH
Save the file, exit the text editor, and then run
Code:
source ~/.bashrc
In the terminal, create a folder where you would like to have your code stored. If you have more than one drive, pick the fastest one. Avoid USB external drives, SSD is best. The official CM guide suggests:
Code:
mkdir ~/android/system
Go into the newly created folder and initialize your repo
Code:
cd ~/android/system
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
In the line above, you can pick 10.1 if you want to build Jelly Bean 4.2.2 or 10.2 for Jelly Bean 4.3.
Once the repo is initialized, it's time to have it pull EVERYTHING. This next command will take a while, depending on your internet connection:
Code:
repo sync
You can run the 'repo sync' command as often as you want. Doing this will get the latest version of any code on the CM repository, so make sure you do it often.
When you have all the data synced up and downloaded to your build box, you need to do some Odin (code name for the Xperia ZL) specific steps. These are taken from the CM Wiki
You need to get the pre-built apps, this should only need to be done once.
Code:
cd ~/android/system/vendor/cm
./get-prebuilts
Now we get the build environment ready:
Code:
source build/envsetup.sh
breakfast odin
You will notice that you will get some errors regarding missing files in the vendor/ directory. The CM guide tells you to pull the ZL blobs through USB, but thankfully, these files are hosted on the internet. To get them, once the 'breakfast' command is done, fire up your favorite text editor:
Code:
nano ~/home/system/.repo/local_manifests/roomservice.xml
Your XML file will look like this
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_sony_odin" path="device/sony/odin" remote="github" />
<project name="CyanogenMod/android_device_sony_common" path="device/sony/common" remote="github" />
<project name="CyanogenMod/android_device_sony_qcom-common" path="device/sony/qcom-common" remote="github" />
<project name="CyanogenMod/android_device_sony_fusion3-common" path="device/sony/fusion3-common" remote="github" />
<project name="CyanogenMod/android_kernel_sony_apq8064" path="kernel/sony/apq8064" remote="github" />
<project name="CyanogenMod/android_packages_apps_FMRadio" path="packages/apps/FmRadio" remote="github" />
<project name="CyanogenMod/android_hardware_sony_DASH" path="hardware/sony/DASH" remote="github" />
</manifest>
After the last project line, you will add the following (add it before the </manifest> line
Code:
<project name="TheMuppets/proprietary_vendor_sony" path="vendor/sony" remote="github" />
So it looks like this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_sony_odin" path="device/sony/odin" remote="github" />
<project name="CyanogenMod/android_device_sony_common" path="device/sony/common" remote="github" />
<project name="CyanogenMod/android_device_sony_qcom-common" path="device/sony/qcom-common" remote="github" />
<project name="CyanogenMod/android_device_sony_fusion3-common" path="device/sony/fusion3-common" remote="github" />
<project name="CyanogenMod/android_kernel_sony_apq8064" path="kernel/sony/apq8064" remote="github" />
<project name="CyanogenMod/android_packages_apps_FMRadio" path="packages/apps/FmRadio" remote="github" />
<project name="CyanogenMod/android_hardware_sony_DASH" path="hardware/sony/DASH" remote="github" />
<project name="TheMuppets/proprietary_vendor_sony" path="vendor/sony" remote="github" />
</manifest>
Save the file, and run a repo sync again
Code:
repo sync
Now execute the breakfast command again. You don't need to execute the 'source build/envsetup.sh' command unless you open a new terminal window.
Code:
breakfast odin
Turn on caching
Code:
export USE_CCACHE=1
And you're ready to build!
Code:
brunch odin
When the build completes, cd into the $OUT folder
Code:
cd $OUT
And you will have a zip file ready to flash. It will be called something like this
Code:
cm-10.2-20130731-UNOFFICIAL-odin.zip
and you will have a
Code:
recovery.img
file that you can use to flash to your bootloader. If you already have a CM build or a working recovery, you can skip that part and just flash the zip.
If you get any build errors, check the CM wiki. A lot of errors are due to running out of disk space, hence why it's important to give your VM a lot of it.
That's it! You have built a ROM!
Awesome man!! Thanks for teaching us
thanks for the guide,
when I get to:
"Now we install the packages needed to build and compile properly. Copy and paste this whole line:"
I do so but am presented with:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'lib32z1-dev' instead of 'lib32z-dev'
bzip2 is already the newest version.
libbz2-1.0 is already the newest version.
libreadline6 is already the newest version.
readline-common is already the newest version.
zip is already the newest version.
zip set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ia32-libs : Depends: ia32-libs-multiarch
libgl1-mesa-glx:i386 : Depends: libglapi-mesa:i386 (= 8.0.4-0ubuntu0.6)
Recommends: libgl1-mesa-dri:i386 (>= 7.2)
E: Unable to correct problems, you have held broken packages.
Can you help?
Thanks
redmongoose said:
thanks for the guide,
when I get to:
"Now we install the packages needed to build and compile properly. Copy and paste this whole line:"
I do so but am presented with:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'lib32z1-dev' instead of 'lib32z-dev'
bzip2 is already the newest version.
libbz2-1.0 is already the newest version.
libreadline6 is already the newest version.
readline-common is already the newest version.
zip is already the newest version.
zip set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ia32-libs : Depends: ia32-libs-multiarch
libgl1-mesa-glx:i386 : Depends: libglapi-mesa:i386 (= 8.0.4-0ubuntu0.6)
Recommends: libgl1-mesa-dri:i386 (>= 7.2)
E: Unable to correct problems, you have held broken packages.
Can you help?
Thanks
Click to expand...
Click to collapse
It means some dependencies are missing. It tells you right there. Looks like you need to install libglapi-mesa:i386, so do
sudo apt-get install "package name"
to install any missing dependencies
Hi,
First of all thanks for that guide, it really helped. I guess there is one step missing:
After customizing the local manifest file, you need to do repo sync to pull the files, which are needed to brunch..
hutilicious said:
Hi,
First of all thanks for that guide, it really helped. I guess there is one step missing:
After customizing the local manifest file, you need to do repo sync to pull the files, which are needed to brunch..
Click to expand...
Click to collapse
You're welcome and thank you for the heads up. I updated the guide with this information.
How much RAM should I allocate to the VM?
[UNOFFICIAL][I9500][UBUNTU TOUCH][CM 10.1][GT-I9500][Develop][20140315v1]
Started at March 15th 2014
Last update April 4th 2014
** Ubuntu Touch **
** Based on CyanogenMod 10.1 **
** For Samsung Galaxy s4 **
** GT-I9500 **
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
About Project
This project was created for build, develop and deploy Ubuntu Touch on Samsung Galaxy S4 GT-I9500.
Currently, there are other versions of S4 like quadcore based or specific region are officialy supported by CyanogenMod Team and some ones has Ubuntu Touch preview ready.
I used lubuntu 13.10 x64 to build the initial AOSP.
Objetives
Get source of Ubuntu Touch.
Get sources and documentation for I9500.
Get successful build of Ubuntu touch.
Get Ubuntu Touch running on I9500.
Get Ubuntu Touch successful working on I9500.
Make new applications for Ubuntu Touch.
Waiting for new release.
@TODO
To clone all git-hub repositories for i9500 device, hardware and kernel.
To create a new CM-10.2 Branch on all of them.
To Try again wiht the new cloned CM-10.2 Repositories.
@Observations
Into the device repository, There are some files about repository depends for i9500, How to compile for samsung specific "vendedor", and how to extract the property binaries and where they are.
Prepare the Build Environment
Package requirements
Code:
$ sudo add-apt-repository ppa:phablet-team/tools
Code:
$ sudo apt-get update && apt-get -y install bison build-essential curl flex git-core gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev phablet-tools android-tools-adb android-tools-fastboot nano curl ubuntu-dev-tools
Editing .bashrc
Code:
$ nano ~/.bashrc
Adding global variables
HTML:
export PATH=${PATH}:~/
export USE_CCACHE=1
export CCACHE_DIR=~/ccache
export OUT_DIR_COMMON_BASE=~/out
export PATH=$PATH:~/bin
Save it
Code:
[Control][O] and press enter to confirm.
Apply them
Code:
$ mkdir ~/ccache
$ mkdir ~/out
$ mkdir ~/bin
$ sh ~/.bashrc
Getting the Repositories
Be sure to be on your home directory
Code:
$ cd ~
Initialize the repo and main git
Code:
$ repo init -u git://phablet.ubuntu.com/CyanogenMod/android.git -b phablet-10.1
On error use this and run las command egain
Code:
$ git config --global user.name "montolla"
$ git config --global user.email "[email protected]"
Editing
Code:
$ nano .repo/manifests/default.xml
Edit the main repository
Find all entrys with Path="device andremove them
HTML:
<!--
<project path="device/common" name="CyanogenMod/android_device_common" />
<project path="device/generic/armv7-a-neon" name="CyanogenMod/android_device_generic_armv7-a-neon" />
<project path="device/generic/armv7-a" name="CyanogenMod/android_device_generic_armv7-a" />
<project path="device/generic/common" name="CyanogenMod/android_device_generic_common" />
<project path="device/generic/goldfish" name="CyanogenMod/android_device_generic_goldfish" />
<project path="device/generic/mips" name="CyanogenMod/android_device_generic_mips" />
<project path="device/generic/x86" name="CyanogenMod/android_device_generic_x86" />
<project path="device/sample" name="CyanogenMod/android_device_sample" groups="device" />
<project path="device/ti/panda" name="CyanogenMod/android_device_ti_panda" groups="device" />
-->
In nano you can find with [control][w] type device and press enter, then egain
[control][w] enter and nano will find the next result.
Put between end of file and before </manifest> tag
HTML:
<!--
i9500
-->
<project name="CyanogenMod/android_kernel_samsung_jf" path="kernel/samsung/i9500" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_kernel_samsung_exynos5410" path="kernel/samsung/exynos5410" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_hardware_samsung_slsi_exynos5410" path="hardware/samsung_slsi/exynos5410" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_hardware_samsung_slsi_exynos" path="hardware/samsung_slsi/exynos" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_hardware_samsung_slsi_exynos5-insignal" path="hardware/samsung_slsi/exynos5-insignal" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_hardware_samsung_slsi_openmax" path="hardware/samsung_slsi/openmax" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_i9500" path="device/samsung/i9500" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_jfltetmo" path="device/samsung/jfltetmo" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_msm8960-common" path="device/samsung/msm8960-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_samsung_jf-common" path="device/samsung/jf-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_kernel_samsung_jf" path="kernel/samsung/jf" remote="github" revision="cm-11.0" />
<!--
i9500
-->
Save it
Code:
[Control][O] and press enter to confirm.
Update the main repository with the new gits
Code:
$ repo init -m default.xml
Now lets start syncing all
Code:
$ repo sync
If you was done something wrong you can remove all entire repo folder and start again
Code:
$ rm -Rf .repo
But that just will delete the repo folder, not the source code, so if run repo sync again will be much more faster.
Code:
$ repo sync
Building
Applying patches
Code:
$ repo start ubuntu-touch device/samsung/i9500 ubuntu/uchroot
Check if device is connected and ready
Code:
$ adb devices
Getting some files from current devices (3 files for me)
Code:
$ cd ~/vendor/cm
$ ./get-prebuilts
$ cd ~
Start the process
Code:
$ chmod 777 ~
$ repo selfupdate
$ source build/envsetup.sh
$ breakfast i9500
$ cd device/samsung/i9500
$ ./extract-files.sh
$ croot
$ brunch i9500
Wait while build finish
There could be errors about low memory or no left space on disk.
You can fix/prevent that increasing your swap area, running a low graphics desktop enviroment (lxde) and use ccache component activated (I think it is already activated and setting up).
Documentation
http://wiki.cyanogenmod.org/w/I9500_Info
https://github.com/f69m/ubuntu-touch-tf300t/wiki/Build-Ubuntu-Touch-for-ASUS-Transformer-TF300T
http://wiki.cyanogenmod.org/w/Build_for_i9500
Hello to every body
Lets start!!!
Thanks
I am on
Just wanna say thanks for doing this!
Sent from my GT-I9500 using XDA Premium 4 mobile app
AmmVid said:
Just wanna say thanks for doing this!
Sent from my GT-I9500 using XDA Premium 4 mobile app
Click to expand...
Click to collapse
Hello
You welcome.
So lets start.
I have a question about.
I found that ubuntu touch is for CM 10.1 but I just found an old git for cm 10.2 and advance work git for 11.0.
So there are problem using ptablet_10.1 with cm11.0 tree?
And I was searching on internet about fastboot mode for i9500 and found nothing about.
The bootloader mode says "odin mode" at top of the screen and adb or fastboot are able to detect it.
I used lscpi and no device listed, but on android booting and working, adb detect perfectly the device.
So am I need a driver for "odin mode" to be able to flash it?
I will in touch at working week, because I just can work on it at night.
I try once on my brother windows pc with odin and that app was able to detect the device on bootloader mode but I need to install some drivers from sdk folder.
Regards
Thanks
Hello
I was found this:
http://www.ubuntu-mobile.de/topic/124-ubuntu-touch-f%C3%BCr-galaxy-s4/
On the title tags says "i9500/i9505".
So may that "von.zip" could work or give us an idea of the final product.
Regards
Thanks
montolla said:
Hello
You welcome.
So lets start.
I have a question about.
I found that ubuntu touch is for CM 10.1 but I just found an old git for cm 10.2 and advance work git for 11.0.
So there are problem using ptablet_10.1 with cm11.0 tree?
And I was searching on internet about fastboot mode for i9500 and found nothing about.
The bootloader mode says "odin mode" at top of the screen and adb or fastboot are able to detect it.
I used lscpi and no device listed, but on android booting and working, adb detect perfectly the device.
So am I need a driver for "odin mode" to be able to flash it?
I will in touch at working week, because I just can work on it at night.
I try once on my brother windows pc with odin and that app was able to detect the device on bootloader mode but I need to install some drivers from sdk folder.
Regards
Thanks
Click to expand...
Click to collapse
You should ask it to i9500 dev @Alberto96 or @Grarak , and btw maybe this will help http://forum.xda-developers.com/showthread.php?t=2402631
montolla said:
Hello
I was found this:
http://www.ubuntu-mobile.de/topic/124-ubuntu-touch-für-galaxy-s4/
On the title tags says "i9500/i9505".
So may that "von.zip" could work or give us an idea of the final product.
Regards
Thanks
Click to expand...
Click to collapse
I think thats not for i9500
Sent from my GT-P3100 using Tapatalk
@montolla have you compiled a build?
Sent from my GT-I9500 using XDA Premium 4 mobile app
Can we expect a compiled build?
I know my comment is like a BUMP, because the previous post asked the same
tembares said:
Can we expect a compiled build?
I know my comment is like a BUMP, because the previous post asked the same
Click to expand...
Click to collapse
Hello
I'm working on it at night. Be patient...
Thanks
rgshah3 said:
@montolla have you compiled a build?
Sent from my GT-I9500 using XDA Premium 4 mobile app
Click to expand...
Click to collapse
Hello
I founded troubles with that.
Apparently I need to clone the repositories on github and create a branch to cm 10.1 and compile again.
But I don't have clue about how can I do it?
Thanks
tembares said:
Can we expect a compiled build?
I know my comment is like a BUMP, because the previous post asked the same
Click to expand...
Click to collapse
Hello
I have a question.
Wich linux distro are better for cm building process?
Thanks
montolla said:
Hello
I have a question.
Wich linux distro are better for cm building process?
Thanks
Click to expand...
Click to collapse
Thank you for asking the question, but I do not know anything about building ROMs.
Is it an idea to ask a developer of a build for the i9505? Maybe they can help us.
All,
What is the status?
What has to happen to get this build moving?
@NBruderman can you compile this one?
Sent from my GT-I9500 using XDA Premium 4 mobile app
rgshah3 said:
@NBruderman can you compile this one?
Sent from my GT-I9500 using XDA Premium 4 mobile app
Click to expand...
Click to collapse
I don't have enough free storage on my computer right now to deal with another rom.... sorry
Can you post a ready to flash ZIP file?
mazterjay said:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Devices
S/\MSUNG Galaxy S4 (GT-I9505)
S/\MSUNG Note 8.0 (GT-N5110)
_________________________________________________
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Click to expand...
Click to collapse
In your sign you refer you have an i9505. This is for the i9500! The difference is the processor. Make sure you use the right one.
AFAIK there is already a build for the i9505.
Yeah, I know. Thanks, but no thanks. I need this since I'm also working on Ubuntu Touch. Please don't interact if you have no relevant thing to say. Getting pissed of this.
mazterjay said:
Yeah, I know. Thanks, but no thanks. I need this since I'm also working on Ubuntu Touch. Please don't interact if you have no relevant thing to say. Getting pissed of this.
Click to expand...
Click to collapse
Hello
I'm sorry.
I now understand that I need to learn very well how to build CM for I9500 ferst to try to do this.
I will start today.
thanks
FIRST STEP: Prepare your environment I do this in a ubuntu 16.04 64 bits
1.- Install java:
Code:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
2.- Install the necessary tools to make an Android build
Code:
sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip
3.- Get repo and configure it
Code:
mkdir ~/bin
curl commondatastorage . googleapis .com/git-repo-downloads/repo> ~/bin/repo
chmod a+x ~/bin/repo
3.a- Open the bashrc file included in the repo tool:
Code:
sudo nano ~/.bashrc
3.b- To set the right path for your local bin folder, paste the following code to a new line at the very bottom of the bashrc file, and then save the file using Ctrl+X:
Code:
export PATH=~/bin:$PATH
4.- Reload bash variables to include the new path:
Code:
source ~/.bashrc
SECOND STEP: Initialise the AOSP tree
1. In a terminal window, enter the following commands:
Code:
mkdir ~/android
cd ~/android
repo init -u android. googlesource.com/platform/manifest -b android-6.0.1_r46
2. Create and open a file where you will later add Sony’s repos containing the device configurations for Xperia devices, by entering the following commands:
Code:
mkdir .repo/local_manifests/
nano .repo/local_manifests/sony.xml
3. Add repos for our seagull by copying and pasting the following text into the file, and then save the file using Ctrl+X:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="sony" fetch="git github. com/sonyxperiadev/" />
<remove-project name="platform/hardware/qcom/camera" />
<project path="device/sony/sepolicy" name="device-sony-sepolicy" groups="device" remote="sony" revision="m-mr1" />
<project path="device/sony/amami" name="device-sony-amami" groups="device" remote="sony" revision="master" />
<project path="device/sony/aries" name="device-sony-aries" groups="device" remote="sony" revision="master" />
<project path="device/sony/castor" name="device-sony-castor" groups="device" remote="sony" revision="master" />
<project path="device/sony/castor_windy" name="device-sony-castor_windy" groups="device" remote="sony" revision="master" />
<project path="device/sony/common" name="device-sony-common" groups="device" remote="sony" revision="m-mr1" />
<project path="device/sony/common-headers" name="device-sony-common-headers" groups="device" remote="sony" revision="aosp/LA.BF64.1.2.2_rb4.7" />
<project path="device/sony/common-kernel" name="vendor-sony-kernel" groups="device" remote="sony" revision="aosp/LA.BF64.1.2.2_rb4.7" />
<project path="device/sony/eagle" name="device-sony-eagle" groups="device" remote="sony" revision="master" />
<project path="device/sony/flamingo" name="device-sony-flamingo" groups="device" remote="sony" revision="master" />
<project path="device/sony/honami" name="device-sony-honami" groups="device" remote="sony" revision="master" />
<project path="device/sony/kanuti" name="device-sony-kanuti" groups="device" remote="sony" revision="master" />
<project path="device/sony/ivy" name="device-sony-ivy" groups="device" remote="sony" revision="master" />
<project path="device/sony/karin" name="device-sony-karin" groups="device" remote="sony" revision="master" />
<project path="device/sony/karin_windy" name="device-sony-karin_windy" groups="device" remote="sony" revision="master" />
<project path="device/sony/kitakami" name="device-sony-kitakami" groups="device" remote="sony" revision="master" />
<project path="device/sony/leo" name="device-sony-leo" groups="device" remote="sony" revision="master" />
<project path="device/sony/rhine" name="device-sony-rhine" groups="device" remote="sony" revision="master" />
<project path="device/sony/satsuki" name="device-sony-satsuki" groups="device" remote="sony" revision="master" />
<project path="device/sony/scorpion" name="device-sony-scorpion" groups="device" remote="sony" revision="master" />
<project path="device/sony/scorpion_windy" name="device-sony-scorpion_windy" groups="device" remote="sony" revision="master" />
<project path="device/sony/seagull" name="device-sony-seagull" groups="device" remote="sony" revision="master" />
<project path="device/sony/shinano" name="device-sony-shinano" groups="device" remote="sony" revision="master" />
<project path="device/sony/sirius" name="device-sony-sirius" groups="device" remote="sony" revision="master" />
<project path="device/sony/sumire" name="device-sony-sumire" groups="device" remote="sony" revision="master" />
<project path="device/sony/suzuran" name="device-sony-suzuran" groups="device" remote="sony" revision="master" />
<project path="device/sony/tianchi" name="device-sony-tianchi" groups="device" remote="sony" revision="master" />
<project path="device/sony/togari" name="device-sony-togari" groups="device" remote="sony" revision="master" />
<project path="device/sony/tulip" name="device-sony-tulip" groups="device" remote="sony" revision="master" />
<project path="device/sony/yukon" name="device-sony-yukon" groups="device" remote="sony" revision="master" />
<project path="hardware/qcom/camera" name="camera" groups="device" remote="sony" revision="aosp/LA.BF64.1.2.2_rb4.7" />
<project path="kernel/sony/msm" name="kernel" groups="device" remote="sony" revision="aosp/LA.BF64.1.2.2_rb4.7" />
<project path="vendor/qcom/opensource/dataservices" name="vendor-qcom-opensource-dataservices" groups="device" remote="sony" revision="master" />
<project path="vendor/sony-oss/thermanager" name="thermanager" groups="device" remote="sony" revision="master" />
<project path="vendor/sony-oss/mkqcdtbootimg" name="mkqcdtbootimg" groups="device" remote="sony" revision="master" />
<project path="vendor/sony-oss/macaddrsetup" name="macaddrsetup" groups="device" remote="sony" revision="master" />
<project path="vendor/sony-oss/timekeep" name="timekeep" groups="device" remote="sony" revision="master" />
</manifest>
4. To download the code into the device repos created above, run the command
Code:
repo sync
THIRD STEP: Add necessary patches from the AOSP upstream branch
In order for certain functions to work on the hardware in Xperia devices, you need to add a set of patches from the AOSP master branch. This is done by executing the following commands:
In a terminal window, enter:
Code:
cd external/libnfc-nci
git fetch android .googlesource. com/platform/external/libnfc-nci refs/changes/61/170861/2 && git cherry-pick FETCH_HEAD
cd ../../hardware/qcom/gps
git fetch android .googlesource .com/platform/hardware/qcom/gps refs/changes/82/178682/1 && git cherry-pick FETCH_HEAD
cd ../keymaster
git cherry-pick 888834f9aba0609222c6e6bbd86bd6625af28746
git fetch android .googlesource. com/platform/hardware/qcom/keymaster refs/changes/70/212570/5 && git cherry-pick FETCH_HEAD
git fetch android .googlesource. com/platform/hardware/qcom/keymaster refs/changes/80/212580/2 && git cherry-pick FETCH_HEAD
git fetch android .googlesource. com/platform/hardware/qcom/keymaster refs/changes/61/213261/1 && git cherry-pick FETCH_HEAD
cd ../../broadcom/libbt/
git fetch android .googlesource. com/platform/hardware/broadcom/libbt refs/changes/17/114817/2 && git cherry-pick FETCH_HEAD
FOURTH STEP: Building our own upgrade kernel
1.- I prefer build the kernel on a different directory that the android sources so we go to create the directory tree and get the toolchain
Code:
mkdir /kenreldroid && cd /kerneldroid
git clone android. googlesource. com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/
1. Export the cross compiler&update bc (I need it)
Code:
export CROSS_COMPILE=/ kerneldroid/arm-eabi-4.8/bin/arm-eabi-
apt-get install bc
2. Download the kernel source from GitHub
Code:
git clone github .com/sonyxperiadev/kernel
cd kernel
git branch –r
git checkout
3. Configure the kernel: Configure the kernel is a required step before building it. Kernel drivers can be turned on or off, or be built as modules. This has to be configured in order for the kernel to function as desired. Configure the kernel by entering:
Code:
make ARCH=arm CROSS_COMPILE=$CROSS_COMPILE aosp_yukon_seagull_defconfig
4. Build the kernel and needed modules: When building the kernel a compressed kernel image file is created and placed in the default target arch/arm/boot/zImage on your computer. To start the build, enter:
Code:
make ARCH=arm CROSS_COMPILE=$CROSS_COMPILE -j 8(number of threads from your processor)
5. Now we have our vzimage we need to rename it and copy him to our android tree
Code:
mv /kerneldroid/kernel/arch/arm/boot/vzimage /kerneldroid/kernel/arch/arm/boot/kernel
mv /kerneldroid/kernel/arch/arm/boot/dts ~/android/device/sony/seagull
mv /kerneldroid/kernel/arch/arm/boot/kernel ~/android/device/sony/seagull/
FIFTH STEP: Building our ROM
1. Enter the following commands:
Code:
source build/envsetup.sh && lunch
2. When prompted, pick the number corresponding to your device in the list displayed and press enter.
3. To start the build, type:
Code:
make –j <insert the cpu thread number of your computer WITHOU <>>
This step will take a long time. It may take up to several hours, so go grab a coffee or play a game while you wait. When it’s done, AOSP images that can be flashed to a device will be ready.
Flash AOSP image to your device
Before you flash the images that you built in the previous step, you must make sure your device is unlocked through Sony’s unlock boot loader service. Then you can flash the AOSP images on your device by following these steps:
1. On your device: Connect the device to your computer in Fastboot mode, by pressing volume up while inserting the USB cable. When the device is in Fastboot mode, the LED on the device will be illuminated in blue.
2. On your computer: Flash the boot, system and userdata images by entering the following commands in a terminal window:
Code:
fastboot –S 256M flash boot out/target/product/<device>/boot.img
fastboot –S 256M flash system out/target/product/<device>/system.img
fastboot –S 256M flash userdata out/target/product/<device>/userdata.img
PROBLEMS FOUND
1.- while compiling the driver i have found just one problem, the file "bs_log.h" wasnt found so you can do this
Code:
cd ~/kerneldroid/kernel/include/linux
nano bs_log.h
and paste this
Code:
#ifndef __BS_LOG_H
#define __BS_LOG_H
#include <linux/kernel.h>
#define LOG_LEVEL_E 3
#define LOG_LEVEL_N 5
#define LOG_LEVEL_I 6
#define LOG_LEVEL_D 7
#ifndef LOG_LEVEL
#define LOG_LEVEL LOG_LEVEL_I
#endif
#ifndef MODULE_TAG
#define MODULE_TAG "<>"
#endif
#if (LOG_LEVEL >= LOG_LEVEL_E)
#define PERR(fmt, args...) \
printk(KERN_ERR "\n" "[E]" KERN_ERR MODULE_TAG "<%s><%d>" \
fmt "\n", __func__, __LINE__, ##args)
#else
#define PERR(fmt, args...)
#endif
#if (LOG_LEVEL >= LOG_LEVEL_N)
#define PNOTICE(fmt, args...) \
printk(KERN_ERR "\n" "[N]" KERN_NOTICE MODULE_TAG "<%s><%d>" \
fmt "\n", __func__, __LINE__, ##args)
#else
#define PNOTICE(fmt, args...)
#endif
#if (LOG_LEVEL >= LOG_LEVEL_I)
#define PINFO(fmt, args...) \
printk(KERN_ERR "\n" "[I]" KERN_INFO MODULE_TAG "<%s><%d>" \
fmt "\n", __func__, __LINE__, ##args)
#else
#define PINFO(fmt, args...)
#endif
#if (LOG_LEVEL >= LOG_LEVEL_D)
#define PDEBUG(fmt, args...) \
printk(KERN_ERR "\n" "[D]" KERN_DEBUG MODULE_TAG "<%s><%d>" \
fmt "\n", __func__, __LINE__, ##args)
#else
#define PDEBUG(fmt, args...)
#endif
#endif
2.- while compiling the entire rom i have a problem with "unsupported reloc 42" the fix is the next
Code:
nano ~/android/art/build/Android.common_build.mk
look for this
Code:
# Clang build support.
# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
and change for this
Code:
# Host.
ART_HOST_CLANG := false
ifeq ($(WITHOUT_HOST_CLANG),false)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
BUGS FOUND
unknown baseband so the device dont connect to the network from operator, i'm looking info and help to fix this.
This is a guide for building LineageOS 14.1 for Wileyfox Swift.
The intention of this post is to give interested users a step-by-step guide to build LineageOS for Swift on their own.
It's seems to me that nowadays many contributors on XDA are not willing to share their expertise but they seem to forget that building a ROM is a collaboration of many people. While I was trying to build this ROM I experienced the lack of willingness to help so I am posting this guide to prevent other users to go through the same time-consuming trial-and-error processes.
Of course, some preconditions apply:
You need enough RAM to build the ROM
You need to set up a build environment (either by setting up a virtual machine or better by using Linux)
For building my own ROM, I was using Ubuntu 16.10 and 8GB of memory.
Let's go through the process step by step.
1. Setting up the building environment:
Execute the following commands inside your terminal:
sudo apt update
sudo apt upgrade
sudo apt install bison build-essential curl wget flex git gnupg libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libxml2 libxml2-utils lzop maven pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev bc ccache automake lzop gperf zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline6-dev lib32z1-dev python-networkx libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools schedtool dpkg-dev liblz4-tool make optipng libwxgtk3.0-dev openjdk-8-jdk
2. Make a folder where you put the android source and change to that folder:
mkdir LineageOS
cd LineageOS
3. Download the repo-script from google and put it to /usr/bin:
wget https://storage.googleapis.com/git-repo-downloads/repo
sudo cp repo /usr/bin/repo
rm repo
4. Make it executable:
sudo chmod a+x /usr/bin/repo
5. Set up git:
git config --global user.name "YOUR USERNAME"
git config --global user.email [email protected]
6. Fetch the sources:
repo init -u https://github.com/LineageOS/android.git -b cm-14.1
repo sync
source build/envsetup.sh
breakfast crackling
7. Modify the roomservice.xml (find it here: .repo/local_manifests/) to get a working ROM for Wileyfox Swift:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="LineageOS/android_device_wileyfox_crackling" path="device/wileyfox/crackling" remote="github" revision="cm-14.1" />
<project name="LineageOS/android_device_cyanogen_msm8916-common" path="device/cyanogen/msm8916-common" remote="github" revision="cm-14.1" />
<project name="LineageOS/android_kernel_cyanogen_msm8916" path="kernel/cyanogen/msm8916" remote="github" revision="cm-14.1" />
<project name="LineageOS/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-14.1" />
<project name="TheMuppets/proprietary_vendor_wileyfox" path="vendor/wileyfox" remote="github" revision="cm-14.1" />
<project name="TheMuppets/proprietary_vendor_qcom_binaries" path="vendor/qcom/binaries" remote="github" revision="cm-14.1" />
</manifest>
8. Update the sources:
repo sync
breakfast crackling
9. Start the build process
brunch crackling
10. Finish
You will find the ROM under out/target/product/crackling
11. Optional: If you want to have root access with your ROM, also execute this in your terminal (before brunch):
export WITH_SU=true
12. Troubles: If you have 8GB RAM or less, the building process might stop and complain about jack-server.
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
I also wondered why theres no 'plain lineageos' image - so:
Thank you !
Thank you
I compiled and installed it but WIFI doesnt seem to work for me.
'Solved' it...
Worked a treat, thank you so much!
Just a tip for anyone compiling this on a Digital Ocean droplet or some other headless server: install ImageMagick too, without it the compile failes. I used the 12 CPU/32GB RAM, Ubuntu 16.10 droplet and the build took just over an hour.
Thanks again
Mike