Android Reverse Engineering & Hacking: Share your development environment - General Questions and Answers

Hi All,
I have some experience when it comes to PC reverse engineering, and I'm interested in getting into Android RE.
If you've already been in the trenches and reverse engineered Android system components and 3rd party APKs then share what your setup looks like, which programs you use, what pitfalls to avoid, etc.
My setup is so far a mess since I'm trying out different tools.
I do have one specific question as well. In Android development options you can selecta debug app and make the system wait for this debugger. This feels an extremely powerful ability for RE, but after searchingI could not find out how to use this. I assume it's 2 parts, one is an apk i push to the system and select in dev opts, and the second part is a debugger i run from my PC. I've attached a picture of the Android screen.
1) Experienced Android RE hackers please share your development environment and toolkit, including any specialized scripts or tools you made yourself.
2) Point me to some information on how to use Android devopts debugging.
I feel like this belongs in the dev forum, but the rules clearly state i should post here.
note: i attached the image but xda seems to have trouble loading it

Related

Where to start?

I have experience with a lot of embedded devices and software and am interested in getting involved with Android modding. I'm just looking for some good documentation (if it exists) on the basics or even more advanced details. Are there any good resources that go over the architecture of Android and what have you?
I apologize if this is a repost or a common question, but I tried searching but couldn't find anything similar.
+1
Too short. Huh. Well, me too.
Well looks like I'm just going to have to dive head first into the source code lol.
I've only just begun looking at android app development myself, but I can recommend looking at the android notepad tutorial (should be among the first hits on google). Ti's a very basic tutorial but at least it introduces you to some android concepts.
Other than that, there are a few books around that you could take a look at, and ofc the all-mighty internet has virtually endless resources.
Happy coding!
It's best to have a good working knowledge of the Linux operating system / command line as well as a good understanding of Java.
Start with http://developer.android.com or www.helloandroid.com to familiarize yourself with Android's structure.
From there, check out http://source.android.com to get more into the source code and Android framework.
Google gives you pretty much everything you need.
chrisinaz said:
It's best to have a good working knowledge of the Linux operating system / command line as well as a good understanding of Java.
Start with http://developer.android.com or www.helloandroid.com to familiarize yourself with Android's structure.
From there, check out http://source.android.com to get more into the source code and Android framework.
Google gives you pretty much everything you need.
Click to expand...
Click to collapse
Thanks! This is exactly the type of information I was looking for.
Hello fellow Newbie! (this is my first ever post on xda!)
If you go to hackaday website there is a four-part tutorial. Sorry I could not post links:
"To prevent spam to the forums, new users are not permitted to post outside links in their messages. All new user accounts will be verified by moderators before this restriction is removed."
Hope you enjoy these (if you find them), and find them useful! Also, keep an eye out for part 5!
Regards,
Zelka
Zelka said:
Hello fellow Newbie! (this is my first ever post on xda!)
If you go to hackaday website there is a four-part tutorial. Sorry I could not post links:
"To prevent spam to the forums, new users are not permitted to post outside links in their messages. All new user accounts will be verified by moderators before this restriction is removed."
Hope you enjoy these (if you find them), and find them useful! Also, keep an eye out for part 5!
Regards,
Zelka
Click to expand...
Click to collapse
For the convenience of others:
Part 1
Part 2
Part 3
Part 4
+1.
I am a software/web developer and I have the Android SDK, Eclipse, Visual Studio 2008 and a number of other tools on my dev box. I love coding in C# but I can do Java and some other stuff too. I just got Eclipse (Helios) setup with the ADT plugin and I am messing around with the emulator. So this is basically what it used for testing/debugging etc. or is there something better? I have my first little app up and running in the VAD emulator. I found out that you need Eclipse 3.5 (not 3.6) and the JRE 1.6 for everything to be happy. Now where to go from here....
frankencat said:
+1.
I am a software/web developer and I have the Android SDK, Eclipse, Visual Studio 2008 and a number of other tools on my dev box. I love coding in C# but I can do Java and some other stuff too. I just got Eclipse (Helios) setup with the ADT plugin and I am messing around with the emulator. So this is basically what it used for testing/debugging etc. or is there something better? I have my first little app up and running in the VAD emulator. I found out that you need Eclipse 3.5 (not 3.6) and the JRE 1.6 for everything to be happy. Now where to go from here....
Click to expand...
Click to collapse
You can either use the Emulator or a physical device for debugging (granted the device has usb debugging enabled). I would just look over samples and try to make more complicated application from here, it seems like you have all the prep work done.
Ok here's a good one...when I use the keyboard in the emulator I get Japanese characters instead of English even though I have all the settings I can think of set to US English. Anyone know how to change that?

[Q] Difficulty level of this Android Program, launched in Galaxy Tab

Hi everyone,
This is my first post in this forum.
I am an ASP.NET developer, normally using Visual Studio and C# for development.
I am trying to develop an Android program, for the first time and spending time for researching from scratch.
I know that the developing language is JAVA, and Eclipse is the tool to develop.
What I am trying to develop is an Android program, used in Galaxy Tab.
The program should open a camera, and the user could take a picture and store it on the harddrive. Also this program should have some buttons, and when clicked the user could see different videos stored in the disk. Opening the camera, clicking the buttons should be touch screen.
Does this program seems to be hard to develop? Any advice is welcome
Thanks in advance!
I suggest starting here http://hackaday.com/2010/07/12/android-development-101-–-a-tutorial-series/ They cover basic concepts as well as some more advanced ones. It'll give you a good way to ease into JAVA and since you already do programming you'll probably be able to skip some of the more obvious steps. As for your specific app it shouldn't be that difficult to develop, I personally only did very little JAVA programming but there are code sources all over and if you need something specific to a device just ask in the appropriate forum.

Basic Android SDK Tutorial For Beginners (Windows) - 02/24/2011

Setting Up Android SDK for Windows Platforms
If anything doesn't work, or you don't follow directions based on this guide, I will not be held responsible for any outcomes. You are choosing to do this 100% on your own, I am only providing the information to get started. At this point, you are taking your actions into your own hands and are warned about your decisions.
The purpose of this is to familiarize you with setting up Android SDK for Windows. After reading through this tutorial, hopefully you will be able to feel a little more comfortable with setting it up and using it. I will tell you how to set it up, and after that, if you are a little more comfortable you can place the folders wherever you like for a little more convenience for yourself, but as for this tutorial, I am going to have a set destination for everything. So let's begin.
Index:
Download Links.......................................................................................................................................Part I
What Is Android SDK?.............................................. ................................................................................Part II
Setting Up Android SDK............................................... ............................................................................Part III
Basic Command Examples.......................................... .............................................................................Part IV
Summary of Android SDK............................................... ..........................................................................Part V
Part I: Anroid SDK Download Links.
In order for you to get Android SDK set up and running properly, you must first make sure you have the right files. Below this short description, I have included the download links. This tutorial will show you how to setup Android SDK for the Windows platform. I'm going to be completely honest and say that it's the only platform I know how to set it up for, as it's the only platform I have used personally for Android SDK. You can search online for setting up the SDK with other platforms.
Links:
Android SDK Windows Installer.exe
Android SDK Mac OS X (intel) .zip
Android SDK Linux (i386) .tgz
Part II: What is Android SDK?
Android SDK is a very useful tool that allows developers and users alike to take more control of their devices. Was there ever a time, where you wanted to add/remove something from your phone, but it just wouldn't let you?. Have you ever needed to test something that wasn't working, and you needed to find out why? Ever encountered the most famous of lines "Permission Denied"? All of those questions have been asked by many, and with this tutorial, I'm hoping to at least answer some of the many questions surrounding Developing on an Android device. There are many uses for Android SDK, which I hope to cover in this instructional "blog" without boring you guys to death lol. Without getting to indepth at this point as to what SDK does, let's just go over a FEW benefits of using SDK.
1. Debugging. SDK helps you in so many ways, one of the most beneficial being debugging. If you're developing an app for your device, and you are running into constant force closes, then you can fire up SDK and try to find out why.
2. Testing. If you don't feel quite comfortable with testing certain things on your own device, Android SDK also allows you to use an emulator on your computer with real life interactions to show you exactly what would happen if you added/removed something from your device.
3. Rooting. Most of the Rooting techniques we have for the Epic consists of One Click methods brought to you by smart Dev's that like to make things easier for you. Before that, we had to manually push the files to the phone, and put them in the correct places. Sometimes, people don't get so lucky with the One Click method and must revert back to the "Prehistoric Method" lol.
4. Installing Apks. If you have an app that you want to put on your device, but don't have the convenience of adding it with an application manager of some sort, then you can always use the SDK to do so.
5. Adding/Removing Files. A lot of times, certain files managers don't show you everything you need to see in order to do particular things you want to do. With Android SDK, as long as you know the directory, you can move the files. Some times, you may need to set permissions before hand, but that is also capable with SDK.
There are MANY more options for the Android SDK, but I want to keep it short and sweet and not bore you guys too much lol.
Part III: Setting Up Android SDK.
THIS METHOD IS ONLY FOR WINDOWS USERS!
Ok, you've downloaded the correct package for windows, and you're ready to set up Android SDK on your computer. What now?
The windows installer.exe SHOULD check for Java on inital install and install it if you don't have it on your system already. The following statement is basically just for users who have problems after install should it not install Java for your system. If you do not have Java on your computer, you will need to download it at this point. Click here on JDK to download the Java Development Kit. This kit will allow you to run Android SDK through its various Java options.
THIS STEP IS OPTIONAL, YOU DO NOT NEED TO DO THIS FOR SDK TO FUNCTION PROPERLY!
Optionally, if you are planning on developing through Eclipse, then you will also need to install any plugins for it that require Android SDK to operate with Eclipse. The plugin is called the Android Development Tools or ADT Plugin. If you are new to Eclipse, but would like to start learning to develop applications and more, and don't have it on your machine yet, you can download it from here. You MUST make sure that the version of Eclipse that you are installing is suitable for Android. Eclipse recommends versoin 3.4 or higher, and I personally use Eclipse: Galileo, which can be found here.
Now that you have downloaded and installed the Java requirement and Eclipse (only if you chose it, it is NOT required), it's time to actually setup the Android SDK on your computer. When installing SDK to your system, it will allow you to set the path to where it is being installed. Personally, to have the most ease when using it, I chose to place it directly on the C: Drive. Make a note of the directory when installing should you want to use the ADT plugin for Eclipse later on. Just click on the installer.exe that you downloaded for Android SDK, and follow the on screen prompts to get it installed.
OPTIONAL ECLIPSE INSTALL, PLUGIN DIRECTIONS
If you choose to install Eclipse, here are a few steps to get the Anroid Development Tools (ADT) Plugin setup for doing so. Android Development Tools (ADT), is designed to give you a powerful, integrated environment in which to build Android applications. It extends the capabilites of Eclipse to let you quickly set up new Android projects, create an application UI, debug your applications using the Android SDK tools, and even export signed (or unsigned) APKs in order to distribute your application. In general, developing in Eclipse with ADT is a highly recommended approach and is the fastest way to get started with Android.
If you'd like to use ADT for developing Android applications, install it now. Read Installing the ADT Plugin for step-by-step installation instructions.
At the end of the Android SDK install, you are given the option to “Start SDK Manager (to download system images, etc.), go ahead and allow SDK to start. You are presented with a list of packages that will be installed. The list is rather long and contains packages for developing on all versions of Android going back to Android 1.5. If you would like to install all of these packages, go ahead, but they are not necessary for ADB. If you only plan on using ADB, click “Cancel”. Keep in mind, you can always add packages if you decide you would like to develop.Once you hit cancel, you are now in the Android SDK and AVD Manager. In the left pane select “Available Packages” and in the right pane expand “Android Repository” by clicking the “>” next to it. The only package we need for ADB is “Android SDK Platform-tools”. Put a check in the box for that package and select “Install Selected” and in the next window click “Install”. You are prompted to restart ADB, go ahead and click “Yes”. Now, you can close all windows.
One last thing we need to do is to add ADB to our PATH so that ADB will run from any command prompt. To do this Go to Start-->Control Panel-->System and select Advanced System Settings in Windows 7 or Advanced Tab in XP. Click Environment variables. Under the “System Variables” section, find PATH and double click. In the Variable Value box, at the end put C:\Program Files\Android\android-sdk-windows\platform-tools seperating the previous entry with a semi colon. For x64 you would use C:\Program Files(x86)\Android\android-sdk-windows\platform-tools.
Now we just gotta check to make sure that it was all installed correctly. To test if we have been successful, plug your phone into your PC, allow the drivers to see your phone, and then open a command prompt. At the command prompt type adb devices . You should see ADB return with your device number.
Part IV: Some Basic SDK Commands.
There are plenty of commands that you can use through SDK, but I will give you a couple to help you with what you need to do. Before you can use any of the commands, you will first need open Windows command prompt to CD to the directory to which you installed your SDK. As I said before, I installed mine to my C: Drive directly, so for me to CD to that directory, the command looks like this.
cd C:/SDK/Tools
To make it even easier, you can hold "Shift" and right click on the "Tools" folder of your SDK and it should bring up a menu in which you can choose "Open Command Prompt". It will then be directly CD'd to that directory without you having to do any thinking .
Now that you are CD'd to the SDK/Tools Directory, you can start performing actions. You MUST! have the drivers for the Samsung Epic 4G installed to do this. If you do not already have the drivers installed (which you should if you have your phone rooted, allowing SDK to work) then you can download them from here provided by noobnl of XDA-DEVELOPERS. If you already have the drivers, then simply skip that step, and head right to the next, which is allowing debugging on your phone. To perform this simple task, on your phone, navigate to Menu>Settings>Applications>Development and select USB Debugging. Now plug your phone in, because it's time to get started. Here are a few basic commands to help you on your way.
1. adb shell - The adb shell command allows you to control your phone as root from your command prompt terminal. When you type "adb shell", you will then be prompted on your phone from Superuser to either allow or deny access. Should you click deny, you will have to restart your phone, reconnect your phone to your computer via USB cable, and start again, so MAKE SURE you click allow. Once you click allow on your phone, your command prompt will return with the pound symbol (#). If it does, you are now controlling your phone as a root user from your computer. You can do a lot of things from this point here which I will cover in another tutorial later, for now, we will just stick to the basics.
2. adb push - The adb push command allows you to transfer files from your computer to your phone without having to mount your sdcard to your phone, copy the file to your phone, then disconnect, and have to use a file manager to manually put the file where you want it. In order to push ANY files to your phone, you MUST have the file in your SDK/Tools folder already. Here is an example of a file you can push to your phone. We will use adding the AOSP Lockscreen to your device as our example.
**First, you will need to download the AOSP Lockscreen.zip from XDA. It will come with a flashable folder, but this method I am about to show you will be for the folks that don't really feel like booting into clockwork and would rather use the access of their computer.
**Second, decompile the AOSP Lockscree.zip and place the android.policy.jar file inside your SDK/Tools folder. Once inside your SDK/Tools folder, it's time to move to the next step.
**Third, with the file from the AOSP Lockscreen in your SDK/Tools folder, it's time to type the command to get it to move from your computer to your phone. Type the following command to do so:
adb push android.policy.jar /system/framework/android.policy.jar
**Finally, with the file pushed to your phone now from your computer, you can safely reboot your phone to enable the changes. To reboot your phone the easiest way, simply type adb reboot. When your phone boots up again, the changes should be made and you should now be enjoying your new AOSP Lockscreen.
3. adb pull - The adb pull command can be used to pull various items from your phone. A simple example of this command would be: adb pull /system/framework/framework-res.apk /Desktop/Android/. You can pull just about anything from your phone, but when I say just about, i mean exactly that. Just about anything. There are certain things you will NOT be able to pull, such as items that are packed inside compressed files (I.E. anything inside a Kernel).
4. ddms - The ddms command allows you to debug your phone in one of the many ways. You can also use the ddms command to take screenshots of your phone should you want to show it off .
5. adb reboot/adb reboot recovery/adb reboot download - These commands are pretty self explanitory. Without having to use the 3 finger death grip, you can use these commands to reboot your phone to your preference whether it be a simple reboot, rebooting to recovery, or rebooting to download mode.
NOTE: If you are using Clockworkmod 3.0.0.5/6 ported by Dameon87, you will need to check to make sure the redirector is working. If the redirector is not baked in, then you MUST use the 3 finger death grip to boot into recovery otherwise it will boot you to the wrong recovery. Clockworkmod 3.0.0.5/6 supports Edify scripting, while Clockworkmod 2.5.5 uses Amend scripting. If you try to use an Amend script in Clockwork 3.0.0.5/6, which only supports Edify Scripting, it will return you with an error saying that it does not support it any longer. This is why it is important to find out if the redirector is baked in or not.
Part V: Summary of Android SDK
Well to bring it all to an end, I would first like to say thanks for taking the time to read this and I sincerely hope this helps you guys with setting up Android SDK for the first time. Just to recap, we went over Downloading the Android SDK, finding a little out about SDK, Setting up Android SDK (as well as installing Java if needed, and Eclipse if you chose to), and some Basic Commands of Android SDK to get you started. I will be writing up an Eclipse tutorial and a more advanced Android SDK tutorial a little later with more commands and help to get you developing in no time. Thanks again for taking the time to read this, and if I have helped you in any way, please, hit the thanks button .
If you have any questions, feel free to either write me a message here on XDA, or joining me in the Team Viper chat. You can access the chat by clicking here and following these simple instructions.
***When the page pops up, first you will need to enter your nickname. Please choose your nickname from XDA so I may better be able to help you.
***Next you will have to choose your channel. Click the dropdown box and choose "other". When the box pops up prompting you to enter the channel, enter #viper as your channel.
***Finally click on the join button and you should be brought right to Team Viper's chat.
Thank you to all the members of Team Viper who helped me throw this together and other members of XDA who have provided either information, downloads, or just a helping hand with the making of this tutorial. Also thanks to Team Whiskey for further easing the transition to using ADB.
Huge thanks for the tutorial. I only wish this was posted this past weekend. I spent about 3 hours on Monday installing SDK and reading fragmented stuff online about how to use it. It was a good learning experience, but I would have spent far less time if I saw this. Thanks again
MAN this is awesome. now my biggest problem will be trying not to spend time reading and learning while at work...BIG THANKS!!!
BT keep up the GREAT work, in behalf of us all!
BT is the King of the Epic Forums..thank you so much for all your hard work and dedication ....Cant wait to see the next installment of ViperRom
If I may add, if you want a full list of the commands while in adb, just type 'adb' and hit enter. It will display a ton of commands that you can use in abd, including the push, pull, reboot, etc. commands.
There are probably more commands that just aren't listed using that command, but I found it very useful as I was perusing.
Thanks for the heads up, I totally spaced on that... ill add it to the OP.
I'm sure this is all great information to have here, but wouldn't a simple link back to Google's Android development pages been easier - it's pretty much the exact same information and even has images and video links.
WolfKaBaL said:
I'm sure this is all great information to have here, but wouldn't a simple link back to Google's Android development pages been easier - it's pretty much the exact same information and even has images and video links.
Click to expand...
Click to collapse
Never fails... I do something here to make it easier than linking to another site and there's always that one guy who just can't be happy for whatever reason... my apologies for doing this... please, let me know who it killed from my efforts to make it easier on you and ill send my respects. I didn't know it was going to kill someone.
Exactly
BT ignore them type cats man we all know you and team viper among others do great work here i can honestly say without you guys,dameon,mammon88 i wouldnt be contributing my own rom you guys offer and willingly give help FREE help at that lol so ignore them man its always one negative person law of nature we need balance even in XDA lol
computerkid23 said:
BT ignore them type cats man we all know you and team viper among others do great work here i can honestly say without you guys,dameon,mammon88 i wouldnt be contributing my own rom you guys offer and willingly give help FREE help at that lol so ignore them man its always one negative person law of nature we need balance even in XDA lol
Click to expand...
Click to collapse
Lol I just feel like every time I say something on here, Michael Jordan creeps up behind me and sings in my ear "Anything you can do, I can do better.... I can do anything better than you"
I'm not trying to disrespect your efforts, and I do respect all the work you do on the roms and tools. But when it comes to stuff like this, I simply feel it's best left to the creators - eg: Google. Their repository of information is going to remain up-to-date and correct 99.9% of the time. Anything you post here will have to be continually updated as things change. Essentially you're fragmenting the information. That's the point of a central repository - to keep all the information together and current.
Also as far as the "making it easy" - and again, I mean no offence, but it is a lot easier to sort through and read the original documentation on Google's site simply because of formatting. [This is 100% a personal opinion though.]
In general though, if given the option to have to either link here to this post, or link back to Google and their posts, I'm pretty sure the better option is to link to the original content.
As for all the people dying and what-not.. not sure where you're getting at there, a little over-dramatic maybe? - All I'm doing is letting people know the content has been replicated - had you started off the post with a link to Google's documentation, and then continued with saying "to sum it all up, here's a quick reference" then everything is fine.
I'm not trying to troll or anything, but to a certain degree flooding the forums with redundant information becomes a waste of space, time, and effort (for the creator and the readers) - especially in the developer's section, as I think knowing of and how to use the SDK should be prerequisite for participation.
Personally I disagree. Having been to googled sdk page, this seems more comforting and real world. Maybe its because, psychologically I feel I can get his help if I get stuck. I'm hearing first hand that he has done it. Same with the rest of the info in this forum. Knowing if you repeat these steps you will see these results. After all, theres nothing new here, just building off other peoples concepts/skills/code/designs/etc.
even if its just for me, the only idiot who needed help, I hope BT is glad he posted. Thanks man! Keep it up.
Sent from my SPH-D700 using XDA App
I personaly am glad BT posted this here, I always find his instructions clear and concise, and I don't see how it's in anyone's way, you don't have to click on it. hopefully the remainder of this thread will deal with questions and issues regarding the matter at hand, the Android SDK I myself have it installed but probably not fully set up.... and this thread will help. thanks BT!
WolfKaBaL said:
I'm not trying to disrespect your efforts, and I do respect all the work you do on the roms and tools. But when it comes to stuff like this, I simply feel it's best left to the creators - eg: Google. Their repository of information is going to remain up-to-date and correct 99.9% of the time. Anything you post here will have to be continually updated as things change. Essentially you're fragmenting the information. That's the point of a central repository - to keep all the information together and current.
Also as far as the "making it easy" - and again, I mean no offence, but it is a lot easier to sort through and read the original documentation on Google's site simply because of formatting. [This is 100% a personal opinion though.]
In general though, if given the option to have to either link here to this post, or link back to Google and their posts, I'm pretty sure the better option is to link to the original content.
As for all the people dying and what-not.. not sure where you're getting at there, a little over-dramatic maybe? - All I'm doing is letting people know the content has been replicated - had you started off the post with a link to Google's documentation, and then continued with saying "to sum it all up, here's a quick reference" then everything is fine.
I'm not trying to troll or anything, but to a certain degree flooding the forums with redundant information becomes a waste of space, time, and effort (for the creator and the readers) - especially in the developer's section, as I think knowing of and how to use the SDK should be prerequisite for participation.
Click to expand...
Click to collapse
You're entire post is a matter of opinion ...what you find easier others may not ....that's like saying that if you had to choose between chicken or a hamburger for dinner, you'd go with hamburger so everyone should... Some people may just like chicken. But thanks for your OPINION.
BThomas22x said:
Never fails... I do something here to make it easier than linking to another site and there's always that one guy who just can't be happy for whatever reason... my apologies for doing this... please, let me know who it killed from my efforts to make it easier on you and ill send my respects. I didn't know it was going to kill someone.
Click to expand...
Click to collapse
his mommy didnt hug him enough
and thanks bt navigating said link was kinda of confusingly setup. much simpler and straight forward
Thanks for posting this here. I dl the sdk kit a few months ago and it was a bit confusing. The site gave me information overload and I just gave up. Now I think I will try it again (being a nurse I am no stranger to technology) as I would like to develop some apps for critical care nurses.
Edit: Subscribed
Sent from Bonsai v 5.0.3
Nice Job
Thanks for posting this guide it will help many people along the adb path.
WolfKaBaL said:
I'm not trying to disrespect your efforts, and I do respect all the work you do on the roms and tools. But when it comes to stuff like this, I simply feel it's best left to the creators
Click to expand...
Click to collapse
your opinion matters not. What's best for THIS community is that this dev (and a damn good one at that) has put together a concise and easy to follow guide. He's also here to answer questions and help those that don't quite know how to use the SDK... can u get that over on google's site ?
right.
dorkboy said:
- eg: Google. Their repository of information is going to remain up-to-date and correct 99.9% of the time. Anything you post here will have to be continually updated as things change. Essentially you're fragmenting the information. That's the point of a central repository - to keep all the information together and current.
Click to expand...
Click to collapse
pretty sure BThomas won't mind updating as necessary, and if not, anyone that gets through this guide can go find the updated information on their own.. so, the problem is ........ ??
right..
Also as far as the "making it easy" - and again, I mean no offence, but it is a lot easier to sort through and read the original documentation on Google's site simply because of formatting. [This is 100% a personal opinion though.]
Click to expand...
Click to collapse
u find sorting through information and digging for reference easier.. others find a step by step guide to be easier to navigate.. personally, a GPS navigation works similarly to a 'step by step' guide.. so this portion is trolling.
douchenozzle said:
In general though, if given the option to have to either link here to this post, or link back to Google and their posts, I'm pretty sure the better option is to link to the original content.
Click to expand...
Click to collapse
and you're the expert, right ??
platypus said:
As for all the people dying and what-not.. not sure where you're getting at there, a little over-dramatic maybe? - All I'm doing is letting people know the content has been replicated - had you started off the post with a link to Google's documentation, and then continued with saying "to sum it all up, here's a quick reference" then everything is fine.
Click to expand...
Click to collapse
I wasn't aware that BThomas needed your approval for posts, thanks for pointing that out
troller said:
I'm not trying to troll or anything, but to a certain degree flooding the forums with redundant information becomes a waste of space, time, and effort (for the creator and the readers) - especially in the developer's section, as I think knowing of and how to use the SDK should be prerequisite for participation.
Click to expand...
Click to collapse
if you feel SDK should be a pre-requisite for participation, then how would developers get started ?? There's a dev in each of us.. the problem is that most of us don't have a good starting point because often times it's overwhelming the way google has collected the info.
This guide is an AWESOME way for someone to begin as a dev and I thank BThomas a ton for the effort putting it together.
Sorry for the 'bashing' in my post, but this guy pissed me off.
[/pissed_off]
People don't come here just to be linked to other sites. The central repository for us, is HERE. Although reading the manual should be included, I'd much rather have real world knowledge from someone who knows what they're doing.
My opinion, of course
Sent from my SPH-D700 using XDA App

Looking for the source

A couple of weeks ago I bought myself my first android device (a cheap LG GT540), and since then I've been playing a lot with it.
Noticed that android hackers community is quite big and there are lots of tools which can do kind of anything, but sadly I'm kind of disappointed because I'm having some issues in understanding HOW things work: in order to root my device, install custom ROMs, resize partitions and so on, I had to use a few tools that I have no idea of what they're doing.
To me it looks like that in this forums it's much easier to find a GUI that does everything you need, rather than understanding what needs to be done and how to do it. IMHO this is bad for a community of hackers.
In particular I'd like to understand how the following tools work (both for personal knowledge, and because some of these only work on windows, and I'd like to port it on Linux), and if available, I'd love to put my hands on their source code:
SwiftBootloaderBuilder: it's a tool used to resize flash partitions. I'm prone to think that it might just be a frontend for fastboot, but hum, the fastboot binary I own seems to be missing the capability of handling partitions...
KDZ: it's a tool to upgrade the firmware which I had to use in order to install on my device a custom ROM with fastboot enabled. How the heck does it work? This tool forced me to find and use a windows system to hack my GT540...
Android Developers is a great place to get started understanding how Android works. There you will find much of what you need to know to get a BASIC understanding of Android. If you follow the guides and advice you can create a basic apk that does little except teach you. CyanogenMod wiki is also a great place to learn. One thing about Android is that is is very much like Linux built for specific hardware. Many, and I do mean many, of the same principles apply to both systems. Digital signatures, ownership privileges, file permissions, compiling from source, git, gerrit, google code etc, are all things that a developer runs into everyday working with open source software of any kind. Go to every place I mentioned, sign up, and start asking more questions. Learn C++ and JAVA. Join freenode irc and find some friends who will answer questions while you learn. XDA is the least resource for the development community. XDA is the expression of ALL the other resources. I am new to this also, and have done what I suggest, except the programming languages, which I am working on. Use root explorer to look at your device file system. Ask the developers of the tools you mentioned to help you understand them. A LOT goes on behind the scenes, but it takes a little direction and determination. Cheers!

How should I start? Android dev.

First, I know there are some other topics out there asking the same exact thing, but I think my situation is kinda different.
So, want to learn how to develop for Android. Building custom ROMs, Android apps, tweaks, etc. But my actual knowledge is only user lever. I only know what a android user should know (flash ROMs, root, etc). Zero dev knowledge. Nothing.
I want to know with what should I start to learn to do Android dev. Nothing like: 1 hour and you're the best dev out there. I know it takes time. But I want to focus on Android.
So, what do you have to say?
In very general terms it would be to pick one of your favorite roms for your phone, pull it apart and then put it back together until you understand what is going on.
In more "specific" (though this is frankly scratching the surface) terms, you would first spend hours finding out how to back up your phone including the AAA key, the meid and so forth as well as other software compatible with your phone to restore it. As frankly since you're likely using your phone to test, you'll have more than one occasion it will be soft bricked.
Thereafter you would learn more in regards to development tools, in specific over at developer.android.com. Read the dev guide and so on.
Third, decide how you want to implement a unix/linux test environment, unless you're already on linux.
And forth you'd look at your favorite rom developer's build from their development site (the name of the domain escapes me) pull it apart and try to analyze the details.
Last but not least you'd FOLLOW new developments with android and the phone as well as learn to adjust to any new firmware that comes out from the manufacturer.
I'm in the process of learning how to develop myself but I've already discovered a lot more with the phone's underlying structure. That said, a lot of the answers are found in bits and pieces on this forum. But when you start to learn and ask specific questions like "what partition is the system mounted on for a Samsung Galaxy Ace" you'll begin to understand the file structure and then underlying software involved.
This was very helpful. I'm glad to see there are helpful people here that aren't going to talk down to a "new user" and I was also wondering how I could view files on windows 7. For example the structure of apk files or any of the others that say no program found to open this file
For example I want to begin by changing the boot screen from the solar flare looking Android boot screen to scrolling tiles or something of the sort then back can some explain that and I'm sure I can gain quite an understanding on the process that way
Sent from my SGH-I777 using xda premium
If you want to do programming you should start with the Android SDK: http://developer.android.com/sdk/index.html
An apk file is actually a zip file.
If you want to get an idea of all the stuff that is in there, just rename it to .zip and open with your favorite utility.
The contents of this archive file are also in binary form and compressed.
To get down to the lowest level you need to use something like apktool: http://code.google.com/p/android-apktool/
Much obliged I'll do that. Any Intel on boot.img
Sent from my SGH-I777 using xda premium

Categories

Resources