[Q] [Help] Compiling Drivers for Chrooted Environment - Android Q&A, Help & Troubleshooting

Hi,
First of all a thanks to anyone who lends a hand on this one!!
I am trying to compile drivers for a chrooted (Kali Linux) environment on a Galaxy Tab2 (P5100) as well as other devices. I seem to have hit a stumbling block as the information on building kernel source with imported drivers seems to be sparse and I have cobbled together bits and pieces from multiple forums however no success! If I manage to successfully complete this insane task I play to fully document the process as a guide here and on a blog.
I will lay out the stages below from where I am at.
Tablet = Samsung Galaxy Tab 2 - P5100 Model
ROM: CyanogenMod 10.1.3-p5100
Device: USB Alfa AWUS036H (RTL8187L driver)
Development Environment: Ubuntu 12.04 64 bit
I have successfully configured a Kali Linux Chrooted Environment
Commands issued on ubuntu to compile the drivers, please tell me where I am going wrong:
##Install agcc compilers and tools
cd /tmp
wget https://neurodroid.googlecode.com/git/nrn/agcc
wget https://neurodroid.googlecode.com/git/nrn/agcc-vfp
sudo mv agcc* /usr/local/bin
sudo chmod +x /usr/local/bin/agcc*
sudo apt-get install vim vim-common make cmake lzop gcc git python
##SDK & NDK Tools installed at ~/android-adt/ndk & ~/android-adt/sdk
##Update the build path with the SDK and NDK tools
PATH=~/android-adt/sdk/platform-tools:~/android-adt/sdk/tools:~/android-adt/ndk:$PATH
cd ~/android-adt/ndk/build/tools
#remove any previously built toolchain
rm -rf ${HOME}/android-toolchain
#create new toolchain for android 4.2
./make-standalone-toolchain.sh --arch=arm --ndk-dir=${HOME}/android-adt/ndk --install-dir=${HOME}/android-toolchain --platform=android-17 --system=linux-x86_64
PATH=~/android-toolchain/bin:$PATH
##Get the kernel for the ROM (Galaxy Tab 2 p5100, cyanmodgen 10.2)
cd ~
git clone https://github.com/CyanogenMod/android_kernel_samsung_espresso10.git
##Modify the make file in the kernel
cd android_kernel_samsung_espresso10
nano Makefile
##Change the CFLAGS_MODULE line and add -fno-pic
##Compile the kernel source
make ARCH=arm clean
make ARCH=arm cyanogenmod_p5100_defconfig
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-androideabi-
Now this is as far as I seem to be able to get without any errors, some warning however! The last step does produce the zImage but I want the *.ko drivers for RTL8187
So what is the next step? Download the source drivers from Realtek copy them too ~/android_kernel_samsung_espresso10/drivers/net/wireless? then what?
Any help would be greatly appreciated!!
Thanks
Gazos

Related

[AS AT 04/08][AOSP/CM7/ICS/CM9][GUIDE]Wanna try compiling for Galaxy Ace?

Hello everyone yet again
Info: This also works for CM7 , just that the Cooper repo is already natively included in the files and folders , so you can skip step 2.5
I'm creating a new thread for all those people who know a little bit of code but don't know what to do to compile for Galaxy Ace (AOSP or CM7).
THANKS TO http://source.android.com and http://wiki.cyanogenmod.com
32-bit computers are not recommended to compile Gingerbread and above versions!
For now, I'll cover AOSP. (I'll show a CM7 guide once I learn how to compile it)
Alright, to compile Gingerbread AOSP you'll need a computer that has:
-At least an Intel Core i3 at 2.4Ghz or a similar AMD processor
-4GB RAM (my RAM speeds are at 1333Mhz). If lesser RAM, then swap is needed (for 2GB RAM use 15GB swap, that what I used before)
-40GB Partition for single compilation or 80GB for multiple versions (NOT including Ubuntu installation)
-Ubuntu 10.04 LTS OR Mac OSX 10.6 (other versions of Ubuntu, including 09.10 or lower or 10.10 or higher, may not work as well as 10.04)(Same thing goes for Snow Leopard, Lion has certain problems)
Here's how to compile for Gingerbread:
Step 1: Setting up the build environment.
Linux:
In general you will need:
-Python 2.4 - 2.7
-JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older.
-Git 1.7 or newer.
To install Sun JDK 6 do the following:
Code:
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
You will also need to install certain packages:
For 64-bit computers:
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
For 32-bit computers (experimental):
Code:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
libxml2-utils
(***NOTE: I've gotten errors when trying to apt-get install lib32ncurses5-dev.)
IF you're on Ubuntu 11.10 you might need to do this:
Code:
$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
Now for OSX (taken from http://source.android.com):
To build the Android files in a Mac OS environment, you need an Intel/x86 machine running MacOS 10.6 (Snow Leopard).
Android must be built on a case-sensitive file system because the sources contain files that differ only in case. We recommend that you build Android on a partition that has been formatted with the journaled file system HFS+. HFS+ is required to successfully build Mac OS applications such as the Android Emulator for OSX.
If you want to avoid partitioning/formatting your hard drive, you can use a case-sensitive disk image instead. To create the image, launch Disk Utility and select "New Image". A size of 25GB is the minimum to complete the build, larger numbers are more future-proof. Using sp**** images saves space while allowing to grow later as the need arises. Be sure to select "case sensitive, journaled" as the volume format.
You can also create it with this:
Code:
# hdiutil create -type SP**** -fs 'Case-sensitive Journaled HFS+' -size Xg ~/android.dmg
Where "X" is how big your image will be (in GB).
This will create a .dmg (or possibly a .dmg.sp****file) file which, once mounted, acts as a drive with the required formatting for Android development. For a disk image named "android.dmg" stored in your home directory, you can add the following to your ~/.bash_profile to mount the image when you execute "mountAndroid":
Code:
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
Once mounted, you'll do all your work in the "android" volume. You can eject it (unmount it) just like you would with an external drive.
Installing required packages:
-Install XCode from the Apple developer site. We recommend version 3.1.4 or newer, i.e. gcc 4.2. Version 4.x could cause difficulties. If you are not already registered as an Apple developer, you will have to create an Apple ID in order to download.
-MacPorts from http://macports.org
Note: Make sure that /opt/local/bin appears in your path BEFORE /usr/bin. If not, add:
Code:
export PATH=/opt/local/bin:$PATH
to your ~/.bash_profile.
-Get make, git, and GPG packages from MacPorts:
Code:
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
If you're on MacOS 10.4, install bison too:
Code:
$ POSIXLY_CORRECT=1 sudo port install bison
Bugs and fixes:
-Reverting from gmake3.82:
There is a bug in gmake 3.82 that prevents android from building. You can install version 3.81 using MacPorts by taking the following steps:
-Edit /opt/local/etc/macports/sources.conf and add a line that says:
Code:
file:///Users/Shared/dports
above the rsync line. Then make this directory:
Code:
$ mkdir /Users/Shared/dports
-In the new dports directory, run:
Code:
$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
-Create a port index for your new local repository:
Code:
$ portindex /Users/Shared/dports
-Finally, install the old version of gmake with:
Code:
$ sudo port install gmake @3.81
-Setting a file descriptor limit:
On MacOS the default limit on the number of simultaneous file descriptors open is too low and a highly parallel build process may exceed this limit.
To increase the cap, add the following lines to your ~/.bash_profile:
Code:
# set the number of open files to be 1024
ulimit -S -n 1024
Your Linux/MacOS build environment is now complete, moving on to downloading....
Step 2: Downloading the source
You'll need to use repo to download sources from repositories.
Here's how I did it:
-Make a /bin directory in your home directory and it must be in your PATH:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
-Download the Repo script and ensure that it can be executed:
Code:
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Now that downloading repo is done and executable, we need to initialise it.
Create an empty directory for where all your Android files will be downloaded, stored and made:
Code:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
Where WORKING_DIRECTORY can be any name you want (as long as it has no spaces)
Use repo init to grab the latest branch (or rather, the gingerbread branch)
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-x.x.x_r1
Where "x" can be 2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6 or 2.3.7.
For now use the versions that the Galaxy Ace currently has (2.3.3-2.3.5 and 2.3.7)
Optional step:
When prompted, please configure Repo with your real name and email address. To use the Gerrit code-review tool, you will need an email address that is connected with a registered Google account. Make sure this is a live address at which you can receive messages. The name that you provide here will show up in attributions for your code submissions.
Click to expand...
Click to collapse
Once you're done with that, you'll need to download them.
This simple 8-character command is easy to execute but it'll be hard on your internet connection:
Code:
$ repo sync
Ensure that you have at least 5Mbps of internet if you want it completed in a day.
Once you're done syncing, use this code:
Code:
$ gpg --import
To sign what you've downloaded.
Once you entered that, copy and paste this long line of ****:
Code:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----
Paste it into your terminal and press Ctrl+D.
You now have a complete local copy of the Android codebase.
Step 2.5: Include the Samsung COOPER source for compilation (AOSP only)
Yes, this has to be done so you can compile for cooper (Samsung Galaxy Ace).
-Navigate the terminal to the ~/WORKING_DIRECTORY/device/samsung folder:
Code:
$ cd ~/WORKING_DIRECTORY/device/samsung
Where WORKING_DIRECTORY = your android folder
-Make use of git to clone a folder from PabloPL's GitHub:
Code:
$ git clone git://github.com/PabloPL/android_device_samsung_cooper
Once it's done, you should see a folder with that name in the root of your working directory. Rename it to "cooper" and cut & paste it to device/samsung.
Download the Android SDK Tools and make sure you set ADB correctly to be in your PATH.
For more info and how-to steps go here: http://www.lineardroid.co.uk/2010/04/how-to-set-up-adb-in-ubuntu/
Once you're done setting up ADB, go to the cooper folder and run extract-files.sh in the terminal.
ADB should pull some files from your device and automatically close the terminal. (You might need to be in CM7 for ADB to successfully pull all libs, I may be wrong though. Someone test it and tell me if it works)
Now we're done for now.
Oh yes, before I forget:
Have a copy of CM7 before you build!
AOSP does not fully support ARMv6 devices and therefore uneeded errors may arise, so the CM7 files can save you.
Step 3: Building Android (most exciting/boring part)
Initialize the environment with the envsetup.sh script.
Code:
$ . build/envsetup.sh
Choose your target to build with lunch.
Code:
$ lunch cooper-eng
(***NOTE: Change full_base.mk in device_cooper.mk to full.mk) (AOSP only)
(***NOTE2: There'll be another error about an unknown architecture: ARMv6-VFP. That's where your CM7 files come in handy.) (AOSP only)
Build everything with make. GNU make can handle parallel tasks with a -jN argument, and it's common to use a number of tasks N that's between 1 and 2 times the number of hardware threads on the computer being used for the build. E.g. on a dual-E5520 machine (2 CPUs, 4 cores per CPU, 2 threads per core), the fastest builds are made with commands between make -j16 and make -j32.
I usually use this (thanks to cdesai):
Code:
$ make -j8 update-api
$ make -j8 otapackage
OR:
Code:
$ make -j16 update-api
$ make -j16 otapackage
Do have patience because your computer will get inevitably laggy.
Once you're done debugging all errors and stuff you will have a flashable .zip located in WORKING_DIRECTORY/out/target/cooper.
Thanks for reading this whole chunk, though I know it's an XDA App eyesore.
If you do encounter errors feel free to ask here
Alright, now you've built AOSP and CM7 and you love it, what next?
Ice Cream Sandwich *insert holy choir here*
Requirements (they are much more different now):
A computer that's capable of 64-bit
A dual-core processor of a speed of at least 2.2Ghz (Intel Xeon/Core i7 recommended)
Either Ubuntu 10.04 LTS 64-bit (later versions have experimental support) but if you're using a later version that's fine.
Or Mac OSX 10.6
At least 8GB of RAM and 10~GB swap maybe? (Otherwise you could have 4Gb of RAM and ~20GB swap this time)
At least a 70GB partition for Ubuntu (to make sure there is space for compiling + installing required stuff)
Well, here are the steps to build it:
Instructions (Taken from http://source.android.com/source/initializing.html & http://wiki.cyanogenmod.com/wiki/Android_SDK_Emulator:_Compile_CyanogenMod_(Linux)):
---------ONLY FOR UBUNTU 10.10--12.04---------
Chapter 1: Initializing a Build Environment
This section describes how to set up your local work environment, how to use Repo to get the Android files, and how to build the files on your machine. To build the Android source files, you will need to use Linux or Mac OS. Building under Windows is not currently supported.
Note: The source download is approximately 6GB in size. You will need 25GB free to complete a single build, and up to 90GB (or more) for a full set of builds.
Section 1 (Linux/Ubuntu): Setting up a Linux build environment
The Android build is routinely tested in house on recent versions of Ubuntu LTS (10.04), but most distributions should have the required build tools available. Reports of successes or failures on other distributions are welcome.
Note: It is also possible to build Android in a virtual machine. If you are running Linux in a virtual machine, you will need at least 16GB of RAM/swap and 30GB or more of disk space in order to build the Android tree.
In general you will need:
Python 2.5 -- 2.7.
GNU Make 3.81 -- 3.82.
JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older.
Git 1.7 or newer.
Detailed instructions for Ubuntu 10.04+ follow.
Step 1: Installing the JDK
The Sun JDK is no longer in Ubuntu's main package repository. In order to download it, you need to add the appropriate repository and indicate to the system which JDK should be used.
To download Java 6, do this:
Code:
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
Note: The lunch command in the build step will ensure that the Sun JDK is used instead of any previously installed JDK.
Alternatively you can follow eoghan2t7's instructions:
eoghan2t7 said:
as you may no the Java JDK has been removed from the ubuntu ppa so i have uploaded the jdk deb file for users to use and to skip the sudo apt-get install java_jdk command
link
http://www.mediafire.com/?b57gqo7t46k1ibc
Click to expand...
Click to collapse
Or bs828's instructions:
bs828 said:
I'm currently out will do later
Edit: im on 12.0.4 and this seemed to work http://www.devsniper.com/ubuntu-12-04-install-sun-jdk-6-7/
Click to expand...
Click to collapse
Step 2: Installing required packages (Ubuntu 10.04 -- 11.10)
You will need a 64-bit version of Ubuntu. Ubuntu 10.04 is recommended. Building using a newer version of Ubuntu is currently only experimentally supported and is not guaranteed to work on Git branches other than master (http://github.com/android).
To install the required packages, do this:
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
---------ONLY FOR UBUNTU 10.10--11.10---------
For Ubuntu 10.10 users, do this as well:
Code:
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
Note: This is used to avoid a compile error with libGL later on.
For Ubuntu 11.10 users, do this:
Code:
$ sudo apt-get install libx11-dev:i386
---------END FOR UBUNTU 10.10--11.10---------
----------ONLY FOR UBUNTU 12.04----------
Step 2: Installing required packages (Ubuntu 12.04)
Building on Ubuntu 12.04 is currently only experimentally supported and is not guaranteed to work on branches other than master.
To install the required packages, do this:
Code:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 \
g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown \
libxml2-utils xsltproc zlib1g-dev:i386
---------END FOR UBUNTU 10.10--12.04---------
I won't do MacOSX for ICS, mainly because it has a very unstable success chance of compilation.
Your build environment is good to go! Proceed to
Chapter 2: Downloading the Source Tree
Section 1: Repo
Repo is a tool that makes it easier to work with Git in the context of Android.
It is also a tool that allows you to download source files from Android easily.
Step 1: Installing Repo
To install, initialize, and configure Repo, follow these steps:
Make sure you have a bin/ directory in your home directory, and that it is included in your path:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
Download the Repo script and ensure it is executable:
Code:
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
For version 1.15, the SHA-1 checksum for repo is 8eb56d98b36d615c3efec51868e87bebe757feb1
For version 1.16, the SHA-1 checksum for repo is f3bfa7fd2d0a44aa40579bb0242cc20df37b5e17
Step 2: Initializing a Repo client
After installing Repo, set up your client to access the android source repository:
Create an empty directory to hold your working files. If you're using MacOS, this has to be on a case-sensitive filesystem. Give it any name you like:
Code:
$ mkdir I_HATE_STEVE
$ cd I_HATE_STEVE
Run repo init to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest, which specifies where the various repositories included in the Android source will be placed within your working directory.
For AOSP:
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r1
or
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r2
or
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r3
or even
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b ics-plus-aosp
For CM9:
Code:
$ repo init -u git://github.com/CyanogenMod/android.git -b ics
When prompted, please configure Repo with your real name and email address. To use the Gerrit code-review tool, you will need an email address that is connected with a registered Google account. Make sure this is a live address at which you can receive messages. The name that you provide here will show up in attributions for your code submissions.
A successful initialization will end with a message stating that Repo is initialized in your working directory. Your client directory should now contain a .repo directory where files such as the manifest will be kept.
Step 3: Getting the files
To pull down files to your working directory from the repositories as specified in the default manifest, run
Code:
$ repo sync
The Android source files will be located in your working directory under their project names. The initial sync operation will take an hour or more to complete, depending on your Internet bandwidth.
Note: If you initialize your repo on your root area for all projects, the time for downloading will decrease
If you haven't set up ccache now, now is a good time to set it up.
Chapter 2.5 (AOSP only): Downloading the various device specific configurations from GitHub
Now that you have a full copy of AOSP, you will realise that inside your working directory/device you will only see only a few device configurations. That's because AOSP only supports those devices and you will need to manually download other devices for use with AOSP.
You can either adapt from MaclawStudios' repo of the Galaxy Gio: https://github.com/MaclawStudios/android_device_samsung_gio
Or make an ICS device config yourself.
Meanwhile PabloPL has made an ICS branch here, but currently nothing is being worked on, as it seems.
Chapter 3: Building the System
The basic sequence of build commands is as follows:
Step 1: Initialize
Initialize the environment with the envsetup.sh script. Note that replacing "source" with a single dot saves a few characters, and the short form is more commonly used in documentation.
Either:
Code:
$ source build/envsetup.sh
or
Code:
$ . build/envsetup.sh
Step 2: Choose a target
Choose which target to build with lunch. The exact configuration can be passed as an argument, e.g.
Code:
$ lunch full-eng
The example above refers to a complete build for the emulator, with all debugging enabled.
If run with no arguments lunch will prompt you to choose a target from the menu.
Step 3: Build the Code
Build everything with make. GNU make can handle parallel tasks with a -jN argument, and it's common to use a number of tasks N that's between 1 and 2 times the number of hardware threads on the computer being used for the build. E.g. on a dual-E5520 machine (2 CPUs, 4 cores per CPU, 2 threads per core), the fastest builds are made with commands between make -j16 and make -j32.
If you are using a dual-core computer do either of these:
Code:
make -j2
or
Code:
make -j4
It is usually recommended that you make the -jN amount twice the number of cores your processor has.
Therefore if you have a quad-core processor do this:
Code:
make -j4
or
Code:
make -j8
There are different ways to run make:
Code:
$ make clean
or
Code:
$ make clobber
Cleans the compile directory and deletes all compiled files.
Code:
$ make update-api
Makes part of the framework, usually used to update the API.
Code:
make otapackage
Makes a flashable .zip file, as otapackage = Over The Air package.
Code:
make (app name, like framework-res)
Makes the specified app and the .apk will be compiled in the output directory.
Once you finish make, you are done! Congratulations!
Chapter 4: Troubleshooting Common Build Errors
Sometimes, things don't go as planned such as unexpected build errors. Here are some solutions to common problems:
Section 1: Wrong Java Version
If you are attempting to build froyo or earlier with Java 1.6, or gingerbread or later with Java 1.5, make will abort with a message such as
Code:
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
************************************************************
This may be caused by:
failing to install the correct JDK as specified on the Initializing chapter. Building Android requires Sun JDK 5 or 6 depending on which release you are building.
another JDK that you previously installed appearing in your path. You can remove the offending JDK from your path with:
Code:
$ export PATH=${PATH/\/path\/to\/jdk\/dir:/}
Section 2: Python Version 3
Repo is built on particular functionality from Python 2.x and is unfortunately incompatible with Python 3. In order to use repo, please install Python 2.x:
Code:
$ apt-get install python
Optional Step: Setting up ccache
You can optionally tell the build to use the ccache compilation tool. Ccache acts as a compiler cache that can be used to speed-up rebuilds. This works very well if you do "make clean" often, or if you frequently switch between different build products.
Put the following in your .bashrc or equivalent.
Code:
$ export USE_CCACHE=1
By default the cache will be stored in ~/.ccache. If your home directory is on NFS or some other non-local filesystem, you will want to specify the directory in your .bashrc as well.
Code:
$ export CCACHE_DIR=
The suggested cache size is 50-100GB. You will need to run the following command once you have downloaded the source code, if you use CCache.
Code:
$ prebuilt/linux-x86/ccache/ccache -M 50G
Optional Step: Using a separate output directory
By default, the output of each build is stored in the out/ subdirectory of the matching source tree.
On some machines with multiple storage devices, builds are faster when storing the source files and the output on separate volumes. For additional performance, the output can be stored on a filesystem optimized for speed instead of crash robustness, since all files can be re-generated in case of filesystem corruption.
To set this up, export the OUT_DIR_COMMON_BASE variable to point to the location where your output directories will be stored.
Code:
export OUT_DIR_COMMON_BASE=
The output directory for each separate source tree will be named after the directory holding the source tree.
For instance, if you have source trees as /source/master1 and /source/master2 and OUT_DIR_COMMON_BASE is set to /output, the output directories will be /output/master1 and /output/master2.
It's important in that case to not have multiple source trees stored in directories that have the same name, as those would end up sharing an output directory, with unpredictable results.
This is only supported on branches newer than 4.0.x (IceCreamSandwich).
Wow dude. That's all I can say.
Woohoo, read through all that but I wont wanna try, and my comp is a piece of ****
Sent from my Galaxy Ace running J.A.F CM 7.2 Odexed using XDA App
MrChaosDesire said:
Woohoo, read through all that but I wont wanna try, and my comp is a piece of ****
Sent from my Galaxy Ace running J.A.F CM 7.2 Odexed using XDA App
Click to expand...
Click to collapse
Those are the recommended specs , not minimum
Wow nice tutorial Matt.but I can do nothing bcz i don't Know how to do coding lol...........
Sent from my GT-S5830 using xda premium
Lot of things to install, thanks for the tuto!
You never fail to impress buddy
Sent from my HTC Sensation XL with Beats Audio X315e using Tapatalk
traduz said:
Lot of things to install, thanks for the tuto!
Click to expand...
Click to collapse
Any errors occured ? Just post them in the thread .
Any solutions for unsolved errors ? Post them here too . Will update solutions
Sent from my GT-S5830 using XDA App
nice tut's bro..
Well i'm reading this day by day, just w8ing for money for a new computer lol, got one with 1gb only and freezes a lot with it =/
Thanks man, its gonna be my little anti-social project for tomorrow
Sent from my GT-S5830 using xda premium
Nice tut,Matt
thanks....everything clear from your tutorial......
one question : how much downloading will be done for AOSP and CM7 both....if i want to work on gingerbread
rocking.nitesh007 said:
thanks....everything clear from your tutorial......
one question : how much downloading will be done for AOSP and CM7 both....if i want to work on gingerbread
Click to expand...
Click to collapse
I think at least 50GB
thanx ...... will download it ill tke days .....
Sent from my GT-S5830 using XDA App
i have installed ubuntu 11 64bit in vmware .... does it affect when the rom ill be compling.....i use 3.2gb of 4gb ram in my virtual machine
Sent from my GT-S5830 using XDA App
rocking.nitesh007 said:
i have installed ubuntu 11 64bit in vmware .... does it affect when the rom ill be compling.....i use 3.2gb of 4gb ram in my virtual machine
Sent from my GT-S5830 using XDA App
Click to expand...
Click to collapse
If you're compiling gingerbread , there's no problem .
Sent from my GT-S5830 using XDA App
EmoBoiix3 said:
If you're compiling gingerbread , there's no problem .
Sent from my GT-S5830 using XDA App
Click to expand...
Click to collapse
thanks..... waiting for cm7 tut also ..... u guys rock
Sent from my GT-S5830 using XDA App
one more question .... what about 50GB .... i means i have read in different places somebody says its arnd 2GB of source of cm .. if u can specify dat would be great....
Sent from my GT-S5830 using XDA App

[CM] Building for expressltexx (GT-I8730)

There's an easy way to do whatever's discussed below, except for a) getting the SDK, b) syncing the repos, and c) building the ROM; and that way is using this script. But it's still better to do the steps below manually as it gets you acquainted with the terminal - you'll be using it a lot.
Thanks to @klvnhng for the original tutorial for mako
Credits to him.
You will need:
A computer running Ubuntu with at least 2GB memory and around 40-65 GB of free space
If you don't want to install Ubuntu, run it instead in VMWare Player or VirtualBox.
make sure you provide the virtual machine with the amount of recommended disk space or more
give it no less than 3-4GB of RAM
A (preferably fast) internet connection (trust me, you don't want to do this with a 256 or 512 kbps connection)
Familiarity with Android and Linux. Read up at source.android.com.
Setting up the build environment
1. Install JDK
DO NOT USE OPENJDK. Remove it by entering
Code:
sudo apt-get purge openjdk* icedtea* icedtea-6*
Install Oracle Java 6 by typing this into a terminal:
Code:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
Android SDK requires the x86 compatibility packages, ia32-libs. Install it by entering this:
Code:
sudo apt-get -y install ia32-libs
As an alternative, you can also do this (thanks to @jjchico):
Code:
sudo apt-get install lsb-release lib32gcc1 libc6-i386 lib32z1 lib32stdc++6 lib32bz2-1.0 lib32ncurses5
2. Android SDK
Download it here.
Extract it to a folder of your choice (in this guide, I will refer to it as ~/android/sdk).
Enter these commands into the terminal:
Code:
cd ~/android/sdk/adt-bundle/sdk/tools
./android sdk
Click Install packages. cd to ~/android/sdk/adt-bundle/sdk/platform-tools and type:
Code:
./adb
./fastboot
If you've done everything correctly, you should get a big block of text for both (which list all of the adb/fastboot commands).
3. Install required packages
Copy and paste this command into the terminal:
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-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
4. Install the repo command
Make directories called bin and android in your home folder, respectively.
Code:
mkdir -p ~/bin
mkdir -p ~/android
Download and setup the repo binary:
Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Now add it to your path:
Code:
export PATH="$PATH:~/bin"
And make sure it belongs in your path between subsequent reboots:
Code:
echo "export PATH="$PATH:~/android/sdk:~/bin"" >> ~/.bashrc
source ~/.bashrc
5. Configuring USB
You must configure USB to detect your Android device(s) properly.
Do this in a terminal:
Code:
curl https://raw.githubusercontent.com/aureljared/build-env-init/master/51-android.rules > ~/bin/51-android.rules
chmod a+r ~/bin/51-android.rules
sudo cp -vfp ~/bin/51-android.rules /etc/udev/rules.d/51-android.rules
6. Syncing up
The next step is to initialize the repository and download the source code to your computer.
Type the following lines into the terminal:
Code:
mkdir -p ~/android/cm-11.0
cd ~/android/cm-11.0
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
To download all the necessary device-specific files for our device, do this:
Code:
curl https://raw.githubusercontent.com/aureljared/android-manifests/expresslte-cm-11.0/local_manifest.xml >> .repo/local_manifests/local_manifest.xml
Now run
Code:
repo sync
You have now begun downloading all of the CM source code to your build directory. Depending on your internet speed, this can take from a couple of hours to a few days. If the sync interrupts, don't worry. Simply continue the sync (you don't have to restart completely, only the project you were downloading when the interrupt occured, lol) by entering:
Code:
repo sync
Some tips:
You can interrupt the process by pressing Ctrl + C, it will continue where it left off the next time anyway.
Remember, you need to cd into your build directory (~/android/cm-11.0, if you've been following this guide) for the command to work.
If you want only one project to be synced at a time, run repo sync -j1 instead.
This step takes a long time depending on your internet connection speed (FYI you're downloading ~20 GB of code!)
7. Building CM (yay!)
You must download the necessary pre-built apps:
Code:
~/android/cm-11.0/vendor/cm/get-prebuilts
Now let's build! cd to your build directory and run the following commands in the terminal:
Code:
. build/envsetup.sh
brunch expressltexx
Now, just let your computer do the rest. This step is very demanding for your computer, so you better leave it alone while it builds. Usually this takes an hour or more. Go get some sleep or eat something.
Done? If everything went correctly, cd to ~/android/cm-11.0/out/target/product/expresslte and you should see your newly built ROM entitled:
cm-11.0-20xxxxxx-UNOFFICIAL-expressltexx.zip
Congratulations! You've successfully built CM 11.0!
For re-builds (i.e. when the source code has been updated and you would like to make a new nightly), just do this:
Code:
cd ~/android/cm-11.0
make clobber
repo sync
. build/envsetup.sh
brunch expressltexx
Have fun building!​
I suggest you to modify step 5 inserting before repo sync
Code:
mkdir .repo/local_manifests
cd .repo/local_manifests
wget https://raw.github.com/KINGbabasula/android_device_samsung_expresslte/cm-10.2/local_manifest.xml
cd ..
cd ..
This will download the specific necessary repos with repo sync
Then remove this in step 6
Code:
mkdir files
cd files
git clone https://github.com/KINGbabasula/proprietary_vendor_samsung.git
as it isn't needed
And change make clean with make clobber because with clobber it will rebuild faster
EDIT: And before step 6 you need to replace these 2 files with the 2 in the attachment
Code:
system/core/mkbootimg/bootimg.h
system/core/mkbootimg/mkbootimg.c
KINGbabasula said:
I suggest you to modify step 5 inserting before repo sync
Code:
mkdir .repo/local_manifests
cd .repo/local_manifests
wget https://raw.github.com/KINGbabasula/android_device_samsung_expresslte/cm-10.2/local_manifest.xml
cd ..
cd ..
This will download the specific necessary repos with repo sync
Then remove this in step 6
Code:
mkdir files
cd files
git clone https://github.com/KINGbabasula/proprietary_vendor_samsung.git
as it isn't needed
And change make clean with make clobber because with clobber it will rebuild faster
EDIT: And before step 6 you need to replace these 2 files with the 2 in the attachment
Code:
system/core/mkbootimg/bootimg.h
system/core/mkbootimg/mkbootimg.c
Click to expand...
Click to collapse
Original post updated.
Can you help me with ia32-libs?
It says that it's referred to by a handful of other packages but it has no installation candidates or something. The bottom line is that I can't install it.
I'm using 13.10 x64 on an ASUS K43SJ.
- Intel i5-2410M Quadcore (2.3GHz normal, 2.9GHz Turbo Boost)
- 2GB RAM available to Ubuntu VM
Sent from my International Galaxy Express using Tapatalk 4
aureljared said:
Original post updated.
Can you help me with ia32-libs?
It says that it's referred to by a handful of other packages but it has no installation candidates or something. The bottom line is that I can't install it.
I'm using 13.10 x64 on an ASUS K43SJ.
- Intel i5-2410M Quadcore (2.3GHz normal, 2.9GHz Turbo Boost)
- 2GB RAM available to Ubuntu VM
Sent from my International Galaxy Express using Tapatalk 4
Click to expand...
Click to collapse
You have to apt-get install every missing library one by one
Inviato dal mio GT-I9070 utilizzando Tapatalk
aureljared said:
2. Android SDK
Download it here.
Extract it to a folder of your choice (in this guide, I will refer to it as ~/android/sdk).
Enter these commands into the terminal:
Code:
cd ~/android/sdk/adt-bundle/sdk/tools
./android sdk
Click Install packages. cd to ~/android/sdk/adt-bundle/sdk/platform-tools and type:
Code:
adb
fastboot
Click to expand...
Click to collapse
Shouldn't it be
Code:
./adb
./fastboot
Or have you added the sdk to your path?
I guess the compilation process will need the sdk. How does it find the sdk? Do you need to provide the path anywhere?
Thanks for the great tuto.
These are the libs that ia32-libs pulls in that are present in Ubuntu 13.10. This should be equivalent to install ia32-libs in Ubuntu 12.04:
$ sudo apt-get install lsb-release lib32gcc1 libc6-i386 lib32z1 lib32stdc++6 lib32bz2-1.0 lib32ncurses5
---------- Post added at 12:08 PM ---------- Previous post was at 11:29 AM ----------
These are the libs that ia32-libs pulls in that are present in Ubuntu 13.10. This should be equivalent to install ia32-libs in Ubuntu 12.04:
$ sudo apt-get install lsb-release lib32gcc1 libc6-i386 lib32z1 lib32stdc++6 lib32bz2-1.0 lib32ncurses5
jjchico said:
These are the libs that ia32-libs pulls in that are present in Ubuntu 13.10. This should be equivalent to install ia32-libs in Ubuntu 12.04:
$ sudo apt-get install lsb-release lib32gcc1 libc6-i386 lib32z1 lib32stdc++6 lib32bz2-1.0 lib32ncurses5
---------- Post added at 12:08 PM ---------- Previous post was at 11:29 AM ----------
These are the libs that ia32-libs pulls in that are present in Ubuntu 13.10. This should be equivalent to install ia32-libs in Ubuntu 12.04:
$ sudo apt-get install lsb-release lib32gcc1 libc6-i386 lib32z1 lib32stdc++6 lib32bz2-1.0 lib32ncurses5
Click to expand...
Click to collapse
jjchico said:
Shouldn't it be
Code:
./adb
./fastboot
Or have you added the sdk to your path?
I guess the compilation process will need the sdk. How does it find the sdk? Do you need to provide the path anywhere?
Thanks for the great tuto.
Click to expand...
Click to collapse
Updated original post.
Sent from my GT-I8730 using Tapatalk
Thanks. Just note the missing double quotes in the export PATH.
Enviado desde mi GT-I9000 mediante Tapatalk
jjchico said:
Thanks. Just note the missing double quotes in the export PATH.
Enviado desde mi GT-I9000 mediante Tapatalk
Click to expand...
Click to collapse
Haha lol sorry. I was very sleepy when I updated last night.
Updated post.
My repo sync is finished with 65 out of 401 projects. ia32-libs now okay thanks to you @jjchico.
Sent from my GT-I8730 using Tapatalk
I get this
[email protected]:~/android/cm-10.2$ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
No command 'repo' found, did you mean:
Command 'repro' from package 'repro' (universe)
Command 'repl' from package 'nmh' (universe)
Command 'repl' from package 'mailutils-mh' (universe)
Command 'rep' from package 'rep' (universe)
repo: command not found
[email protected]:~/android/cm-10.2$
Any ideas? All seemed good before that
Bazzan
Check that repo is in the bin folder in your user main folder.
Check that repo is executable
chmod a+x ~/bin/repo
Enviado desde mi GT-I9000 mediante Tapatalk
"6. Building CM (yay!)"
"In order to make a working build, you have to get the proprietary files (mainly device build files and drivers) for the device."
so how do I get the propriety files and where do I put them? ADB from your phone?
After this you direct us to prebuilt apps so it appears there is a step missing unless I am pulling proprietary files down from KINGbabasula's Github
Bazzan
bazzan said:
"6. Building CM (yay!)"
"In order to make a working build, you have to get the proprietary files (mainly device build files and drivers) for the device."
so how do I get the propriety files and where do I put them? ADB from your phone?
After this you direct us to prebuilt apps so it appears there is a step missing unless I am pulling proprietary files down from KINGbabasula's Github
Bazzan
Click to expand...
Click to collapse
Yeah, the files are located somewhere in KINGbabasula's github. If you want to use ADB then refer to the text file located in android_device_samsung_expresslte.
Or if you want to download the files themselves, do this in a terminal:
Code:
mkdir proprietary
cd proprietary
git clone https://github.com/KINGbabasula/proprietary_vendor_samsung.git
The files will be located in proprietary/proprietary_vendor_samsung/expresslte.
Sent from my GT-I8730 using Tapatalk
Finally got build going. Thanks for the tutorial @aureljared. You were not kidding when you said takes a while. Not too sure where to from here. Welcome suggestions if anyone wants me to try anything
Bazzan
URGENT
Before proceeding to build any more ROMs, let me ask some questions.
What toolchain for building the kernel are you using? Toolchains that might work are arm-eabi-4.4.3 upwards or linaro 4.4.3 upwards.
What is your configuration for the kernel? It is written to a file called ".config" insinde the kernel source.
Have you applied any kind of patch to the code before compiling? If so, what?
Click to expand...
Click to collapse
Thank you for your time. Your answers to the above questions will be highly appreciated and will be of utmost importance. There is also a good chance that we might build a proper kernel with your reports!
:good: :victory:
Sent from my GT-I8730 using Tapatalk
aureljared said:
URGENT
Before proceeding to build any more ROMs, let me ask some questions.
What toolchain for building the kernel are you using? Toolchains that might work are arm-eabi-4.4.3 upwards or linaro 4.4.3 upwards.
What is your configuration for the kernel? It is written to a file called ".config" insinde the kernel source.
Have you applied any kind of patch to the code before compiling? If so, what?
Thank you for your time. Your answers to the above questions will be highly appreciated and will be of utmost importance. There is also a good chance that we might build a proper kernel with your reports!
:good: :victory:
Sent from my GT-I8730 using Tapatalk
Click to expand...
Click to collapse
No toolchain experience at all. Just substituted kernels from elsewhere. Maybe if you are leaning toward Linaro, I should find myself a tutorial for arm-eabi-4.4.3 upwards and give that a go. then we can cover more ground.
Bazzan
bazzan said:
No toolchain experience at all. Just substituted kernels from elsewhere. Maybe if you are leaning toward Linaro, I should find myself a tutorial for arm-eabi-4.4.3 upwards and give that a go. then we can cover more ground.
Bazzan
Click to expand...
Click to collapse
Sure.
I'm not saying that I'm relying on Linaro now, it's just that Linaro is a toolchain developed by a consortium of technology companies including Samsung that aims to build Linux kernels that perform extremely well on mobile devices.
CM 10.2 uses Linaro 12.09, I think.
I tried building with Linaro a couple of days ago but make threw me some errors, the most confusing being something like this
Code:
make [cypress_touchkeys.o] *** Error 2
I don't even know what Cypress is.
Sent from my GT-I8730 using Tapatalk
aureljared said:
Sure.
I'm not saying that I'm relying on Linaro now, it's just that Linaro is a toolchain developed by a consortium of technology companies including Samsung that aims to build Linux kernels that perform extremely well on mobile devices.
CM 10.2 uses Linaro 12.09, I think.
I tried building with Linaro a couple of days ago but make threw me some errors, the most confusing being something like this
Code:
make [cypress_touchkeys.o] *** Error 2
I don't even know what Cypress is.
Sent from my GT-I8730 using Tapatalk
Click to expand...
Click to collapse
Cannot help with Cypress. Some time ago I downloaded a file called GT-I8730_JB_Opensource.zip - not sure where I found it.
It appears to be what is says it is. Within it is a text file called README_Kernel.txt
It has the following
################################################################################
1. How to Build
- get Toolchain
From android git server , codesourcery and etc ..
- arm-eabi-4.4.3
- edit Makefile
edit "CROSS_COMPILE" to right toolchain path(You downloaded).
EX) export CROSS_COMPILE= $(android platform directory you download)/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
Ex) export CROSS_COMPILE=/usr/local/toolchain/arm-eabi-4.4.3/bin/arm-eabi- // check the location of toolchain
$ export ARCH=arm
$ make msm8930_express_defconfig
$ make
2. Output files
- Kernel : arch/arm/boot/zImage
- module : drivers/*/*.ko
3. How to Clean
$ make clean
################################################################################
Way out of my depth but will try sometime next week to give it a go with arm-eabi-4.4.3. Major interview Monday so nothing before then.
Bazzan
bazzan said:
Cannot help with Cypress. Some time ago I downloaded a file called GT-I8730_JB_Opensource.zip - not sure where I found it.
It appears to be what is says it is. Within it is a text file called README_Kernel.txt
It has the following
################################################################################
1. How to Build
- get Toolchain
From android git server , codesourcery and etc ..
- arm-eabi-4.4.3
- edit Makefile
edit "CROSS_COMPILE" to right toolchain path(You downloaded).
EX) export CROSS_COMPILE= $(android platform directory you download)/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
Ex) export CROSS_COMPILE=/usr/local/toolchain/arm-eabi-4.4.3/bin/arm-eabi- // check the location of toolchain
$ export ARCH=arm
$ make msm8930_express_defconfig
$ make
2. Output files
- Kernel : arch/arm/boot/zImage
- module : drivers/*/*.ko
3. How to Clean
$ make clean
################################################################################
Way out of my depth but will try sometime next week to give it a go with arm-eabi-4.4.3. Major interview Monday so nothing before then.
Bazzan
Click to expand...
Click to collapse
That's from Samsung. It contains the kernel source as you already have seen
It's stock 3.4.0 so I don't know if it will work with CM :good:
Sent from my GT-I8730 using Tapatalk
Quote from jt1134:
jt1134 said:
I use the d2 family kernel source.
For stock ROMs and CM10, you can use the source and ramdisk provided by samsung.
For CM10.1 or higher, you'll have to get your hands very dirty. IMO the easiest route would be to port the missing drivers from stock samsung source to the msm8930-common kernel, and modifying it to work with them. This is how I did it for the I437 : http://review.cyanogenmod.org/#/c/47947/ . You may then use the serrano device trees as a template once the kernel is ready.
Click to expand...
Click to collapse
Updated first post with this info.
Sent from my GT-I8730 using Tapatalk

[Guide] to Build your KitKat ROM x HTC One X+ Int. (CM-AOKP-Carbon-Slim)(Ubuntu14LTS)

Hi, my name's Stefano I'm from Italy, and sorry for my poor english. This is the guide to build your own the KitKat (or whatever branch you want) for your International HOX+. We'll start, obviously, setting up your client (PC), and here we'll use ubuntu x64. Is possible to use almost any linux distribution (also MacOSX) but I prefer to stay on what is much supported and known (for me!). This guide is taken from internet and reading forums/blogs. I didn't invent anything, you can found a lot of guides like this. Just this is updated with last changes. For the setup part I read and paste a lot from here (thanks to sylentprofet).
Regard the hardware side you'll need at least of:
a Dual Core processor
4 Gb of RAM
80 Gb of hard disk for each repository (Better if SSD but don't required)
The Graphics Card don't care, we don't use to compile
A good internet connection, you have to download up to 40 Gb of stuff
A lot of patience, if you aren't go to download a ready ROM, it's better!
Time, time, time, time and again time!
How to Configure Ubuntu for Properly Compiling Android ROMs​
This guide applies to Ubuntu 13.04 Raring Ringtail 64 bit (but also down to 12.04 LTS which is the version that I prefer). Do not use the 32 Bit version. Also, PAY CLOSE ATTENTION when to use “sudo” and when to not. It can make things funky if you do something as root that you shouldn’t. During normal build you don't have absolutely need to use "sudo", just during the PC setup.
Much thanks goes out to Google, ProTekk, Canonical, and everyone else that I read a random paragraph here and snippet there.
First, let’s set up the correct JDK.
Many of you probably have some kind of wrong Java installed. Sad cupcake.Let’s get rid of that. Copy and paste this into a Terminal window:
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Back to the Terminal. Copypasta the following:
Code:
sudo add-apt-repository ppa:webupd8team/java
This will add the correct PPA to your system for updated builds of Java 6 JDK that are compatible with 13.04 (or less). No more unrecognized Java version errors! Yay! And it’s self updating, so you don’t have to redownload binaries everytime they release a new version.
Next, we actually need to install the package. More copypasta:
Code:
sudo apt-get update && sudo apt-get install oracle-java6-installer
Follow the onscreen instructions. You have to Accept the Licensing Agreement or whatever. Hopefully no human centipede clauses. Once that is completed successfully, you will have to restart any open browsers with Java content for it to display correctly.
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 the following:
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)​ 
Ok, back to a fresh Terminal prompt. Time for installing the guts to build stuff in Ubuntu. Because (K)Ubuntu no longer carries ia32-libs-multiarch and ia32-libs (from Saucy onwards), it is necessary to install from precise repos:
Code:
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse"
sudo apt-get update
sudo apt-get install ia32-libs-multiarch
once is installed, you can remove repository:
Code:
sudo add-apt-repository --remove "deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse"
sudo apt-get update
Before start, install:
Code:
sudo apt-get install dpkg-dev
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
And we wait. Don’t worry, this isn’t the crazy downloading part just yet.
When that is done, do this:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Now it's time to download and setup SDK Tools. First of all download Android SDK Tools for Linux x64. Extract the folder “sdk”, inside package, into your "Downloads" folder and rename it to "AndroidSDK" e.g..
Then come to your terminal and type:
Code:
cd ~/Downloads/AndroidSDK/tools
and after:
Code:
./android sdk
You can now see the GUI that propose all installable packages. Install Platform tools and Tools for most recent Android (4.4), with the most higher API (19+) version. Flag "accept" and install.
Once is complete, you have you need the binary for repo that will let you talk to git servers and download all that precious source code:
Code:
mkdir ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Open "~/.bashrc" to add a line:
Code:
sudo nano ~/.bashrc
At the very bottom, add the following line:
Code:
export PATH=~/bin:$PATH
Save it. In nano that would be Ctrl-O and then Enter. Then Ctrl-X to exit back to a prompt. Type to restart bash:
Code:
source ~/.bashrc
Now you have all need to work (or play) with your ubuntu and it's time to give the sources (repositories) from your preferred Team (who share the source code for their rom). The most known host service for sources and projects is GitHub. E.g. https://github.com/CyanogenMod/
The point of start of any repo is its "manifest" (default.xml) where the team list all it's projects (here an example), only the necessary to the building process.
Until last year was necessary to compile (before begin and looking to platform manifest) an own local manifest where we exclude from download all the devices/kernel/vendor parts unnecessary for our device. This saves up to some Gigabytes of download.
Fortunately now the repositories will download itself the necessary devices/kernel/vendor parts when we'll choose ("lunch") the device to build ("make"). With the exception of AOKP who wanna know, before initialize your local repo, for which device/s you'd like build.
Unfortunately, for the HOX+, if not Cyanogenmod or any platform who support directly your enrc2b, is necessary to create a local manifest, to import the device/kernel/vendor parts need to build a rom for your enrc2b. This part will insert to the end and befor your "lunch".
A device merged into a ROM source and its frameworks has always:
A device part specifical for its own (typically located into /device/"vendor"/"devicename")
A possible device part specifical for its processor (typically located into /device/"vendor"/"processor class/name")
A kernel part specifical for its device (typically located into /kernel/"vendor"/"device name")
A vendor blobs part generical with inside all or part of vendor devices (typically located into /vendor/"vendor"/"device name")
The (1) if specifical for the rom (Carbon is slightly different from CM, from AOKP or Slim).
The (2) maybe the same for alls.
The (3) maybe the same for alls.
The (4) maybe the same for alls.
I saw "maybe the same" for (2), (3) and (4), because often the teams make choice on every part to optimize the use and functionality of its rom.
In the specific (for the HOX+) we give this four parts from CM (that fortunately supports enrc2b) to insert them into another platform. Because our device isn't supported.
The (1) part will be modified in a number of make files, the (2), (3) and (4) instead will be the same.
Now I'll write a section for each Team/ROM you want to initialize, that's for me has sense. How take a sense to put each "platform/project" in a different folder (e.g. CarbonDev in a folder and Cyanogenmod in another, both sons of your Home folder).
In the waiting to read next part, better familiarize a little with terms like "breakfast, brunch, lunch, make" into Android contest.
Building Cyanogenmod
In the terminal, now we'll make a folder where to store the Android source code. Typically will make it in your home folder, within a folder called like your projected ROM, to identify from other stuff, open your terminal and type:
Code:
mkdir –p ~/Cyanogenmod
cd ~/Cyanogenmod
Now we are going to initialize your local repository, with the "branch" cm-11.0 (KitKat), in your terminal:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
And now, the most long part of the story: you’re going to get the source. We have to download around 10-15 Gbytes. First of begin the process, you must to know that you can accelerate the process related to your processor and, obviously, to your internet band. You can choose the number of simultaneous processes to start. They depends from the "#" in the "-j" parameter. E.g. the option -j6 is related to a “normal” processor. If you have a performant processor and/or internet connection, try to increment putting –j10 or more. On terminal:
Code:
repo sync -j6
From time to time, check the situation on output, maybe occurs a pair of hours or a whole night. But when all will be done, you’re ready to build Android!
Once you finish your repo sync, you’ll ready to build. In your terminal, into your working folder type (pay attention at the initial “dot”):
Code:
. build/envsetup.sh
The commands are loaded, now you can build (tune your -j# parameter as you want):
Code:
breakfast enrc2b && make -j6 bacon
At the end of all, your fresh ROM to flash will be in Cyanogenmod/out/target/product/enrc2b. Happy flash!
Thanks @Lloir for supervision.
IMPORTANT: to flash a KK rom on enrc2b you'll need the Lloir's CWM recovery, available here.
Building AOKP
Reserved 2
Building Carbon
In the terminal, now we'll make a folder where to store the Android source code. Typically will make it in your home folder, within a folder called like your projected ROM, to identify from other stuff, open your terminal and type:
Code:
mkdir –p ~/CarbonDev
cd ~/CarbonDev
Now we are going to initialize your local repository, with the "branch" kk (KitKat), in your terminal:
Code:
repo init -u https://github.com/CarbonDev/android.git -b kk
After, using your file browser, go to your Home, CarbonDev (enable "show hidden files") folder and enter into ".repo" folder too. Create a new folder named "local_manifests" and create a new file named e.g. "MyRoomService.xml", edit it with GEdit (disable, into preference, "always make a backup copy...") and paste the follow content into:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="github"
fetch="https://github.com/"
sync-j="4" />
<project name="STELIX/android_device_htc_enrc2b_CarbonDev" revision="kitkat" path="device/htc/enrc2b" remote="github" />
<project name="STELIX/android_device_htc_tegra3-common" revision="cm-11.0" path="device/htc/tegra3-common" remote="github" />
<project name="STELIX/android_kernel_htc_enrc2b_CM" revision="cm-11.0" path="kernel/htc/enrc2b" remote="github" />
<project name="TheMuppets/proprietary_vendor_htc" revision="cm-11.0" path="vendor/htc" remote="github" />
</manifest>
You have just create a local manifest, to add certain projects that this platform haven't yet. It git clone my sources, which are simply CM sources modified for the CarbonDev frameworks needs.
And now, the most long part of the story: you’re going to get the source. We have to download around 10-15 Gbytes. First of begin the process, you must to know that you can accelerate the process related to your processor and, obviously, to your internet band. You can choose the number of simultaneous processes to start. They depends from the "#" in the "-j" parameter. E.g. the option -j6 is related to a “normal” processor. If you have a performant processor and/or internet connection, try to increment putting –j10 or more. On terminal:
Code:
repo sync -j6
From time to time, check the situation on output, maybe occurs a pair of hours or a whole night. But when all will be done, you’re ready to build Android!
Once you finish your repo sync, you’ll ready to build. In your terminal, into your working folder type (pay attention at the initial “dot”):
Code:
. build/envsetup.sh
The commands are loaded, now you can lunch:
Code:
lunch
Choose the number corresponding to your "carbon_enrc2b-userdebug" (and press ENTER on your keyboard!)
When the prompt come back you're ready to "make carbon":
Code:
make carbon -j6
Tuning your -j# parameter as you want...
At the end of all, your fresh ROM to flash will be in CarbonDev/out/target/product/enrc2b. And Happy flash!
Thanks @Lloir for supervision.
IMPORTANT: to flash a KK rom on enrc2b you'll need the Lloir's CWM recovery, available here.
Reserved 4
Reserved 5
Reserved 6
I'm using mint 16. What should I do different?
Sent from my hammerhead
Cuzz1369 said:
I'm using mint 16. What should I do different?
Sent from my hammerhead
Click to expand...
Click to collapse
Usually is recommended Ubuntu or Mint... I think there is no difference. Make attention if during packages installation it report any error.
PippoX3 said:
Usually is recommended Ubuntu or Mint... I think there is no difference. Make attention if during packages installation it report any error.
Click to expand...
Click to collapse
Awesome. Maybe you could add a guide on how to cherry pick commits next?
It tells me I have java version 1.5.0
java version "1.5.0"
gij (GNU libgcj) version 4.8.1
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Installed 1.6 and get this error
You are attempting to build with an unsupported JDK.
You use OpenJDK but only Sun/Oracle JDK is supported.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
need some help here.
Edit: Figured it out, building now. Thanks
Cuzz1369 said:
It tells me I have java version 1.5.0
java version "1.5.0"
gij (GNU libgcj) version 4.8.1
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Installed 1.6 and get this error
You are attempting to build with an unsupported JDK.
You use OpenJDK but only Sun/Oracle JDK is supported.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
need some help here.
Edit: Figured it out, building now. Thanks
Click to expand...
Click to collapse
Good. Hope you remove your open java. The first terminal remove any not supported java. Follow the guide step after step.
The cherry-pick is so simple to apply. Will see after. Thanks.
you can use OJDK with ALL the sources.
it will just come up with that "warning" and then will carry on building perfectly fine
thanks for the guide
can i use knoppix/debian instead of ubuntu ??
MasalaMan said:
thanks for the guide
can i use knoppix/debian instead of ubuntu ??
Click to expand...
Click to collapse
Yes, I use Arch. The instructions for Debian are essentially the same as Ubuntu
Sent from my Nexus 5 using Tapatalk
Lloir said:
Yes, I use Arch. The instructions for Debian are essentially the same as Ubuntu
Sent from my Nexus 5 using Tapatalk
Click to expand...
Click to collapse
Thanks mate. I haven't all this experience on different distributions. If I have a little of time, today I will add another slice to the pie...
Thank you so much for this guide @PippoX3 I am about to have the most fun of my life now. Thanks again my friend
Sent from my Nexus 5 using XDA Premium 4 mobile app
skulldreamz said:
Thank you so much for this guide @PippoX3 I am about to have the most fun of my life now. Thanks again my friend
Sent from my Nexus 5 using XDA Premium 4 mobile app
Click to expand...
Click to collapse
You're welcome mate. To share should serve to make more people happy!
In this thread it say you need proprietary files from the device. I don't see that step on your guide. So which is the right way?
http://forum.xda-developers.com/showthread.php?t=2060017
COMPILE From Source For Any Phone On Linux Distros [BUILD ENVIRONMENT TO COMPILE]
Sent from my hammerhead
Github.com/themuppets/htc all the prop files are uploaded there
Sent from my Nexus 5 using Tapatalk

[GUIDE] How To Configure Ubuntu 15.04 Vivid Vervet to Compile Android ROMs

— If you would rather use a ready-to-go Virtual Machine based on these instructions, check out this post!—
Copied with permission from nathanpfry.com​
With a new version of Ubuntu comes an update to my world-famous guide for setting up a build environment to compile Android ROMs. The aim of this is to simplify the configuration process for you.
Follow the directions step-by-step. All you have to do is copy and paste the code in order and it will be up and running in no time!
This guide applies to all variations of Ubuntu 15.04 Vivid Vervet 64 bit. Do not use the 32 Bit version.
Also, PAY CLOSE ATTENTION when to use “sudo” and when to not. It can make things funky if you do something as root that you shouldn’t.
Much thanks goes out to Google, ProTekk, Canonical, and everyone else that I read a random paragraph here and snippet there.
Ready to begin? Ok.
1) Unless it’s a completely fresh Ubuntu installation, many of you have the wrong version of Java installed. Let’s fix that first.
The command below makes sure you’re starting with a clean slate. Copy and paste it into a terminal (command prompt) window:
Code:
sudo apt-get remove openjdk-* icedtea-* icedtea6-*
If necessary, follow the on-screen instructions to remove any stray Java versions. Otherwise, move on to the next step.
2) Install the main build tools with this command:
Code:
sudo apt-get install openjdk-7-jdk git ccache automake lzop bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 g++-multilib python-networkx libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev liblz4-tool make optipng
That’s it on the package side of things.
3) A program called “repo” lets you communicate with git servers and download all that precious source code. The next command will install it:
Code:
mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
4) Use your favorite text editor to open ~/.bashrc – I like nano:
Code:
sudo nano ~/.bashrc
5) At the very bottom (use the Page Down key) paste this code to a new line:
Code:
export PATH=~/bin:$PATH
export USE_CCACHE=1
6) Save it. In nano that would be Ctrl-O and then Enter. Then Ctrl-X to exit back to a prompt. Restart bash:
Code:
source ~/.bashrc
7) In the terminal, navigate to where you would like to download the Android source code. The commands below will make it in your home folder, but if you have limited space you may want to create it somewhere else. Faster is better, i.e. SSD would be best, USB external (even 3.0) will be comparatively slow. Here we go:
Code:
mkdir ~/android
cd ~/android
8) Now you’re going to initialize the repo. This is where you decide the flavor of Android you want to build, i.e. AOKP, CyanogenMod, AOSP etc.
For the purposes of the tutorial, here’s the command for SimpleAOSP Lollipop:
Code:
repo init -u https://github.com/SimpleAOSP-Lollipop/platform_manifest.git -b L
9) Last step. Time to get the source. Prepare yourself, many gigabytes of downloading await.
Don’t worry, it’s automated.
Hey everyone, it’s the final terminal command!
Code:
repo sync
Check back periodically every hour or so. It all depends on how fast your connection is.
That should be everything. Now you’re ready to build Android. Good luck!
If this guide helped you out, feel free to click the thanks button!​
For those of you that want to build Gingerbread thru KitKat, here's the easiest way to update your system:​
First add the PPA for older Java 1.6 builds.
Code:
sudo add-apt-repository ppa:webupd8team/java
Then install:
Code:
sudo apt-get update && sudo apt-get install oracle-java6-installer
Once that completes, you simply need to tell Linux to use the older version of Java and Java Compiler to render content.
Run the following two commands separately, making the correct selection for Oracle JDK 1.6 both times when prompted. Again in the terminal:
Code:
sudo update-alternatives --config java
sudo update-alternatives --config javac
That should do the trick!
Going to replace 14.04 with this, keep having javac crashes and whatever it is is not isolated to this version.
Update:
mingw32, lib32bz2-1.0, lib32bz2-dev not found.
Code:
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar java version "1.7.0_79" OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu1) OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode).
The required version is: "1.7.x/1.8.x"
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
build/core/main.mk:174: *** stop. Stop.
#### make failed to build some targets (2 seconds) ####
Still getting this error
aapav01 said:
Code:
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar java version "1.7.0_79" OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu1) OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode).
The required version is: "1.7.x/1.8.x"
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
build/core/main.mk:174: *** stop. Stop.
#### make failed to build some targets (2 seconds) ####
Still getting this error
Click to expand...
Click to collapse
same error here. still trying to figure it out. you can remove the lines of code that check for java on main.mk to build, nonetheless.
---------- Post added at 08:32 ---------- Previous post was at 08:30 ----------
and BTW, you only need these packages to build on 14.04 and upwards:
Code:
sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip
in:
https://source.android.com/source/initializing.html
infected_ said:
same error here. still trying to figure it out. you can remove the lines of code that check for java on main.mk to build, nonetheless.
---------- Post added at 08:32 ---------- Previous post was at 08:30 ----------
and BTW, you only need these packages to build on 14.04 and upwards:
Code:
sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip
in:
https://source.android.com/source/initializing.html
Click to expand...
Click to collapse
did u find the way to solve it..
fix no.. kind of a hack.
edit "main.mk" and remove the lines that check for java version.
infected_ said:
fix no.. kind of a hack.
edit "main.mk" and remove the lines that check for java version.
Click to expand...
Click to collapse
bro but it will not stop that repo sync thingie
infected_ said:
fix no.. kind of a hack.
edit "main.mk" and remove the lines that check for java version.
Click to expand...
Click to collapse
BRO i found the fix just need to do this
Copy and paste the following into the terminal:
Code:
sudo apt-get install openjdk-7-jre openjdk-7-jdk
IF i help plz don't forget to press the thanks
---------- Post added at 11:26 PM ---------- Previous post was at 11:23 PM ----------
sylentprofet said:
If necessary, follow the on-screen instructions to remove any stray Java versions. Otherwise, move on to the next step.
2) Copy and paste the following into the terminal:
Code:
sudo apt-get install openjdk-7-jdk
​[/B]
Click to expand...
Click to collapse
i think u change the 2nd to this
Code:
sudo apt-get install openjdk-7-jre openjdk-7-jdk
infected_ said:
same error here. still trying to figure it out. you can remove the lines of code that check for java on main.mk to build, nonetheless.
Click to expand...
Click to collapse
For those of you that want to build Gingerbread thru KitKat (which requires Oracle JDK 1.6) but already have your system configured for Lollipop (JDK 1.7), here's the easiest way to update your system:
First add the PPA for updated Java builds.
Code:
sudo add-apt-repository ppa:webupd8team/java
Then install:
Code:
sudo apt-get update && sudo apt-get install oracle-java6-installer
Once that completes, you simply need to tell Linux to use the older version of Java and Java Compiler to render content.
Run the following two commands separately, making the correct selection for Oracle JDK 1.6 both times when prompted. Again in the terminal:
Code:
sudo update-alternatives --config java
sudo update-alternatives --config javac
That should do the trick! I'll add this to the main thread.
infected_ said:
and BTW, you only need these packages to build on 14.04 and upwards:
Click to expand...
Click to collapse
That may be true for vanilla Google Android, but if you attempt to build for another flavor (ie Cyanogenmod), additional packages are required (image optimizers etc)
This guide is designed to help new users prepare their systems as comprehensively as possible. If you don't know what you're talking about, please don't confuse people with misinformation or poorly crafted "hacks". I've been publishing this guide for 3 years now, ask a question and be patient, try reading Google results for a couple of hours - I'll do everything I can to help out.
garwynn said:
Going to replace 14.04 with this, keep having javac crashes and whatever it is is not isolated to this version.
Update:
mingw32, lib32bz2-1.0, lib32bz2-dev not found.
Click to expand...
Click to collapse
Thanks for the heads up. Don't know how those snuck in there, I think I accidentally copied the string from one of my older guides.
OP updated.
sylentprofet said:
That may be true for vanilla Google Android, but if you attempt to build for another flavor (ie Cyanogenmod), additional packages are required (image optimizers etc)
This guide is designed to help new users prepare their systems as comprehensively as possible. If you don't know what you're talking about, please don't confuse people with misinformation or poorly crafted "hacks". I've been publishing this guide for 3 years now, ask a question and be patient, try reading Google results for a couple of hours - I'll do everything I can to help out.
Click to expand...
Click to collapse
you are a bit full of yourself, no? i was trying to help. and i really dont care you've been doing this for 3y... anyone can google for tutorials and make one. you made even worse, just adapted one from 14.10 or 14.04, which gave you those 3 not found packages. you made the tutorial and forget to test it?
got it to build CM in 15.04 with the packages i mentioned, only lzop was missing.
and if you see another way to build, without the jayatana error, when checking for java version, without hacking main.mk to remove java version check, please be my guest and do so.
meanwhile heres a commit i pushed to temporarily build, until a proper fix gets merged on CM repos.
https://github.com/infected-lp/android_build/commit/eb88ff447df814f8c7a57e807e4b0bb4ede7c7dd
regards!
infected_ said:
you are a bit full of yourself, no? i was trying to help. and i really dont care you've been doing this for 3y... anyone can google for tutorials and make one. you made even worse, just adapted one from 14.10 or 14.04, which gave you those 3 not found packages. you made the tutorial and forget to test it?
Click to expand...
Click to collapse
Not really full of myself, no, I just know what I'm talking about.
Yeah I was a bit lazy and published without testing first, oh well. It's updated now. And I thanked the person that pointed it out.
The point is you weren't helping. Your "hack" will run into an error anytime you attempt to repo sync.
Either way I'm not here to argue about it. Have fun working on your projects!
sylentprofet said:
The point is you weren't helping. Your "hack" will run into an error anytime you attempt to repo sync.
Click to expand...
Click to collapse
lol.. explain that to me like i am a 6y old and been doing this since yesterday...
in which way will a cherry-pick commit on the build repo interfere with syncing? you dont build much, do you?
ill leave it here before you embarass yourself even more
regards.
infected_ said:
lol.. explain that to me like i am a 6y old and been doing this since yesterday...
in which way will a cherry-pick commit on the build repo interfere with syncing? you dont build much, do you?
ill leave it here before you embarass yourself even more
regards.
Click to expand...
Click to collapse
Most people starting to learn Android have no idea how to use git at that level. They would likely edit the file locally on their computer and then start running into problems. But hey what do I know?
*shrug* I'm over it already.
hi i am sorry
java err
cm12.1 buid...
install openjdk7 ..
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar java version "1.7.0_79" OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu1) OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode).
The required version is: "1.7.x"
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
java -version ok
[email protected]:~$ java -version
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[email protected]:~$
java -err
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
??
windows8k said:
java err
Click to expand...
Click to collapse
Hi, can you please try the following two commands separately and reply with copy-paste output?
Code:
sudo update-alternatives --config java
Code:
sudo update-alternatives --config javac
If it prompts you to make a selection, make sure to choose OpenJDK 1.7 both times.
Thanks!
windows8k said:
hi i am sorry
java err
cm12.1 buid...
install openjdk7 ..
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar java version "1.7.0_79" OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu1) OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode).
The required version is: "1.7.x"
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
java -version ok
[email protected]:~$ java -version
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[email protected]:~$
java -err
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
??
Click to expand...
Click to collapse
Hi,
the problem is due to JAVA_TOOL_OPTIONS line, appearing also launching
java -version
in order to avoid it you can uninstall jayatana and reboot the system:
sudo apt-get remove jayatana
[Restart the PC]
sylentprofet said:
Hi, can you please try the following two commands separately and reply with copy-paste output?
Code:
sudo update-alternatives --config java
Code:
sudo update-alternatives --config javac
If it prompts you to make a selection, make sure to choose OpenJDK 1.7 both times.
Thanks!
Click to expand...
Click to collapse
Thanks openjdk7 change sudo apt-get remove jayatana.
---------- Post added at 12:42 PM ---------- Previous post was at 12:42 PM ----------
aapav01 said:
Hi,
the problem is due to JAVA_TOOL_OPTIONS line, appearing also launching
java -version
in order to avoid it you can uninstall jayatana and reboot the system:
sudo apt-get remove jayatana
[Restart the PC]
Click to expand...
Click to collapse
Thanks openjdk7 change sudo apt-get remove jayatana. Reboot
windows8k said:
hi i am sorry
java err
cm12.1 buid...
install openjdk7 ..
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar java version "1.7.0_79" OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu1) OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode).
The required version is: "1.7.x"
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
java -version ok
[email protected]:~$ java -version
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[email protected]:~$
java -err
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
??
Click to expand...
Click to collapse
simply enter the dir /build inside your android build environment and copy & paste this and press enter:
git fetch https://github.com/infected-lp/android_build infected && git cherry-pick eb88ff447df814f8c7a57e807e4b0bb4ede7c7dd
then get back to the root of the build environment, like "cd .." or "croot" in case you've done ". build/envsetup.sh" already.
sylentprofet said:
Hi, can you please try the following two commands separately and reply with copy-paste output?
Code:
sudo update-alternatives --config java
Code:
sudo update-alternatives --config javac
If it prompts you to make a selection, make sure to choose OpenJDK 1.7 both times.
Thanks!
Click to expand...
Click to collapse
wont work, ive tried that.
aapav01 said:
Hi,
the problem is due to JAVA_TOOL_OPTIONS line, appearing also launching
java -version
in order to avoid it you can uninstall jayatana and reboot the system:
sudo apt-get remove jayatana
[Restart the PC]
Click to expand...
Click to collapse
removing jayatana also wont work ... it will still give error on the useragent, and update-alternatives wont help....
solution for now is what i say:
simply enter the dir /build inside your android build environment and copy & paste this and press enter:
git fetch https://github.com/infected-lp/android_build infected && git cherry-pick eb88ff447df814f8c7a57e807e4b0bb4ede7c7dd
then get back to the root of the build environment, like "cd .." or "croot" in case you've done ". build/envsetup.sh" already.
Click to expand...
Click to collapse
regards....
infected_ said:
simply enter the dir /build inside your android build environment and copy & paste this
git fetch https://github.com/infected-lp/android_build infected && git cherry-pick eb88ff447df814f8c7a57e807e4b0bb4ede7c7dd
Click to expand...
Click to collapse
Thank you for the solution! Build started, I hope it will be successful

[GUIDE][LINUX][Fedora 25] Setting up an Android compile environment

This post is mainly to communicate the packages required to get Fedora 25 ready to build android/AOSP. I don't intend to cover the Installation of Fedora, or the actual steps to generate the build (manifests, proprietary code, etc).
From a clean installation of Fedora 25:
Update the installation
Code:
dnf update
Install additional packages that we need to compile AOSP
(adapted from the Omni guide for F-19_64)
Code:
dnf -y install zip curl gcc gcc-c++ flex bison gperf glibc-devel.{x86_64,i686} zlib-devel.{x86_64,i686} ncurses-devel.i686 libX11-devel.i686 libstdc++.i686 readline-devel.i686 libXrender.i686 libXrandr.i686 perl-Digest-MD5-File python-markdown mesa-libGL-devel.i686 git schedtool pngcrush ncurses-compat-libs java-1.8.0-openjdk-devel xz-lzma-compat
Now let's grab some stuff from Google
Code:
mkdir -p ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Add to end of ~/.bashrc
Code:
export PATH=~/bin:$PATH
Configure git to identify you
Code:
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
At this point, the environment is ready to compile AOSP.
The remaining steps (getting & building the code, generating local manifest(s), looking up errors) are not distribution dependent, and are already posted in many places.
Create vendor directory, initialize repo , and download/sync the code (see vendor manifest page).
example:
Code:
mkdir -p ~/android/slim7
cd ~/android/slim7
repo init -u git://github.com/SlimRoms/platform_manifest.git -b ng7.1
repo sync -j#
Happy building,
-Cyril279
Super helpful guide. Thank you. I also ran the following to make sure I had all the stuff I needed.
Code:
sudo dnf groupinstall 'C Development Tools and Libraries'
Does LineageOS require extra packages? I am pretty sure it requires ImageMagick too.
cyril279 said:
This post is mainly to communicate the packages required to get Fedora 25 ready to build android/AOSP. I don't intend to cover the Installation of Fedora, or the actual steps to generate the build (manifests, proprietary code, etc).
-Cyril279
Click to expand...
Click to collapse
You created Android with Fedora?
FEDORA 30 Lineage 15.0
Code:
bash-5.0# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
Code:
ninja: no work to do.
[2/3] glob vendor/*/*/Android.bp
[1/1] /home/U-16/WORKING_DIRECTORY/out...ORKING_DIRECTORY/out/soong/build.ninja
18:43:57 *******************************************************
18:43:57 You are attempting to build with an unsupported JDK.
18:43:57
18:43:57 Only an OpenJDK based JDK is supported.
18:43:57
18:43:57 Please follow the machine setup instructions at:
18:43:57 https://source.android.com/source/initializing.html
18:43:57 *******************************************************
18:43:57 stop
make: *** [build/core/main.mk:21: run_soong_ui] error 1
bash-5.0#
taras-fedora-syn said:
You created Android with Fedora?
Click to expand...
Click to collapse
Yes. Let the errors be your guide.
cyril279 said:
errors
Click to expand...
Click to collapse
Hi! Compiling AOSP 7.1.2 for Sharp Z2 MT6797
eMachines eME642 AMD® Athlon(tm) ii p340 dual-core processor × 2
Fedora 34
Is my processor too weak?​
Notice file: prebuilts/tools/common/netbeans-visual/NOTICE -- out/host/linux-x86/obj/NOTICE_FILES/src//framework/org-openide-util.jar.txt
make: *** No rule to make target 'out/host/linux-x86/obj32/lib/libbcinfo.so', needed by 'out/host/linux-x86/obj32/lib/libbcc.so'. Stop.
LOG https://gist.githubusercontent.com/...9b1ad4b81a9de6124470aef15e89bca/gistfile1.txt

Categories

Resources