When I first attempted to install the SDK, I found tutorials that only had bits and pieces about the whole procedure. A lot of Google searches and hours of eye strain. I wanted to write a solid tutorial, but instead of publishing it in a personal blog, I chose to publish it here on xda-developers. This is the definite forum to come to if you are interested in Android/G1/HTC Dream development or costumization. I wrote this to make the enlarge the knowledge of this community.
!! THIS TUTORIAL IS FOR THE LATEST UBUNTU RELEASE: JAUNTY JACKALOPE 9.04 !!
!!START -------------------------------------- Optional Preparation --------------------------------------
This applies if you -
Are interested in installing Ubuntu for the first time.
Are/will be reinstalling Ubuntu from scratch.
Want to keep your SDK installation easy to reach.
Want to keep things nice and clean.
And your machine -
Has a second hard drive.
Has free space for another small partition.
This procedure will make things easier during installation of the SDK and in the long run. Hopefully you've read about partitions. If you are dualbooting, please read this first to get an idea of what you're doing.
While installing Ubuntu and on the Prepare Disk Space screen (partition editor), select "Specify partitions manually (Advanced)"
On the Create Partition dialog, select the following options:
Type for the new partition: Primaryor Logical if you're dualbooting and know what you are doing.
New partition size in megabytes: 5120MB (5GB) might work. BUT:
ccyrowski said:
It should be noted that if you ever plan on compiling kernels and/or cupcake ROM's you will NEED ubuntu8.04. You'll also need at least 10GB.
Click to expand...
Click to collapse
Location for the new partition: Beginning
Use as: Ext4 or Ext3Filesystem doesn't matter. (?)
Mount point: /AndroidSDKEnter this manually
Complete Ubuntu installation as usual.
-------------------------------------- Optional Preparation -------------------------------------- END!!
You will now install the SDK.
!!START -------------------------------------- Installing Android SDK --------------------------------------
Installing the SDK is the easiest of all.
Download the SDK.169.9 MB [http://developer.android.com/sdk/download.html?v=android-sdk-linux_x86-1.5_r3.zip]
Right-click and select Extract Here.
Move the contents of the android-sdk-linux_x86-1.5_r3 directory to your desired location.If you followed Optional Installation, move the contents to your /AndroidSDK directory in the root of your filesystem.
Close directory window.
-------------------------------------- Installing Android SDK -------------------------------------- END!!
You will now set up your bashrc file and UDEV to recognize your HTC Device.
!!START -------------------------------------- ADB + FASTBOOT --------------------------------------
The Android Debug Bridge (adb) is one of the tools that will help you the most when you run into flashing problems or running shell commands directly from your machine. UDEV will not recognize your G1 out of the box, but we will configure it with some rules so it can connect.
We will work with /AndroidSDK as the location of your sdk. If this is not your setup, I think you're smart enough to figure it out.
Editing .bashrc file to use tools from /AndroidSDK/tools/ directory -
Go to your home folder.Example: /home/wddglr/
Press Control + H to view hidden files.
Look for your .bashrc file and double click to open it with gedit.
Add the following lines to the top of the file:
Code:
#AndroidDev PATH
export PATH=${PATH}:/AndroidSDK/tools
IMPORTANT NOTE
savethechicken said:
This is the way that I have my .bashrc file setup. For those having problems with it not recognizing the adb as a command try this...
Code:
export PATH=$PATH:/AndroidSDK/tools
I removed the {} around ${PATH} and it is working if I had them on it would say that it didn't recognize the command. Removed them and all works well.
Click to expand...
Click to collapse
Setting up UDEV to recognize HTC Device -
Type the following into a terminal (Applications > Accessories > Terminal):
Code:
gksudo gedit /etc/udev/rules.d/51-android.rules
Now add the following line to the blank file:
Code:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
Click save and close.
To restart udev, open up a terminal and enter:
Code:
sudo /etc/init.d/udev restart
Setting up fastboot -
Download this fastboot binary from http://android-dls.com.130.4 KB [http://android-dls.com/files/linux/fastboot]
Once downloaded to your desktop, right click and select Properties.
Navigate to the Permissions tab and configure the following option:Execute: [√] Allow executing file as program
Click Close.
Move the fastboot bianary to your /AndroidSDK/tools/ directory.
Reboot.
-------------------------------------- ADB + FASTBOOT -------------------------------------- END!!Now you can use adb and fastboot directly from any terminal. If you chose to do the Optional Preparation, you can now save your Eclipse Workspace and your downloaded/custom ROMs/Themes in this new /AndroidSDK directory keeping things easier to reach and safe from evil disk errors or other mishaps!!! :OIf you are having problems, send me a PM. I will be happy to help.
*applaudes* awesome. Should be added to helpful threads.
very nice! perhaps add a "(How-To)" prefix to thread??
Everything was going great in setting this up until I got to this part "gedit /etc/udev/rules.d/51-android.rules"
I cannot find "51-android.rules" inside of "rules.d"
Any thoughts>?
nicholasbithell said:
Everything was going great in setting this up until I got to this part "gedit /etc/udev/rules.d/51-android.rules"
I cannot find "51-android.rules" inside of "rules.d"
Any thoughts>?
Click to expand...
Click to collapse
it does not exist, you will make it.
do the command as stated above.
Code:
gksu gedit /etc/udev/rules.d/51-android.rules
Damn you beat me to it!
I was just thinking earlier about doing this same "How-To" guide, I was surprise to see it posted just now.
Anyways, great job!
Can someone sticky this thread. Now I have ADB & fastboot on my Win7, Ubuntu, and OS X Partition. Thank you wddglr.
bravo...linux rocks even better now!...
Awesome tutorial for setting this up. Have been using adb/sdk on ubuntu since oct. but this would have saved me some headaches back in the first couple of weeks.
The onlything that is not clear and/or confuses me is
Setting up the udev to recognize the device.
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
Have never used this (will now to see if it will do anything) and the only problem i have is that sometimes i have to kill-server to get it to connect correctly but i have seen this happen to almost everyone on many forums since the 9.04 came out. And even after putting this file on the computer i have had the problem.
savethechicken said:
Awesome tutorial for setting this up. Have been using adb/sdk on ubuntu since oct. but this would have saved me some headaches back in the first couple of weeks.
The onlything that is not clear and/or confuses me is
Setting up the udev to recognize the device.
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
Have never used this (will now to see if it will do anything) and the only problem i have is that sometimes i have to kill-server to get it to connect correctly but i have seen this happen to almost everyone on many forums since the 9.04 came out. And even after putting this file on the computer i have had the problem.
Click to expand...
Click to collapse
It happens to me also from time to time. especially when i reboot and want to go into adb while the device is rebooting. although that file, 51-adndroid.rules, is what helped me get adb to recognize the device. the guide on developer.android.com talked about 50-android.rules but after a few deep searches i found this: http://groups.google.com/group/android-developers/browse_thread/thread/1d3488c601243686
Okay A few questions for you....
First I fixed the whole "couldnt find the (51-android.rules) file now I am having issues with executing ADB!
When in terminal this is what I get...
"[email protected]:/home/nick# /AndroidSDK/tools/adb
bash: /AndroidSDK/tools/adb: cannot execute binary file
[email protected]:/home/nick#"
and I also noticed something different from when I start terminal the first lines now state
"bash: : command not found
[email protected]:~$"
I dont remember the first line ever being there, but I could be mistaken!
Any help would be greatly appreciated!
Edit: You state creating "Mount point: /AndroidSDK" During Installation, and what I did was Just place my AndroidSDK at root so it is at "/AndroidSDK". I dont know if this makes a difference.
I am actually running ubuntu 8.10 ha! I just tried to update But I keep getting errors! is there anything I can change to get this to work on ubuntu 8.10?
nicholasbithell said:
First I fixed the whole "couldnt find the (51-android.rules) file now I am having issues with executing ADB!
When in terminal this is what I get...
"[email protected]:/home/nick# /AndroidSDK/tools/adb
bash: /AndroidSDK/tools/adb: cannot execute binary file
[email protected]:/home/nick#"
and I also noticed something different from when I start terminal the first lines now state
"bash: : command not found
[email protected]:~$"
Edit: You state creating "Mount point: /AndroidSDK" During Installation, and what I did was Just place my AndroidSDK at root so it is at "/AndroidSDK". I dont know if this makes a difference.
I am actually running ubuntu 8.10 ha! I just tried to update But I keep getting errors! is there anything I can change to get this to work on ubuntu 8.10?
Click to expand...
Click to collapse
okay, a few things -
seems like your .bashrc file isn't setup right (?)
make sure that the two lines you inserted into it are on separate line
Code:
#AndroidDev PATH
export PATH=${PATH}:/AndroidSDK/tools
because maybe export PATH=${PATH}:/AndroidSDK/tools got commented on accident if you copy pasted.
When copying your SDK to the root of your filesystem, did you copy it as your own user or as root? you can use:
Code:
gksu nautilus
to copy system files with complete root privileges.
What exactly are you trying to update, Ubuntu or ... ? There shouldn't be a difference to get this working on 8.10, the only thing that seemed to change was the 51-android.rules file. Maybe this can help -
renaming it to 50-android.rules with
Code:
gksu nautilus
and deleting any backups (use CTRL+H to view hidden files).
restarting udev using:
Code:
sudo /etc/init.d/udev restart
Remember this is for 9.04, not 8.10. I hope this helps.
wddglr said:
okay, a few things -
seems like your .bashrc file isn't setup right (?)
make sure that the two lines you inserted into it are on separate line
Code:
#AndroidDev PATH
export PATH=${PATH}:/AndroidSDK/tools
because maybe export PATH=${PATH}:/AndroidSDK/tools got commented on accident if you copy pasted.
When copying your SDK to the root of your filesystem, did you copy it as your own user or as root? you can use:
Code:
gksu nautilus
to copy system files with complete root privileges.
What exactly are you trying to update, Ubuntu or ... ? There shouldn't be a difference to get this working on 8.10, the only thing that seemed to change was the 51-android.rules file. Maybe this can help -
renaming it to 50-android.rules with
Code:
gksu nautilus
and deleting any backups (use CTRL+H to view hidden files).
restarting udev using:
Code:
sudo /etc/init.d/udev restart
Remember this is for 8.10, not 9.04. I hope this helps.
Click to expand...
Click to collapse
Okay this is how I moved my "AndroidSDK" Folder to root....
[email protected]:~$ su
Password:
[email protected]:/home/nick# mv /home/nick/Desktop/AndroidSDK /
[email protected]:/home/nick#"
And I went to the bashrc file and it is entered in there correctly.
This is still what I get even after restarting Udev...
" bash: : command not found
[email protected]:~$ adb
bash: /AndroidSDK/tools/adb: cannot execute binary file
[email protected]:~$ su
Password:
[email protected]:/home/nick# adb
bash: adb: command not found"
Edit: This is what my .bashrc file looks like, well the top part of it anyways....
#AndroidDev PATH
export PATH=${PATH}:/AndroidSDK/tools
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
Okay your .bashrc is setup right and it's recognizing adb and its directory.
I would say it's something to do with permissions. since you moved it under su, you are not the owner so i would say that you'd have to change the permissions of /AndroidSDK
you can do that with -
Code:
gksu nautilus
Navigate to /
Right click on /AndroidSDK and select Properties
Click on Permissions tab
Select your user account as the owner
hopefully now it will function correctly
wddglr said:
Okay your .bashrc is setup right and it's recognizing adb and its directory.
I would say it's something to do with permissions. since you moved it under su, you are not the owner so i would say that you'd have to change the permissions of /AndroidSDK
you can do that with -
Code:
gksu nautilus
Navigate to /
Right click on /AndroidSDK and select Properties
Click on Permissions tab
Select your user account as the owner
hopefully now it will function correctly
Click to expand...
Click to collapse
I dont understand what this line does...
"gksu nautilus"
when i type it in it asks me for my administrative password and then after i put it in it hangs for a sec and then back to...
bash: : command not found
[email protected]:~$ gksu nautilus
[email protected]:~$
nautilus is the file browser, while using gksu nautilus you can use the file browser under root privileges
wddglr said:
nautilus is the file browser, while using gksu nautilus you can use the file browser under root privileges
Click to expand...
Click to collapse
I dont have Nautilus as a file browser I have Thunar I believe.
Then gksu thunar
wddglr said:
nautilus is the file browser, while using gksu nautilus you can use the file browser under root privileges
Click to expand...
Click to collapse
For permissions it says that I am the owner and the group (I=Nick) for Others it says Read and Write, Access says Read and write. So it seems it has all the right permissions. Any other Ideas?
Partitioning HD
First off, thank you for this thread, it's most excellent. I have a question that is slightly off topic, but not so much. I have Ubuntu 9.04 installed on my recovery partition. This partition is only 10 GB, while I have Vista on my main. I have almost 100 GB free on my main drive, and what I want to know is, if I resized my partitions to give more space to Ubuntu, how would it affect my comp? (if at all). And which OS should I be on while resizing, Ubuntu or Vista?
Hi guys, I was hoping someone could help me write a simple script that I can execute in terminal. What I would like the script to do is copy all the files from one directory to another directory on my sdcard (to cut down what i need to type in terminal each time).
For example
cp /sdcard/dir1/*.* /sdcard/dir2
I've tried to just put that command line in a unix txt file from Crimson Editor, saved it as copy.sh. I did
chmod +x copy.sh
Then tried to type in terminal
sh /sdcard/copy.sh
I didnt get any errors, but I don't think it worked. Any help or suggestions are appreciated.
My phone is a N1 with the latest Cyanogen build. Thanks in advance.
** EDIT **
I fixed the issue by using a program called GScript from the market... I made a new script in the GScript window and can now just open gscript and click the script to run it instead of typing the terminal commands. Don't know if this will help anybody else with similar newbie scripting issues, but it worked for what I wanted to get done. I'm editing post instead of deleting because I don't see the delete post button.
** EDIT **
When I CD to the platform-tools folder and type
Code:
adb devices
it says "adb: command not found" If anyone could help me that would be wonderful. I am on the Inspire/DesireHD running AOSP Gingerbread. Thanks!
You have two choices. You can either run the command prefixed with ./ (dot slash), which allows for executing an executable in the current directory:
Code:
./adb devices
Or, the other choice (which will be better if you intend to use adb a lot) is to add the platform-tools folder to your path by editing or creating the file .bashrc in your home folder (~/.bashrc).
Let's suppose your platform tools folder is: ~/.android-sdk/platform-tools
Then, you would want to add something along the lines of the following to your bashrc:
Code:
export PATH="$PATH:$HOME/.android-sdk/platform-tools"
Save the file, the run this or log out/in:
Code:
source ~/.bashrc
Et voila, you should now be able to run adb from any folder without issue.
Explanation: adding the new path (folder) to your PATH environment variable tells BASH to include that folder in its search for an executable. The reason $PATH is added at the beginning of the new string is so that your default path does not get overwritten. $HOME will simply expand to /home/your_user_name when BASH interprets it.
GENIUS! IT WORKED! Thank you! Now, one more question- how do I get superuser privileges using ADB? (device is rooted, of course)
No problem.
On my G1 you were root as soon as you adb'd in. Just tested on my Defy and '$' - shocking. So once you have run adb shell, just run 'su' (without quotes of course) and accept the permission on your phone screen as usual for root programs and you should be good to go.
Sorry to keep asking questions, but when I typed
Code:
su
into adb, it asked for a password. No popup on device screen. I do have superuser installed on the device.
That is odd. I'm not sure why that would be. I'll see if I can think of something though. Hopefully someone else can make a suggestion.
Thanks! You have been very helpful.
Don't think I can hit the thanks button from the app, sorry
Sent from my Inspire 4G using XDA App
I uploaded the screen shot, please take a look and tell me what can I do to solve this problem, I've been trying to install ubuntu for the past few days and all I get in the end is frustration
looks like your first cd command should be (with quotes):
cd "SD Card"
Then try :
cd ubuntu
*sigh* No, didn't work.
UnidH4x0r said:
I uploaded the screen shot, please take a look and tell me what can I do to solve this problem, I've been trying to install ubuntu for the past few days and all I get in the end is frustration
Click to expand...
Click to collapse
When using the CD command, have you tried CD /sdcard/ubuntu and if you have, have you tried to do LS? this will allow you to list out your current directory and allow you to see if the file is there. IF the file is there when you do LS in the directory, you will need to do "ls -l" which means, in laymen terms, "Please Show Me The Permissions Of The Files Here!" and I will direct you towards this walkthrough to help you understand what a little better what it displays -- LS -L and what it does.
This will allow you to make sure that you have permission to look at that folder. IF you do not... then you will be able to change the permissions using CHMod (also in that link). I have a feeling that you do not have the ability to see it and this is what is hindering your ability to CD into the file. Give it a try and good luck
Recap
-- Out Going Links --
LS -L and what it does.
You're right, I can't seem to change it to chmod 777. When I enter it, it gives me back the same thing but then when I ls -l to check, the permissions haven't been set..
---------- Post added at 08:08 PM ---------- Previous post was at 07:51 PM ----------
Ok nvm got it fixed, now I'm just trying to fix that bootubuntu: 29: error :/
The way to start the terminal as root is pretty easy.
Open term emulator and then hit the menu button and go into preferences. You need to go down to the bottom where it says something like initial command. Click that and at the end of the export command you see (I think the end is after $PATH) type ;su then hit enter. Now whenever you start TE you get su immediately.
Sent by breaking the sound barrier
Indirect said:
The way to start the terminal as root is pretty easy.
Open term emulator and then hit the menu button and go into preferences. You need to go down to the bottom where it says something like initial command. Click that and at the end of the export command you see (I think the end is after $PATH) type ;su then hit enter. Now whenever you start TE you get su immediately.
...
Click to expand...
Click to collapse
Sorry to re-open this old thread, but can anyone suggest modification to the terminal emulator that may allow it to START as root. Typing "su" afterwards switches the user, however the app DOESN'T start initially as root.
There's a better way to do it. Allow me to elaborate some logic:
In Terminal Emulator, whatever you set as the 'shell command line', basically is nothing more than the command you set as the 'initial shell command'. The key difference is that the 'shell command line' is initiated prior to the 'initial shell command'. Therefore, anything set as 'initial shell command' to automate root access comes secondary to the shell you have already started (through the 'shell command line'), which will cause you opening a shell in a shell and thus having to exit two shells. This is dirty. You could work around that with an 'initial shell command' like "su && exit", but it'll remain to be a dirty solution.
If you want the shell in Terminal Emulator to start as root, then set the following 'shell command line' (personally I prefer bash):
Code:
[SIZE="3"]/system/xbin/su -c "/system/xbin/bash -"[/SIZE]
That way only, Terminal Emulator will actually start your session as root and nothing more but root. When you exit the shell, you exit the one and only shell initiated as root ending your session at once.
Now for the 'initial shell command', which you no longer require to obtain root using the above method, I personally have the following set to keep things consistent and give the shell a nice looking start:
Code:
[SIZE="2"]mkdir -p /data/local/bin && export PATH=/data/local/bin:$PATH && clear && uname -a && echo[/SIZE]
I hope this clarified things a bit.
Albert
bitmaster2000 said:
There's a better way to do it. Allow me to elaborate some logic:
In Terminal Emulator, whatever you set as the 'shell command line', basically is nothing more than the command you set as the 'initial shell command'. The key difference is that the 'shell command line' is initiated prior to the 'initial shell command'. Therefore, anything set as 'initial shell command' to automate root access comes secondary to the shell you have already started (through the 'shell command line'), which will cause you opening a shell in a shell and thus having to exit two shells. This is dirty. You could work around that with an 'initial shell command' like "su && exit", but it'll remain to be a dirty solution.
If you want the shell in Terminal Emulator to start as root, then set the following 'shell command line' (personally I prefer bash):
Code:
[SIZE="3"]/system/xbin/su -c "/system/xbin/bash -"[/SIZE]
That way only, Terminal Emulator will actually start your session as root and nothing more but root. When you exit the shell, you exit the one and only shell initiated as root ending your session at once.
Now for the 'initial shell command', which you no longer require to obtain root using the above method, I personally have the following set to keep things consistent and give the shell a nice looking start (think twice before commenting about the mkdir if you don't like it):
Code:
[SIZE="2"]mkdir -p /data/local/bin && export PATH=/data/local/bin:$PATH && clear && uname -a && echo[/SIZE]
I hope this clarified things a bit.
Albert
Click to expand...
Click to collapse
Thanks a lot, I solved the problem somewhat differently, in a way that may cause some raised eyebrows from people concerned with security. I created a copy of "sh", did a chmod 6755 on it, and set it as the shell. The reason for this is that I don't have superuser installed on my phone.
Off topic, it's all moot now because I managed to drop it again and the LCD detached from the gorilla glass. Happens once every 9 months. I came to XDA to see from my old posts where I bought the screen before.
Initial Command not working in cm11 (s7262).
Entering su in Initial Command in Terminal Emulator Preferences get this result:
Code:
[email protected]:/ $ 8;53R
Entering manually su command get OK., but initial command is not working.
How can I fix this problem?
Thanks.