[Tutorial] Compile JB on Ubuntu

Search This thread

dastin1015

Inactive Recognized Developer
Dec 2, 2010
3,849
10,580
27
Chula Vista, CA
NOTICE: I'm beginning to see this tutorial on numerous other sites. I'm fine with it being posted on other sites, as long as I am given credit and have your thread point back to here for the pieces that I have specifically written. I do not condone near verbatim or verbatim copy and pasting of my work or others work without credit. Please give credit where credit is due. Thank you.

07-17-12: I have not, nor shall I ever claim copyright.


To compile Jellybean on Ubuntu I'm going to first give you steps to set up your computer to get this thing rolling.

You MUST be running a 64 bit version of Ubuntu, 32 bit is not supported.

This will NOT make a fully functional ROM, but will give you a place to start. Also I CANNOT fix every error you run into.

READ the entire OP and make sure to properly follow instructions. Don't forget to search the thread as your question may have already been answered.

Please use Pastebin for all errors you run into. Posting a link is much easier than a long list of errors in the thread. Thank you.

You will need 25GB (or more) free to complete a single build, and up to 80GB (or more) for a full set of builds.

1) You need the following:
-JDK 6 if you wish to build Jellybean.
Code:
$ sudo apt-get install openjdk-6-jdk

-Python, which you can download from python.org. Or:
Code:
$ sudo apt-get install python

-Git, which you can find it at git-scm.com. Or:
Code:
$ sudo apt-get install git-core

-Android SDK:
  • Download the SDK here: http://developer.android.com/sdk/index.html
  • Extract the SDK and place it in your home directory.
  • I renamed my SDK to android-sdk to make it easier to navigate to.
  • Go to your home folder, press Ctrl+H to show hidden files, and open up your .bashrc file.
  • Add these lines at the bottom of the file:
    Code:
    # Android tools
    export PATH=${PATH}:~/android-sdk/tools
    export PATH=${PATH}:~/android-sdk/platform-tools
    export PATH=${PATH}:~/bin
  • Find your .profile file and add this at the bottom of the file:
    Code:
    PATH="$HOME/android-sdk/tools:$HOME/android-sdk/platform-tools:$PATH"
  • You have now successfully installed the Android SDK.
  • To check for updates issue this into your terminal:
    Code:
    $ android

2) Install required packages.
Code:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc

On Ubuntu 10.10:
Code:
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

On Ubuntu 11.10:
Code:
$ sudo apt-get install libx11-dev:i386

Building on Ubuntu 12.04 is currently only experimentally supported and is not guaranteed to work on branches other than master.
Code:
$ sudo apt-get install git gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev x11proto-core-dev \
  libx11-dev libreadline6-dev libgl1-mesa-glx \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

3) Configure your USB.
Code:
$ gksudo gedit /etc/udev/rules.d/51-android.rules

Inside of this blank text file insert:
Code:
#Acer
SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666"

#ASUS
SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666"

#Dell
SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0666"

#Foxconn
SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0666"

#Garmin-Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="091E", MODE="0666"

#Google
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666"

#HTC
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666"

#Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666"

#K-Touch
SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666"

#KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666"

#Kyocera
SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666"

#Lenevo
SUBSYSTEM=="usb", ATTR{idVendor}=="17EF", MODE="0666"

#LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666"

#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666"

#NEC
SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666"

#Nook
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666"

#Nvidia
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666"

#OTGV
SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666"

#Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10A9", MODE="0666"

#Philips
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666"

#PMC-Sierra
SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666"

#Qualcomm
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666"

#SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666"

#Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666"

#Sharp
SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666"

#Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666"

#Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666"

#ZTE
SUBSYSTEM=="usb", ATTR{idVendor}=="19D2", MODE="0666"

4) Save the file and close it and then issue this command:
Code:
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules

5) Install the repo:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

6) Initialize the repo:
Code:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

6a) For AOSP:
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2
For CM:
Code:
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1

6.1) For people who have already done a repo init:
Code:
$ cd WORKING_DIRECTORY
AOSP:
Code:
$ repo init -b android-4.3_r2
$ repo sync
CM:
Code:
$ repo init -b cm-10.1
$ repo sync


7) When prompted, enter your real name and email address.

8) Gather the files:
Code:
$ repo sync

9) Continue onto adding a device

~How To Add A Device To The List~

1) Find the github for your device you wish to add. (For me it is the Samsung Epic 4G Touch [codename d710])

2) Now navigate to the location you are going clone the device tree to:
Code:
$ cd WORKING_DIRECTORY/device
$ mkdir samsung

3) Clone the github device tree from remote to local: (The name after the branch would be whatever you want that folder to be named so make sure it is whatever standard name would be for your device, example: Nexus One [passion], Nexus S [crespo], Motorola Droid [sholes], HTC Incredible [inc], etc.)
Code:
$ git clone git://github.com/CyanogenMod/android_device_samsung_d710.git -b cm-10.1 d710

4) Now navigate into the folder:
Code:
$ cd d710

5) Connect phone to computer and make sure USB debugging is enabled and you have adb set up.

6) Extract Device Proprietary Files:
Code:
$ ./extract-files.sh
Or:
Code:
./proprietary-files.sh
Or: See if other repos have your device's proprietary blobs already (like d710):
Code:
$ ~/WORKING_DIRECTORY
$ mkdir vendor
$ git clone https://github.com/TheMuppets/proprietary_vendor_samsung -b cm-10.2 samsung

6.1) Some devices have other dependencies like a common device repo. The d710 utilizes a galaxys2-common repo for the galaxys2 family of devices. Clone that repo. From inside the d710 folder:
Code:
$ cd ..
$ git clone git://github.com/CyanogenMod/android_device_samsung_galaxys2-common.git -b cm-10.1 galaxys2-common

7) Navigate back to your home directory for building:
Code:
$ cd ~/WORKING_DIRECTORY

8) Prepare To Compile:
Code:
$ source build/envsetup.sh

Or:
Code:
$ . build/envsetup.sh

9) Get your list of devices:
Code:
$ lunch

10) Pick your poison.

11) Now compile ('#' being the number of cores in your processor +1):
Code:
$ make -j#

12) Speed up builds using ccache (optional, but highly recommended):
Edit your .bashrc and add this line at the bottom:
Code:
export USE_CCACHE=1
Then issue these commands:
Code:
$ export USE_CCACHE=1
$ export CCACHE_DIR=~/.ccache
$ prebuilts/misc/linux-x86/ccache/ccache -M 50G
The suggested cache size is 50-100G. (This is size in GB)

Or for a flashable zip:
Code:
$ make -j# otapackage

~FIXES~
If you are running into issues such as:

Code:
Which would you like? [full-eng] 5
build/core/product_config.mk:209: *** No matches for product "full_d710".  Stop.
Device d710 not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Repository for d710 not found in the CyanogenMod Github repository list. If this is in error, you may need to manually add it to your local_manifest.xml.
build/core/product_config.mk:209: *** No matches for product "full_d710".  Stop.

** Don't have a product spec for: 'full_d710'
** Do you have the right repo manifest?

What you need to do is to edit your blob to match the PRODUCT_NAME to the file name. For example with mine I have full_d710.mk therefore in this file I need to have PRODUCT_NAME to match it. Whatever error it is looking for you just need to change the PRODUCT_NAME line to match what the error shows.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If you run into issues with Java being the incorrect version here is the fix:
Make sure Java 6 JDK is installed by typing in:
Code:
$ java -version
Open the file main.mk in build/core and delete this line from the java error code section:
Code:
$(error stop)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Change all references in your device repo from frameworks/base to frameworks/native

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Apply this patch for guava: https://github.com/CyanogenMod/andr...mmit/c8b97210aa31c9b80b5fd136d8617ebe4e731e09

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Android 4.1+ needs an insecure kernel to use adb: http://forum.xda-developers.com/showthread.php?t=1687590

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

This tutorial is based off this one: http://source.android.com/index.html
 
Last edited:

brfield

Senior Member
Apr 21, 2010
351
25
Goodyear, AZ
And what if we don't already have a working device tree? I want to try to get SOMETHING running on my T-Mo GS3, just to see how this all works and maybe contribute to the community.
 

cdesai

Inactive Recognized Developer
Jan 16, 2011
2,296
4,088
IN YOUR HEAD
Na, the US versions got a S4, and the international s3 has an exynos.

Totally different.

Also, might wanna move some stuff to spoliers, just to make scrolling easier.

And, using android-4.1.1_r1 branch for the init would be better than using jb-dev.
 
T

_thalamus

Guest
[snip]
And, using android-4.1.1_r1 branch for the init would be better than using jb-dev.

JBQ actually recommends building from the tag as opposed to the branch.

Code:
repo init -u https://android.googlesource.com/platform/manifest -b refs/tags/android-4.1.1_r1
repo sync

For people who have already done a repo init:

Code:
cd /path/to/AndroidTree
repo init -b refs/tags/android-4.1.1_r1
repo sync
 

00hero00

Senior Member
Sep 19, 2009
112
13
Ulm
What Ubuntu Version are you working with?
I heard 10.04 should bring the best results, so I installed that one..

but before I had 12.04 and the experience there is a lot better.. Anyone compiling on 12.04 without problems?
 
  • Like
Reactions: Ghostfreak NB

rohan32

Retired Forum Moderator / Retired Recognized Devel
Nov 27, 2011
1,980
5,028
New Jersey
rmathur.com
make otapackage help

So I've tried before to get an AOSP Rom working for my phone (the HTC One XL) but I kept getting this error when I try to do a make otapackage:

make: *** No rule to make target `otapackage'. Stop.

I'm getting that again for JB.
Any help?

---------- Post added at 09:58 AM ---------- Previous post was at 09:57 AM ----------

thanks a lot for this.

wich ubuntu is the best for this?

10.04 is still what Google uses in-house so its probably the best.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 313
    NOTICE: I'm beginning to see this tutorial on numerous other sites. I'm fine with it being posted on other sites, as long as I am given credit and have your thread point back to here for the pieces that I have specifically written. I do not condone near verbatim or verbatim copy and pasting of my work or others work without credit. Please give credit where credit is due. Thank you.

    07-17-12: I have not, nor shall I ever claim copyright.


    To compile Jellybean on Ubuntu I'm going to first give you steps to set up your computer to get this thing rolling.

    You MUST be running a 64 bit version of Ubuntu, 32 bit is not supported.

    This will NOT make a fully functional ROM, but will give you a place to start. Also I CANNOT fix every error you run into.

    READ the entire OP and make sure to properly follow instructions. Don't forget to search the thread as your question may have already been answered.

    Please use Pastebin for all errors you run into. Posting a link is much easier than a long list of errors in the thread. Thank you.

    You will need 25GB (or more) free to complete a single build, and up to 80GB (or more) for a full set of builds.

    1) You need the following:
    -JDK 6 if you wish to build Jellybean.
    Code:
    $ sudo apt-get install openjdk-6-jdk

    -Python, which you can download from python.org. Or:
    Code:
    $ sudo apt-get install python

    -Git, which you can find it at git-scm.com. Or:
    Code:
    $ sudo apt-get install git-core

    -Android SDK:
    • Download the SDK here: http://developer.android.com/sdk/index.html
    • Extract the SDK and place it in your home directory.
    • I renamed my SDK to android-sdk to make it easier to navigate to.
    • Go to your home folder, press Ctrl+H to show hidden files, and open up your .bashrc file.
    • Add these lines at the bottom of the file:
      Code:
      # Android tools
      export PATH=${PATH}:~/android-sdk/tools
      export PATH=${PATH}:~/android-sdk/platform-tools
      export PATH=${PATH}:~/bin
    • Find your .profile file and add this at the bottom of the file:
      Code:
      PATH="$HOME/android-sdk/tools:$HOME/android-sdk/platform-tools:$PATH"
    • You have now successfully installed the Android SDK.
    • To check for updates issue this into your terminal:
      Code:
      $ android

    2) Install required packages.
    Code:
    $ sudo apt-get install git-core gnupg flex bison gperf build-essential \
      zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
      x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
      libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
      libxml2-utils xsltproc

    On Ubuntu 10.10:
    Code:
    $ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

    On Ubuntu 11.10:
    Code:
    $ sudo apt-get install libx11-dev:i386

    Building on Ubuntu 12.04 is currently only experimentally supported and is not guaranteed to work on branches other than master.
    Code:
    $ sudo apt-get install git gnupg flex bison gperf build-essential \
      zip curl libc6-dev libncurses5-dev x11proto-core-dev \
      libx11-dev libreadline6-dev libgl1-mesa-glx \
      libgl1-mesa-dev g++-multilib mingw32 tofrodos \
      python-markdown libxml2-utils xsltproc zlib1g-dev
    $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

    3) Configure your USB.
    Code:
    $ gksudo gedit /etc/udev/rules.d/51-android.rules

    Inside of this blank text file insert:
    Code:
    #Acer
    SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666"
    
    #ASUS
    SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666"
    
    #Dell
    SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0666"
    
    #Foxconn
    SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0666"
    
    #Garmin-Asus
    SUBSYSTEM=="usb", ATTR{idVendor}=="091E", MODE="0666"
    
    #Google
    SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666"
    
    #HTC
    SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666"
    
    #Huawei
    SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666"
    
    #K-Touch
    SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666"
    
    #KT Tech
    SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666"
    
    #Kyocera
    SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666"
    
    #Lenevo
    SUBSYSTEM=="usb", ATTR{idVendor}=="17EF", MODE="0666"
    
    #LG
    SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666"
    
    #Motorola
    SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666"
    
    #NEC
    SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666"
    
    #Nook
    SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666"
    
    #Nvidia
    SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666"
    
    #OTGV
    SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666"
    
    #Pantech
    SUBSYSTEM=="usb", ATTR{idVendor}=="10A9", MODE="0666"
    
    #Philips
    SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666"
    
    #PMC-Sierra
    SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666"
    
    #Qualcomm
    SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666"
    
    #SK Telesys
    SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666"
    
    #Samsung
    SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666"
    
    #Sharp
    SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666"
    
    #Sony Ericsson
    SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666"
    
    #Toshiba
    SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666"
    
    #ZTE
    SUBSYSTEM=="usb", ATTR{idVendor}=="19D2", MODE="0666"

    4) Save the file and close it and then issue this command:
    Code:
    $ sudo chmod a+r /etc/udev/rules.d/51-android.rules

    5) Install the repo:
    Code:
    $ mkdir ~/bin
    $ PATH=~/bin:$PATH
    $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo

    6) Initialize the repo:
    Code:
    $ mkdir WORKING_DIRECTORY
    $ cd WORKING_DIRECTORY

    6a) For AOSP:
    Code:
    $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2
    For CM:
    Code:
    $ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1

    6.1) For people who have already done a repo init:
    Code:
    $ cd WORKING_DIRECTORY
    AOSP:
    Code:
    $ repo init -b android-4.3_r2
    $ repo sync
    CM:
    Code:
    $ repo init -b cm-10.1
    $ repo sync


    7) When prompted, enter your real name and email address.

    8) Gather the files:
    Code:
    $ repo sync

    9) Continue onto adding a device

    ~How To Add A Device To The List~

    1) Find the github for your device you wish to add. (For me it is the Samsung Epic 4G Touch [codename d710])

    2) Now navigate to the location you are going clone the device tree to:
    Code:
    $ cd WORKING_DIRECTORY/device
    $ mkdir samsung

    3) Clone the github device tree from remote to local: (The name after the branch would be whatever you want that folder to be named so make sure it is whatever standard name would be for your device, example: Nexus One [passion], Nexus S [crespo], Motorola Droid [sholes], HTC Incredible [inc], etc.)
    Code:
    $ git clone git://github.com/CyanogenMod/android_device_samsung_d710.git -b cm-10.1 d710

    4) Now navigate into the folder:
    Code:
    $ cd d710

    5) Connect phone to computer and make sure USB debugging is enabled and you have adb set up.

    6) Extract Device Proprietary Files:
    Code:
    $ ./extract-files.sh
    Or:
    Code:
    ./proprietary-files.sh
    Or: See if other repos have your device's proprietary blobs already (like d710):
    Code:
    $ ~/WORKING_DIRECTORY
    $ mkdir vendor
    $ git clone https://github.com/TheMuppets/proprietary_vendor_samsung -b cm-10.2 samsung

    6.1) Some devices have other dependencies like a common device repo. The d710 utilizes a galaxys2-common repo for the galaxys2 family of devices. Clone that repo. From inside the d710 folder:
    Code:
    $ cd ..
    $ git clone git://github.com/CyanogenMod/android_device_samsung_galaxys2-common.git -b cm-10.1 galaxys2-common

    7) Navigate back to your home directory for building:
    Code:
    $ cd ~/WORKING_DIRECTORY

    8) Prepare To Compile:
    Code:
    $ source build/envsetup.sh

    Or:
    Code:
    $ . build/envsetup.sh

    9) Get your list of devices:
    Code:
    $ lunch

    10) Pick your poison.

    11) Now compile ('#' being the number of cores in your processor +1):
    Code:
    $ make -j#

    12) Speed up builds using ccache (optional, but highly recommended):
    Edit your .bashrc and add this line at the bottom:
    Code:
    export USE_CCACHE=1
    Then issue these commands:
    Code:
    $ export USE_CCACHE=1
    $ export CCACHE_DIR=~/.ccache
    $ prebuilts/misc/linux-x86/ccache/ccache -M 50G
    The suggested cache size is 50-100G. (This is size in GB)

    Or for a flashable zip:
    Code:
    $ make -j# otapackage

    ~FIXES~
    If you are running into issues such as:

    Code:
    Which would you like? [full-eng] 5
    build/core/product_config.mk:209: *** No matches for product "full_d710".  Stop.
    Device d710 not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
    Repository for d710 not found in the CyanogenMod Github repository list. If this is in error, you may need to manually add it to your local_manifest.xml.
    build/core/product_config.mk:209: *** No matches for product "full_d710".  Stop.
    
    ** Don't have a product spec for: 'full_d710'
    ** Do you have the right repo manifest?

    What you need to do is to edit your blob to match the PRODUCT_NAME to the file name. For example with mine I have full_d710.mk therefore in this file I need to have PRODUCT_NAME to match it. Whatever error it is looking for you just need to change the PRODUCT_NAME line to match what the error shows.

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    If you run into issues with Java being the incorrect version here is the fix:
    Make sure Java 6 JDK is installed by typing in:
    Code:
    $ java -version
    Open the file main.mk in build/core and delete this line from the java error code section:
    Code:
    $(error stop)

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Change all references in your device repo from frameworks/base to frameworks/native

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Apply this patch for guava: https://github.com/CyanogenMod/andr...mmit/c8b97210aa31c9b80b5fd136d8617ebe4e731e09

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Android 4.1+ needs an insecure kernel to use adb: http://forum.xda-developers.com/showthread.php?t=1687590

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    This tutorial is based off this one: http://source.android.com/index.html
    13
    I'm going to put this out here for everybody. I received an email from somebody this morning calling me certain names because he thinks I have claimed copyright on this tutorial. I would like everybody here to know that I haven't claimed copyright, nor shall I ever claim copyright. All I ask for is acknowledgement for the parts of the tutorial which I have written because the base tutorial obviously doesn't have everything I wrote. Base tutorial: http://source.android.com/
    11
    You mean i should delete all the files re-sync it again???
    That would be a nightmare for me :(

    Plus I have done make make clean, cleaned trash and synced the sources again (without deleting the files)
    Naw, there is an easy way to fix your environment without needed to resync. If you delete all the repo folders but making sure to keep your hidden ".repo" folder you won't have to download anything. That repo folder holds all the data, it just creates those folders you see, so delete the folders, keep the .repo intact and resync and recompile. There will be no need to download everything.

    for example:
    Not showing hidden files:
    Code:
    [email protected]:~/Documents/CM10$ ls
    abi       build        device      gdk              Makefile  prebuilt   vendor
    android   cts          docs        hardware         ndk       prebuilts
    bionic    dalvik       external    libcore          packages  sdk
    bootable  development  frameworks  libnativehelper  pdk       system
    Showing hidden files:
    Code:
    [email protected]:~/Documents/CM10$ ls -a
    .        bionic    dalvik       external    libcore          packages   .repo
    ..       bootable  development  frameworks  libnativehelper  pdk        sdk
    abi      build     device       gdk         Makefile         prebuilt   system
    android  cts       docs         hardware    ndk              prebuilts  vendor

    I just removed everything:
    Code:
    [email protected]:~/Documents/CM10$ rm -r *
    rm: remove write-protected regular file `Makefile'? y
    [email protected]:~/Documents/CM10$ ls
    [email protected]:~/Documents/CM10$
    Repo is still there though with 6 gigs of data
    Code:
    [email protected]:~/Documents/CM10$ ls -a
    .  ..  .repo[
    [email protected]:~/Documents/CM10$ du -sh .repo
    6.0G	.repo
    Now time my resync for you. > http://paste.ubuntu.com/1104754/
    Code:
    [email protected]:~/Documents/CM10$ time repo sync -j16
    real	5m25.022s
    user	1m28.462s
    sys	0m27.026s
    Everything is now cleaned, and back to a competely fresh working tree, took me about 5 mins shouldn't take anyone over 10-15 to rebase this.
    Code:
    [email protected]:~/Documents/CM10$ ls 
    abi       build        device      gdk              Makefile  prebuilt   vendor
    android   cts          docs        hardware         ndk       prebuilts
    bionic    dalvik       external    libcore          packages  sdk
    bootable  development  frameworks  libnativehelper  pdk       system

    Sorry for the winded response. Just thought a simple walkthrough might help out some people who don't understand quite everything linux/android yet. I really tried to numb it down lol. Take care.
    8
    Most excellent! Thank you for the quick post after the source drop!

    You're quite welcome!
    8
    hey how would i fix this?



    arget Strip: libssl (out/target/product/galaxys2/obj/lib/libssl.so)
    host SharedLib: libsqlite (out/host/linux-x86/obj/lib/libsqlite.so)
    host C++: llvm-rs-cc <= frameworks/compile/slang/slang_rs_reflection.cpp
    host C++: llvm-rs-cc <= frameworks/compile/slang/slang_rs_reflection_base.cpp
    libpng warning: Ignoring attempt to set cHRM RGB triangle with zero area
    host C++: llvm-rs-cc <= frameworks/compile/slang/slang_rs_reflection_cpp.cpp
    libpng warning: Ignoring attempt to set cHRM RGB triangle with zero area
    host C++: llvm-rs-cc <= frameworks/compile/slang/slang_rs_reflect_utils.cpp
    host StaticLib: libclangDriver (out/host/linux-x86/obj/STATIC_LIBRARIES/libclangDriver_intermediates/libclangDriver.a)
    host C++: libslang <= frameworks/compile/slang/slang.cpp
    host C++: libslang <= frameworks/compile/slang/slang_utils.cpp
    host C++: libslang <= frameworks/compile/slang/slang_backend.cpp
    host C++: libslang <= frameworks/compile/slang/slang_pragma_recorder.cpp
    host C++: libslang <= frameworks/compile/slang/slang_diagnostic_buffer.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/ConstantMerge.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/ExtractGV.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/GlobalDCE.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/GlobalOpt.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/IPO.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/InlineAlways.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/InlineSimple.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/Inliner.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/Internalize.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/LoopExtractor.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/MergeFunctions.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/PartialInlining.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/PruneEH.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/StripDeadPrototypes.cpp
    host C++: libLLVMipo <= external/llvm/lib/Transforms/IPO/StripSymbols.cpp
    host C++: libLLVMBitWriter <= external/llvm/lib/Bitcode/Writer/BitWriter.cpp
    host C++: libLLVMBitWriter <= external/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
    host C++: libLLVMBitWriter <= external/llvm/lib/Bitcode/Writer/BitcodeWriterPass.cpp
    host C++: libLLVMBitWriter <= external/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
    aapt: warning: string 'gsm_alphabet_default_charset' has no default translation in frameworks/base/core/res/res; found: ko
    host C++: libLLVMBitWriter_2_9 <= frameworks/compile/slang/BitWriter_2_9/BitcodeWriter.cpp
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/arrays.xml:23: error: Resource does not already exist in overlay at 'shutdown_reboot_options'; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/arrays.xml:24: error: Resource at shutdown_reboot_options appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/arrays.xml:25: error: Resource at shutdown_reboot_options appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/arrays.xml:26: error: Resource at shutdown_reboot_options appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/arrays.xml:31: error: Resource does not already exist in overlay at 'shutdown_reboot_actions'; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/arrays.xml:32: error: Resource at shutdown_reboot_actions appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/arrays.xml:33: error: Resource at shutdown_reboot_actions appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/arrays.xml:34: error: Resource at shutdown_reboot_actions appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/config.xml:43: error: Resource at config_networkLocationProvider appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/config.xml:46: error: Resource at config_geocodeProvider appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/config.xml:144: error: Resource at config_samsung_stk appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/config.xml:189: error: Resource at config_networkLocationProvider appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/config.xml:192: error: Resource at config_geocodeProvider appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/config.xml:255: error: Resource at config_legacyUmsLunFile appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/config.xml:258: error: Resource at config_forceDisableHardwareKeyboard appears in overlay but not in the base package; use <add-resource> to add.
    device/samsung/galaxys2/overlay/frameworks/base/core/res/res/values/config.xml:270: error: Resource at config_deviceHardwareKeys appears in overlay but not in the base package; use <add-resource> to add.
    make: *** [out/target/common/obj/APPS/framework-res_intermediates/package-export.apk] Error 1
    make: *** Deleting file `out/target/common/obj/APPS/framework-res_intermediates/package-export.apk'
    make: *** Waiting for unfinished jobs....

    Delete the overlay folder in the device folder.
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone