[myTouch 4G Android Development] sykopompos:
This guide is geared to people that are new to ubuntu but would like to start playing with the internals of their android device and maybe even make themselves a rom,

disclaimer: if you break your equipment well that just plain sucks

If you are new to linux or wanna learn more about ubuntu, here is a link to the ubuntu 10.10 wiki and is full of great info

http://ubuntuguide.org/wiki/Ubuntu:Maverick

So you got yourself a nice copy of Ubuntu 9.10/10.04/10.10 and you have every intention of building a rom for yourself or maybe you just wanna learn the inside workings of android, well there are a few extra steps for getting it set up in 9.10/10.04. Gonna try to make this an easy transition since most of you are coming from a windows based machine. Make sure that you have at least a 30 gb partition set up to follow along with this guide, more is better but I know some don't have the hard drive space to spare.

So let's get our hands dirty

First we need to set up java and get a few programs, but first we need to open up our software settings, this is achieved by going up to our MENU BAR, going to SYSTEM and then then ADMINISTRATION. We will then go into SOFTWARE SOURCES. On 9.10/10.04, the repository for java 5 was removed so we need to add 9.04's repository. So let's go to our second tab marked “other software” and click ADD. A small box will open up asking us to add a apt line. So we have two software lines to add individually.

(on 10.10 software sources is inside update manager, clicking settings gets you into it)

deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse

then

deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

Now, make sure that both are checked to be used in software sources and close the window. It should ask to update your sources, allow it to (insert screenshot)

Some people have problems with internal wireless cards so this might be a fix for you which was an issue for me and thankfully Garok89 had the answer. This fix works on Broadcom based cards only (including Dell wireless cards).

For the wireless card (plug in via ethernet of course)

Open up a terminal and type

sudo apt-get install bcmwl-kernel-source bcmwl-modaliases

Reboot and then enable via System>Administration>Hardware Drivers

and see if it now says that you have proprietary drivers now

gingerbread is 64 bit only

http://groups.google.com/group/android-building/browse_thread/thread/852d63ab6124c87e?pli=1

Let's open up a pretty little terminal and let's get some debs (debs are Linux distribution specific packages like we have apks in android). After entering this command it will ask you to input the "[sudo] Password for xxxxx", this is the password you use to logon. (When you type your password you will not see anything, this is for security purposes)

sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk gitg qt3-dev-tools libqt3-mt-dev eclipse valgrind

NOTE: If we want to build with a x64-bit system we must also do the following

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev sun-java6-jdk gitg qt3-dev-tools libqt3-mt-dev eclipse valgrind pngcrush wput

It is quite a lot but it will download quickly depending on your internet connection, but almost all are needed, and yes, I did put in both java 5 and 6 because for some reason it helps having both installed side by side.

(don't forget to run update manager again and get your system up to date)

well while we are here we midas well set up our tool for downloading the source

REPO

Repo is a tool that makes it easier to work with Git in the context of Android. It is a almost the same as Git and we will go into the differences at a later time

we are gonna make sure that we are in our right directory so

cd ~

~ means home/user dir, so in my case it would be /home/sykopompos/ but using ~ allows us to simplify our use.

Mkdir bin

export PATH=${PATH}:~/bin

by typing echo $PATH we can see the all of what is in our path

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

to get the repo script

then we give it executable permissions so we can run it as a program

chmod a+x ~/bin/repo

Now we have repo set up we can move on to other things. Let's get going with setting up the android sdk. Let's go to the sdk's page in our web browser

http://developer.android.com/sdk/index.html

and select the newest linux version and download. When it is finished downloading open it up and extract it to your home/user folder and rename it to androidsdk for guide following ease purposes

next let's set up eclipse

open up eclipse, it will be in your menu bar under programming. just let it save to the workspaces folder that it defaults to and open up the help tab up on the top bar and go down to install new software

and add this line into the open text bar and type this

http://dl-ssl.google.com/android/eclipse/

now click add and in the box down below you will see it says developer tools. Click on the little check box and hit next. You should see android development tools hit next and follow the prompts and wait for it to download and install. You will have to agree to the terms to download, You will get a warning about unsigned content, just say yes. Once it is done click to restart Eclipse then go up to the window tab and go down to preferences, in the new window that pops up, go to android and add in where your android sdk is. Just hit ok and not apply or it will complain.

close out of that window than go down to in the window tab again and go into android sdk and avd manager. Go down to available packages and click on the little check box again. Download all available packages (you can prob get away without downloading anything pre 1.5/cupcake. Let that download and exit out

testsigning

go up to places on your desktop menu bar and go into your home folder. Press Ctrl and h together on your keyboard to show hidden folders. Anything marked with a . in front of it is hidden, we are looking for a folder name .gnome2, go into it and look for nautilus-scripts. Once inside this folder, right click on a empty space and select create document and then empty file and name it sign. Open up that empty document and copy and paste this script from dumbfaq on xda

#!/bin/bash

# Update the Loc var to where YOU stored the testsign.jar file !

SUCCESS=

Loc=~/androidsdk/tools/

for arg

do

TMP=$(ls $arg | sed 's/\(.*\)\..*/\1/')

EXT=${arg##*.}

java -classpath "$Loc"testsign.jar testsign "$arg" "$arg"-signed 2> /tmp/signTmp

SUCCESS=$?

if [ $SUCCESS -eq 1 ]

then

zenity --info --title "Sign APK" --text "signing FAILED! \n`cat /tmp/signTmp`"

exit 1

fi

mv $TMP.$EXT-signed $TMP-signed.$EXT

done

zenity --info --title "Sign APK" --text "signing completed!"

save and exit out and right click on our new script and select properties. select thru the tabs and look for a check box that says allow executing as a program. click on it and now we have a pretty little script that we can just right click on a update.zip file and sign with our test keys for flashing. but first we need to download the testsign java file and add it to our androidsdk/tools folder http://rapidshare.com/files/257189327/testsign.jar do not extract this just add it to the tools folder.

Last but not least, we need to set up adb

Open up a terminal (you might still have the previous one open, you can use that just make sure you are at ~/) and type

gedit .bashrc

paste this in the top

#AndroidDev PATH

export PATH=${PATH}:~/androidsdk/tools

export PATH=${PATH}:~/androidsdk/platform-tools

save and exit

we will check what our phone's vendor id is, this is helpfull to see if our phone is on the list, with all the growing numbers of new manufacturs producing android it is hard know every vendor's id so type

lsusb

while your phone is connected to see our vendor id and you will see something like this, if you have a device not listed please send me the vendor id at sykopompos@gmail.com so i can update in for others

Bus 002 Device 004: ID 0bb4:0c91 High Tech Computer Corp. (example is G2)

In this case the Vendor Id is “18d1″ and the Product ID is “4e12″. Please keep in mind that the Vendor ID for HTC changed from “0bb4″ to “18d1″. The older HTC phones like the G1 have a Vendor ID of “0bb4″.

in most cases as seen below we only need the vendor id and with a new device you can just c+p the line and replace the vendor id

so now we can make our rules file for connecting for adb so

sudo gedit /etc/udev/rules.d/51-android.rules

paste

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"

SUBSYSTEM==”usb”, ATTRS{idVendor}==”18d1″, SYMLINK+=”android_adb”, MODE=”0666″

SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666", GROUP="plugdev"

save and exit

reboot your computer to have the new changes take effect otherwise adb will not be in your $PATH

let's check to make sure our device is seen by adb by typing

adb devices

it should give you info back that you are connected if you are not or it doesn't read the vendor id than it might be a little bit more complicated, note adb will not read if you have usb mass storage mounted, also need usb debugging on in settings/apllications/development on your phone

Now we have a complete android development environment, aren't you proud of yourself. You are well on your way to making your own custom rom

it is a wise idea to have a backup of a system dump for stock apps and to get a feel for the way android is set up and also to pull any needed files from that are easily viewed on your computer at least as refefence connect your phone in adb in the terminal type

cd ~/

mkdir stock

cd stock

adb pull /system/ ~/stock/

this will make a system dump of your systems folder of your device, a wise idea would be to make a zipped versions of it and put it someplace secure