So, everything I flash a new ROM, I have some commands I run via ADB on my laptop that moves some APKs around on the phone as well as pushing some to the phone. I would like to compile these commands into an update.zip file so that I don't have to be near a laptop every time I want to flash a new ROM. I read up on update-script syntax, but I didn't see anything regarding ADB commands. Is it possible to administer ADB commands within update-script syntax? The one I need to use the most is mv, so if there is an alternative to that in the update-script syntax, that would work too.
cambunch said:
So, everything I flash a new ROM, I have some commands I run via ADB on my laptop that moves some APKs around on the phone as well as pushing some to the phone. I would like to compile these commands into an update.zip file so that I don't have to be near a laptop every time I want to flash a new ROM. I read up on update-script syntax, but I didn't see anything regarding ADB commands. Is it possible to administer ADB commands within update-script syntax? The one I need to use the most is mv, so if there is an alternative to that in the update-script syntax, that would work too.
Click to expand...
Click to collapse
Well, mv for example is not an ADB command (adb shell mv) it's a shell command. So I think you want to be able to run shell commands from an update/r script?
If that's the case, download my rom and have a look at the build script, it executes a comprehensive shell script which might give you some pointers.
djmcnz said:
Well, mv for example is not an ADB command (adb shell mv) it's a shell command. So I think you want to be able to run shell commands from an update/r script?
If that's the case, download my rom and have a look at the build script, it executes a comprehensive shell script which might give you some pointers.
Click to expand...
Click to collapse
Thanks, I will check it out now.
cambunch said:
Thanks, I will check it out now.
Click to expand...
Click to collapse
djmcnz said:
Well, mv for example is not an ADB command (adb shell mv) it's a shell command. So I think you want to be able to run shell commands from an update/r script?
If that's the case, download my rom and have a look at the build script, it executes a comprehensive shell script which might give you some pointers.
Click to expand...
Click to collapse
Bump...
Care to post the build script instead of us having to download a ROM for it?
Related
Hey Boys and Girls,
where i can find an manual to root the tattoo with a mac?
sorry, i have search for this, but i cant find information for this
I don't thing that there is a difference.
As soon as you have SDK installed and adb works, the commands are the same.
hi,
i'm also doing all the rooting process from mac, just put the directory contain 'adb' shell into your home/user places and executing it with 'terminal'..
Same here, using a Mac ever since and also using it for Android development. Due to the underlying Unix core of OS X you just have to follow the steps as described for Linux. If it's just adb commands it's the same on every platform anyway.
You might want to add a
Code:
export PATH=${PATH}:/Users/yourusername/android.sdk/tools
to your .bash_profile file in your home folder so you don't have to cd to the SDK tools folder everytime. Happy rooting!
Mod. edit: not dev related, moved to general
Okay thanks for yours answers but i'm a newbie.
the background story is, I want to edit the boot.mp3. Because the startsound is really annoying
So i have download SDK, open the terminal and switch to usb-debbugging mode on my tattoo.
And now? sorry, I'm still missing a few knowledge
thanks for your help
well just use the various adb commands in Terminal Just type in "adb", press enter and you'll get a list of all possible commands. Assuming you've added the path to your sdk tools folder to your bash profile. Otherwise just drag & drop the adb binary from the tools folder onto your Terminal window, et voila.
The most used commands are probably push and pull where you can, well, push stuff to your phone or pull it to your computer.
So if you want to modify the boot.mp3 you would pull the original from the phone to your computer, modify it and push it back, overwriting the original file. In Terminal speak: ;-)
adb pull /system/media/bootscreen/boot.mp3
adb push /path/to/boot.mp3 /system/media/bootscreen/boot.mp3
Please note depending on the ROM you're using the paths may be different. To browse the device via Terminal type in "adb shell" and make a simple "ls" to list the directories, "cd" to change directories etc.
Or if you just want to use another mp3:
adb push /path/to/whatever.mp3 /system/media/bootscreen/boot.mp3
Again, on the Mac you can just drag & drop files onto the Terminal to get their full Unix paths like to your custom mp3
Thanks a lot. i love it its really simple
and now i have load and edit the the boot.mp3. But i can't push it to my tattoo, because i can only read but not write
I have tried to root my phone with "adb root" but it is the message "adbd cannot run as root in production builds"
Terminal: "adb remount", then push again
damn the next bad message "remount failed: Operation not permitted"
You need to root your phone first.
http://forum.xda-developers.com/showthread.php?t=637927
Okay i have executed the instructions. But I've stop at this part:
You should get something like this:
Code:
# id
uid=0(root) gid=1000(shell) groups=1003(graphics),1004(input),1007(log),1011(adb),1015(sdcard_rw),3001(net_bt_admin),3002(net_bt),3003(inet)
uid=0(root) is important.
Click to expand...
Click to collapse
Yes i've root but i'cant download the "su binary" because its doesnt exist.
But its absolute essential to need the "su binary" to only copy the boot.mp3 to my phone? Or there is an other way? What are the commands to push the boot.mp3 back to may tattoo then i'm in the root mode like >> "#".
okay hope you understand me
You need "su" to do root stuff... no other way.
Download the package from 1 click root thread and find "su" there...
http://forum.xda-developers.com/showthread.php?t=644279
now, i have install the su binary. Then i does this command
user:~ user$ /Users/user/android-sdk-mac_86/tools/adb shell
$ /data/local/bin/su
#
Click to expand...
Click to collapse
And now? Is there a comand to push the boot.mp3 back to the phone in this mode >> "#" ?
I have try to open an new terminal window and type
adb push /path/to/boot.mp3 /system/media/bootscreen/boot.mp3
Click to expand...
Click to collapse
but the answer is
failed to copy '/Users/android-sdk-mac_86/boot.mp3' to '/system/media/bootscreen/boot.mp3': Permission denied
Click to expand...
Click to collapse
and adb remount doesnt work to
You also need tattoo-hack.ko file and do insmod tattoo-hack.ko to make /system writable.
Or even better... flash custom amon_ra recovery image and then a custom rom with all this already included.
Mine for example http://forum.xda-developers.com/showthread.php?t=702401
It doesnt have boot sound enabled
Okay thank you very much.
now it was successful
I searched around and couldn't get a clear answer. I'm a noob at anything command prompt/terminal related.
I was screwing around with adb last night after figuring out that I can remove program .apks with the rm <com.whatever.program> command. I got a little trigger happy and removed things that I don't use, just to test it out. I made a nandroid backup before I started. The phone runs fine, but now the Market won't download anything. It just sits on the Starting download... screen.
One of the .apks I removed was GmailProvider.apk. Whether this is the problem or not, I'd like to reinstall it for practice. I can always nand restore later.
So my question is... How can I use adb push to reinstall an apk?
I tried:
Code:
adb push C:\GmailProvider.apk
adb install C:\GmailProvider.apk
adb install C:\GmailProvider.apk \system\app
And about every variation of the 3, in and out of the adb shell.
It didn't work, and I'm at a loss to do anything else. So does anyone have any suggestions?
You have to push it abs then give it permissions.
So after pushing the apk give it permissions by doing this.
Code:
Adb push C:/gmailprovider.apk /system/app/gmailprovider.apk
adb shell
Chmod 775 /system/nameofapp.apk
Exit
Adb reboot
Your phone needs to be rebooted so I added the adb reboot, but you can just turn it off and on like you would normally or use that command.hope it helps.
Sent from my Eris using XDA App
Code:
# Chmod 775 /system/GmailProvider.apk
Chmod: not found
What's Chmod do, anyway?
EDIT: Forgot to cd to the directory...lemme try again.
EDIT2: Same error.
Okay, I tried:
Code:
# install /system/app/GmailProvider.apk [-cdDsp]
With no errors. Lemme see if it worked.
EDIT: I can see it, but the Market still isn't downloading apps. Lemme try an actual program.
Raikalo said:
Code:
# Chmod 775 /system/GmailProvider.apk
Chmod: not found
What's Chmod do, anyway?
EDIT: Forgot to cd to the directory...lemme try again.
EDIT2: Same error.
Click to expand...
Click to collapse
Ok I see two things that might be wrong with what you did.
Try not capatalizing the first letter(Not sure if this is a big deal but better to make sure.) and fix your path, GmailProvider.apk should be in the system/app folder.
Code:
adb shell
chmod 775 /system/app/GmailProvider.apk
adb reboot
The chmod command (abbreviated from change mode) is a shell command and C language function in Unix and Unix-like environments. When executed, it can change file system modes of files and directories. The modes include permissions and special modes
EDIt:
Raikalo said:
Okay, I tried:
Code:
# install /system/app/GmailProvider.apk [-cdDsp]
With no errors. Lemme see if it worked.
EDIT: I can see it, but the Market still isn't downloading apps. Lemme try an actual program.
Click to expand...
Click to collapse
Yea you might be able to see it but the app might not have the right permissions to be used. Therefore it might be the reason why you can't download apps from market.
Excellent.
Code:
adb push C:/GmailProvider.apk /system/app/GmailProvider.apk
adb shell
chmod 775 /system/app/GmailProvider.apk
adb reboot
Worked like a charm. The capitalization was required; it gave an error without it. I installed Gmail.apk again using the same method and ran the program, and it worked. Thanks!
EDIT: GASP! Market works.
You're a lifesaver. Well, ROMsaver. I guess this means that GmailProvider.apk and gtalkservice.apk can't be removed from the phone.
Raikalo said:
However, the Market still won't download. Hm.
Click to expand...
Click to collapse
I just want to take this moment to make a Public Service Announcement: Everyone please remember to do a Nandroid backup before making any changes to your /system area.
Raikalo said:
Excellent.
Code:
adb push C:/GmailProvider.apk /system/app/GmailProvider.apk
adb shell
chmod 775 /system/app/GmailProvider.apk
adb reboot
Worked like a charm. The capitalization was required; it gave an error without it. I installed Gmail.apk again using the same method and ran the program, and it worked. Thanks!
However, the Market still won't download. Hm.
Click to expand...
Click to collapse
Don't know what to tell ya, you can start adding back the apks you deleted or do that nand restore since you already know how to install back a system apk, so you learned what you wanted
EDIT: I see you got it to work so that's good news, but like Nestor pointed out always use nand backup before you do any changes to the system area, I've learned to do this the hard way lol.
It's a good reminder
Thanks a ton guys I'll nand backup in a few to have a better restore point.
Learning android-related things ftw!
Oh, one more thing.
I saw something about adding an Environmental Variable to windows that involved adb? Could someone explain that?
- Also, Mikey1022 has reminded me to add the "ADB" directory path as a system variable in windows...
To do this right-click on "My Computer" and select Properties. Next select the Advanced tab(Advanced Settings in Vista) then select Environment Variables.
Click "New" under System Variables and add the following:
Variable: adb
Value: C:\android-sdk-windows-1.1_r1\tools
Click to expand...
Click to collapse
There's an example. I tried this and it didn't do anything.
Raikalo said:
Oh, one more thing.
I saw something about adding an Environmental Variable to windows that involved adb? Could someone explain that?
There's an example. I tried this and it didn't do anything.
Click to expand...
Click to collapse
i think Thefuzz4.net explained this better
To make life easier, lets add a global path to the android SDK tools. Right-click My Computer > Properties,
click on Advanced, then click on Environment Variables.
Doubleclick on PATH, then at the end of the Variable value, add a semi colon ";" and then c:\AndroidSDK\tools
Doing The above ^^ will let you run adb from anywhere on your computer, like your desktop. You won't have to change to the directory and the run adb anymore, you can just run adb from anywhere on the command prompt. Its basically a little trick for us lazy people that hate having to "cd C:/android/tools" before running adb.
Does anyone know of a good resourse for adb and/or shell commands. Every time i try to goole it i just get links to different forums with just basic stuff, push, pull, ect. Id like to find something much more complete including chmod and the like
Sent from my Eris using XDA App
Thanks t2. Makes sense now. I hate CDing to the directory, so shortcuts are also ftw.
@above -- couldn't find a real resource so I resorted to asking specific questions on xda. if you find a resource lemme know.
ALSO -- chmod 775 /system/app/RandomProgram.apk.....what does the "775" do?
Raikalo said:
Thanks t2. Makes sense now. I hate CDing to the directory, so shortcuts are also ftw.
@above -- couldn't find a real resource so I resorted to asking specific questions on xda. if you find a resource lemme know.
ALSO -- chmod 775 /system/app/RandomProgram.apk.....what does the "775" do?
Click to expand...
Click to collapse
the different numbers are different permission settings. I forgot the other numbers, but their are others that set the applications for different permissions in the system. Someone correct me if I am mistaken though.
Finally found some explanation of chmod at catcode.com/teachmod/ . not sure if it directly applies to andriod, but seems to make sense to me now
Sent from my Eris using XDA App
wrong thread
Hey all,
I'm trying to create a linux script that executes some adb commands. For example, I would like it to be able to automatically exchange nv_data.bin (which need 'su' rights as you certainly know). The problem begins here:
if I execute command: 'adb shell cp x.x y.y' is fine,
but 'adb shell su cp x.x y.y' is just now working.
So I would need help with this. How can I make it work? I tried adb shell & su and stuff like this, but just did not work... THanks in advance!
94kram01 said:
Hey all,
I'm trying to create a linux script that executes some adb commands. For example, I would like it to be able to automatically exchange nv_data.bin (which need 'su' rights as you certainly know). The problem begins here:
if I execute command: 'adb shell cp x.x y.y' is fine,
but 'adb shell su cp x.x y.y' is just now working.
So I would need help with this. How can I make it work? I tried adb shell & su and stuff like this, but just did not work... THanks in advance!
Click to expand...
Click to collapse
adb shell su -c ls
Thanks! It seems to work, but somehow it just did not ask for permission on the phone, so returns 'Permission denied.' I checked phone, but it didn't ask me if I want to enable or not.
Try
Code:
adb shell su -c "ls" -root
Hm, now it asks for it. Thanks! Is it possible, to ask for permission only once, at the beginning, and then be able to do everything?
94kram01 said:
Hm, now it asks for it. Thanks! Is it possible, to ask for permission only once, at the beginning, and then be able to do everything?
Click to expand...
Click to collapse
I'd think if u call it with -root it should only ask once.
Not sure though.
If it asks more than once, could you push a script to the device (somewhere that normally has full r/w access), run it with a single command, then delete it?
To start off I want to say, I am NOT claiming to have created this exploit, I am merely letting people know that it works on the arc.
All credit for this goes to Chainfire and The Android Exploid Crew
The origional thread is here: http://forum.xda-developers.com/showthread.php?t=1044765
Download here
Install the APK and run it.
For people getting "could not extract assets" error execute
adb shell rmdir /data/local/tmp
and then
adb shell mkdir /data/local/tmp
Click to expand...
Click to collapse
Quote posted by jassired
works for me
So just push the apk to the phone, install and you're done?
no need to "push", just stick it on your sd card and install
diggedy said:
no need to "push", just stick it on your sd card and install
Click to expand...
Click to collapse
I get the error thing...and I can't find the effing map where I need to remove stuff....
where do I find the god damned map to remove the files I need to remove when it only fails to install?????
I've checked every single map on the memory card, going nuts here...
Cim_XII said:
where do I find the god damned map to remove the files I need to remove when it only fails to install?????
I've checked every single map on the memory card, going nuts here...
Click to expand...
Click to collapse
What do you mean?
double post :s will use this later
I have put the .apk in my download map on the sd card of the phone, installed the apk and run it and I get the: "could not extract assets" error execute
and then when I get that I am supposed to remove some files from a map on the sd card, and I cannot find said map....I hava rebooted the phone, and I still cannot find data/local/tmp or what ever map I need to find.....
Cim_XII said:
I have put the .apk in my download map on the sd card of the phone, installed the apk and run it and I get the: "could not extract assets" error execute
and then when I get that I am supposed to remove some files from a map on the sd card, and I cannot find said map....I hava rebooted the phone, and I still cannot find data/local/tmp or what ever map I need to find.....
Click to expand...
Click to collapse
you need to execute the commands in the origional post via ADB with USB debugging enabled, because the location is in the system and ironicly you dont have the root privelages to delete them
I don't even know what ADB is....that's how much I know...
Cim_XII said:
I don't even know what ADB is....that's how much I know...
Click to expand...
Click to collapse
I have attached it to this post. ADB is the Android Debug Bridge. It is used to excecute commands on android devices. Just extract the zip, then open a command prompt and change to the directory of ADB, then excecute the commands.
if you get the error for esset you need to remove all the files inside to /data/local/tmp/
press: adb shell
press ls /data/local/tmp
and remove one by one the files as my example:
$ ls /data/local/tmp/
ls /data/local/tmp/
Superuser.apk
Gingerbreak
runscript
sysrun
$ rm /data/local/tmp/Superuser.apk
rm /data/local/tmp/Superuser.apk
$ rm /data/local/tmp/Gingerbreak
rm /data/local/tmp/Gingerbreak
$ rm /data/local/tmp/runscript
rm /data/local/tmp/runscript
$ rm /data/local/tmp/sysrun
rm /data/local/tmp/sysrun
and now try again with app and may it works (in my case, works)
dh2311 said:
I have attached it to this post. ADB is the Android Debug Bridge. It is used to excecute commands on android devices. Just extract the zip, then open a command prompt and change to the directory of ADB, then excecute the commands.
Click to expand...
Click to collapse
maybe I should've mentioned I'm on a Mac computer with no access to windows....damn, this is so frustrating....
Ah... Its still possible you just have to get the android sdk for mac.
Get the SDK from here
Then in the tools folder ADB should be there
Then its commands as normal I think... not sure tho, don't have a mac.
Search around on here for tutorials, I'm sure someone has put up a tutorial on setting up adb on mac
dh2311 said:
Ah... Its still possible you just have to get the android sdk for mac.
Get the SDK from here
Then in the tools folder ADB should be there
Then its commands as normal I think... not sure tho, don't have a mac.
Search around on here for tutorials, I'm sure someone has put up a tutorial on setting up adb on mac
Click to expand...
Click to collapse
kewl, and the exact commands is in post #1 right?
so this root's the OS, title is confusing, does it enable fastboot? allow you to flash custom roms?
should be....
dh2311 said:
you need to execute the commands in the origional post via ADB with USB debugging enabled, because the location is in the system and ironicly you dont have the root privelages to delete them
Click to expand...
Click to collapse
did exactly what you said, but get the message
adb: permission denied
No does not enable fastboot
i'm new here so first of all hello to everyone.
heres my problem. hopefully somebody can help me.
how can i get an inode of a file. that meens to read a
particular part in the data partition. of course that
could only be possible with su, thats clear.
You've got to use the command line for every root thing.
You can get the inode as described here: http://www.cyberciti.biz/faq/howto-print-inode-data-structure/
How to use root commands: http://forum.xda-developers.com/showthread.php?t=2226664
nikwen said:
You've got to use the command line for every root thing.
You can get the inode as described here: http://www.cyberciti.biz/faq/howto-print-inode-data-structure/
How to use root commands: http://forum.xda-developers.com/showthread.php?t=2226664
Click to expand...
Click to collapse
thanks for the quick response.
i find out that ls has no option -i on android to show inodes.
does anybody know another way to get them
xiyuo said:
i find out that ls has no option -i on android to show inodes.
does anybody know another way to get them
Click to expand...
Click to collapse
Compile or use a version of busybox which has it and use that one. Add it to your apps assets and copy it to the data directory of your app. Then use that binary for the ls command.
That part is very difficult on Android. On one device you have got the ls command but the output might look completely different on another phone. (Some time ago someone reported that he noticed "ls" being linked to "ls -l" on one phone. On another phone the option "-l" might be missing.
So it is recommended to use busybox for every root command.
..
nikwen said:
Compile or use a version of busybox which has it and use that one. Add it to your apps assets and copy it to the data directory of your app. Then use that binary for the ls command.
So it is recommended to use busybox for every root command.
Click to expand...
Click to collapse
i did that.
but with
./busybox ls -i
i get
cant execute permission denied.
even if i use su. how could that be?
does anybody know how i get the permission?
xiyuo said:
i did that.
but with
./busybox ls -i
i get
cant execute permission denied.
even if i use su. how could that be?
does anybody know how i get the permission?
Click to expand...
Click to collapse
In Linux you have to add the right to execute it first:
Code:
su
chmod 775 <filename>