[Android Software Development] Goatshocker:
​

Background:

It all started with me often finding myself sending small files to my device, and quickly got sick of the constant enabling/disabling of USBMS on my old phone, which is quite slow with re-mounting the SD card(ZTE Blade).

I also quickly got sick of not being able to quickly transfer files from my PC to my tablets internal storage.

There are a few graphical interfaces for adb out there, but none was really what I wanted...

So I decided to attempt to code something myself, and here we are!

Info:

A graphical UI for "adb push" to quickly transfer files from your PC to any location on your Android device.

.... Thats what I planned when i started, and what the first 2 versions did...

Now it hosts a powerful File Explorer thats capable of doing everyday tasks such as copy, paste, rename, create folders, delete files and folders, as well as transfering files on its own.

Features:

The main application is capable of sending and receiving files, and installing APKs.

It also serves as the connection-manager as can connect to devices using either your USB Sync cable, or by using WLAN (req. an app on your device to enable wireless adb).

Finally, it hosts a few other functions such as reboot to recovery, reboot to bootloader and a plain reboot.

The Filebrowser is very similar to any other filebrowser you use everyday on your PC.

It can copy/cut and paste files and folders within the device, rename file and folders, create new folders, delete files and folders.

Highlights would be:

Browse the content of your device like you browse your PC's harddrives

Drag and drop files between your PC and your Android device

Move, copy, delete and rename files and folders

Limitations:

The main program does not detect case sensitive, which can end up with funny results if you push a file to "/removable/" instead of "/Removable/" for example.

ADB is only capable of sending 1 file at a time, but is capable of sending whole directories incl. subdirs.

In a future update, I will add the ability to send multiple files.

Getting started:

Everything should be self explanatory. Most of the buttons have tooltips that tells you what they do.

Basically you make sure USB Debugging is turned ON on your device, plug it into your PC and start Quick ADB Pusher.

If you are connecting using a USB Cable, the application should find it automatically.

If you're connecting through wifi, you will need to type the IP address in the dedicated field. Port only needs to be provided if you are using any other port than the standard 5555. The IP address will be saved, and you can select it from the drop-down list the next time you start the application.

Requirements:

An Android device.

Windows

.NET 3.5

USB Debugging turned ON.

Additional Recommendations:

Root

Busybox

Vulnerable Kernel or Custom ROM

Q&A

Q: My device is rooted, but the program says it cant get root access

A: You are probably on stock rom or kernel. Most shipped roms have root-access from adb blocked.

To check this: Open default.prop located in the root of your device ("/"). If ro.secure is set to 1, thats your issue. Note: Default.prop gets overwritten everytime you restart the device, so changing this file will do nothing.

Theres is an app available that can fix/bypass this: http://xdaforums.com/showthread.php?t=1687590

Q: The cache didnt delete itself when I closed the app!

A: You have two choices here: Either delete the cache/ folder located in the same location as the adb pusher exe, or you can just open and close the program.

If the cache still wont delete itself, report it as a bug.

Q: I cant connect to my device over wifi!

A: Make sure you have an app on your device that enables wireless ADB and that its turned ON. I personally use adbWireless found on the Play Store.

Double-check you are attempting to connect to the correct IP and port.

Q: Whats the "Information" window good for?

A: Its actually a left-over debug window, but can provide you with useful information should a transfer fail. If nothing else, you can use it if and when you report a bug.

Note that the Info window only shows what the main program is doing. ADB Explorer works independently, and will not report anything to the Info window.

Q: Why do I have to click a button to switch between push, pull and install?

A: The program need to knows which adb command to run (adb push or adb pull), and having a button for it was the easiest way for me :) .

The install option is there because you might not always want to install an .apk, but rather store it on your SD card or something. I know I do.

Q: Why cant I send a whole folder to my device from the main program?

A: Old implementation, use the built-in ADB Explorer instead, which allows you to send whole folders.

Q: Whats the point in the main program, when the Explorer can do everything but better?

A: At the moment it still controls the actual transfers as well as the connections to your device(s).

The main program is, however, more or less untouched since v0.3, while the Explorer is constantly being updated. Therefore, the Explorer hosts more and better features.

I am concidering removing the main form, as its rather obsolete by now.

Q: I Have a question!

A: Feel free to ask in this thread, and I'll answer your question as best I can.

Q: Can I donate?

A: No, I dont feel this program is worth "paying for" and it wouldnt feel right to receive money for it in any form.

Hit 'thanks' and vote the thread 5stars instead ;)

Q: I Found a bug, how do I report it?

A: Report it to me on this forum, either in the thread or through PM, and I'll make sure to look into it.

Just make sure to provide as much info you can.

And remember: I cant fix anything if I dont know about it! So dont hesitate reporting bugs.

Changelog:

v0.5 current version

First of all... v0.4.1 had 6570 views on the attachement alone. Not bad... :victory:

Added an awesome splashscreen! As those who have used this program before should know - the program takes a while to load. The splashscreen is visible during this load, so you know the program is actually starting.

The wifi-field has been redesigned. It now saves your IP adresses so you dont have to retype them every time.

Added an "X" button next to the wifi-field. This button clears the wifi-cache and removes all entries in the list.

Added my name with a link to this thread, Ive seen my program hosted at a few sites with no credit whatsoever. I dont mind anyone hosting it elsewhere, in fact Im happy it gets spread, but PLEASE at least give me credit for it.

Slight redesign

Added tooltips to both the main application and the Filebrowser

Filebrowser:

Renamed "ADB Filebrowser" to "ADB Explorer". It can do so much more than just view the files on the device, so this name is more fitting. I should think of a new name for the entire application as well... "Quick ADB Pusher" isnt even half the truth anymore :P

Added cache feature! Everytime you enter a directory youve already been in, the cache kicks in rather than asking the device for the content. Each device has its own cache (note: a wifi-connected device will have its own cache based on the IP, so if you connect to the same device using cable or another IP, the cache needs to be rebuilt).

The cache will update as follows:

When entering a new directory not currently present in the cache.

When you hit the refresh button.

When you rename a file/folder.

When you create a new folder.

When you paste a file/folder from the clipboard.

When you delete a file/folder.

When you transfer a file/folder to the device.

The cache will NOT update when you send a file from the device to your PC

The cache will get deleted upon application exit.

You can now cancel the contentlisting and go back by hitting "../", Backspace shortcut-key or the Back button. Added because some directories takes ages to load on various devices, and its not so fun rolling your thumbs when all you want to do is go back to the previous dir :p

Added "drag-drop" to the filebrowser - you can now dragdrop files and folders directly to the browser to send it(or install, if .apk) to your device. The cache will refresh upon completion. You can also drop files and folders FROM the browser to your PC!*

* this might not sound so special, but it was a ***** to implement. Dragging stuff to the browser - ~50 lines of code. Dragging stuff FROM the browser - a little over 200 lines of code... C# sure has its limitations...

Added "Grab" to the right-click menu. This will send the selected file/folder from your device to your PC.

In short, the filebrowser can do what the main application can, so you dont have to close the browser to send/recieve a file/folder. A loading thingy will appear over the browser while a filetransfer is in progress.

Added "Properties" to the right-click menu. This shows some info such as the size of the file, and even the total size of a folder (incl. sub dirs). If you select a folder with a lot of content/folders, it might take a while to calculate the size. Other things it show is where its mounted and what permissions the file/folder has. NOTE: Requires Busybox, and root for files and folders only accessible by root (duh!)

Added 3 warnings upon opening the browser: One to inform you if your device isnt rooted, one to warn you busybox is missing and one to warn you if your device is rooted, but ADB was unable to acquire it. None of these warnings will show if adb acquires root and busybox is present.

Added a textarea showing the used space on the device, based on the mounted partition (such as /data, /sdcard, etc). So dont be scared if the number jumps around while youre browsing - it just means youve entered a different partition. Click to switch between used and free space. Requires Busybox

The browser now remembers your last location and will not start from "/" everytime you open it. Memory is lost upon main program exit and when you select a different device.

Added "View file" (prev. unfunctional "Open" menu item) to the right-click menu. This allows you to view smaller files (up to 10MB) without permanentally save them on your PC. I have blocked larger files because the time it takes to transfer those files isnt worth it for just "a quick look". My devices transfers a 10MB files between 2 and 5 seconds(depending on device) - which I think is ok, so I set the limit there.

Tweaked and tuned to make the browser act somewhat normal for devices without root/busybox. Devices without root/busybox will miss out on quite a lot though ;) And before anyone asks - No, I do not plan on making this program able to root your devices. There are plenty of tools for that already.

Fixed the shortcutkeys that only worked when they wanted to. In addition, several more shortcuts have been added.

List of currently supported shortcuts:

ctrl+x: Cut file/folder

ctrl+c: Copy file/folder

ctrl+v: Paste file/folder

ctrl+s: Grab the selected file/folder

shift+delete: Delete the seleceted file/folder

shift+n: Create a new folder

F1: View file

F2: Rename file/folder

You can also use the arrowkeys to navigate, similar as in explorer. cut/copy/paste only works within the ADB Explorer.

Added Forward and Back buttons. Works the same way ordinary back/forward buttons do. Also changed icon for Refresh

Added a Toolbar, containing more buttons such as "view file", "download", "upload", "delete"...

Added 2 eastereggs ;) , one is easy to find. The other is well hidden, and actually serves a purpose :) Well actually, the latter isnt really an easteregg, but it should be hard enough for you mortals to find :p

Known issues:

You friends might rage and throw their IPhones at you when they see this :cool:

------

HTC Sync REALLY doesnt like ADB, so close that crap before starting this app, or better yet - uninstall it!

It seems HTC Sync is trying to start its own adb server, and is very persistant in doing so.

This results in Quick ADB Pusher and HTC Sync having a fight for their life on who is going to start the server. :eek:

------

If you install an .apk, then try to send something else, the program will try to install that as well. This is because I was retarded and forgot to add one check.

Solution: Close the filebrowser, untick "install apk". Will be fixed in the next version, I promise! :angel:

Version History:

v0.4.1 - 6570 views on the attachement alone. Not bad...

Fixed filebrowser not working on some devices, I hope. Please test this for me as the browser has always worked fine for me on all my devices.

Changed apk install method to use AndroidLib's method. It now tells you if the installation was successful or not.

... Some minor things I cant remember.

Note, the "Open" option in the filebrowser is just a placeholder for now, its not a bug that it doesnt work, it isnt ment to work.

v0.4

Fixed bug where files and folders containing "_(" threw a syntax error.

Added file browser for device (see Seperate notes).

Added wireless ADB support.

Added Pull-file mode.

Re-designed the UI.

Moved the info-view to 3rd tab. Im moving away from it more and more.

A lot of the text and button-text will now change depending on your current choices. Ex. the Send-button now switches between Send, Pull and Install.

A truckload of code rewriting and optimizations.

Added an additional check for Root remounting, which should fix rare cases where remounting fails (If your device cant be remounted as root, please report it along with your device, rom etc)

Added "Install APK" You can now install APKs directly through the program.

Added reboot options in the Advanced tab

Added device info in the Advanced tab (The temp seems to be reported in C * 10, so I report it as C / 10, let me know if it doesnt look right for your device, and dont forget to tell me what device/rom you're using)

Filebrowser Features:

Browse and select files.

Context menu (right-click menu).

Copy or move(cut) files/folders within the device.

rename files/folders on the device.

delete files/folders on the device. Warning: Deleting the wrong files might brick your device! Double-check that you really want to delete the file before doing so!

create new folders on the device.

icons for certain formats (more to be added).

progressbar for directory loading progress.

'clipboard' icon to remind you what you currently have selected for copy/cut.

Notes:

The filebrowser is in its early stage. I have bugtested it as much as I can and it works flawless with my 3 devices.

The speed of listing directoiess/files greatly differs with device. My TF101 lists the contents about twice as fast as my ZTE Blade, theres not all that much I can do about it, as I dont have the time right now.

When pasting a file in a location where a file with the same name already exists, the program will currently simply overwrite the file. I havnt had time to add a check for it yet (ETA: Next version).

---To be added:

Direct interacting/editing of files, such as text files etc.

cache-feature, to reduce the frequency of grabbing the dir. contents from the device (which will help speed up changing paths).

A "file exists" check when pasting, allowing you to chose to overwrite or rename the old file.

v0.3

Fixed program freeze when no device was connected.

Added device selection, so it should work with multiple devices connected. please test this for me :)

Rewrote most of the program to make use of AndroidLib.dll

Removed the console(debug) tab, as it served little to no use now

Added an 'Advanced' tab for future use

Cleaned up a lot of garbage code

Fixed system not mounting as R/W

Other minor changes and fixes

v0.2

First public release

v0.1

very first version I wrote, which was buggy and often froze and god knows all...

Trust me, it was terrible. It worked and did what it set out to do but... It was terrible...

The latest Version has been tested and bugfixed on the following devices:

ZTE Blade with Swedish Spring 5, connected through USB Cable

ASUS Transformer TF101 with Team EOS Nightly build 28, connected through WIFI

HTC One S with stock 4.0.3, no root, no busybox. USB Cable

HTC One S with stock 4.0.4, root, no busybox. USB Cable

HTC One S with stock 4.0.4, root, busybox. USB Cable.

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

Suggestions for improvements, feedback etc are more than welcome :cool:

Thanks to:

regaw_leinad - for writing the very handy AndroidLib found here :)

Dont forget to hit 'thanks' if you like my application. Every thanks I get brings a smile to my face :cool:

Download:

If the attachment doesnt work, try this mirror (select version and hit ctrl+s, or file -> download)