Introduction
As you all may or may not know by now, one of the biggest things that I believe in is a completely open source community, and as I delv deeper into the world of android, I am discovering how a lack of centralized data is causing a lot of headaches and time to be wasted.
Problem
In the past I have worked a lot on the kernel, and building mods for the nook table (trying to get kexec working) with some failure and some successes, however the one thing that I noted more and more was how much people repeated the same process. One thing I started to do when it was just Nemith Indirect and myself, was keep a Guide post, so that every one had access to the information. However as the community grows, I am unable to keep up with all that is happening.
Solution
In order to remedy this I (along with dj_segfault) have created the website nooktabletdev.org in hopes that people will contribute to it. The premiss is that by allowing others to read your guides, you will aid in the creation of future roms and such on other devices, and this one.
Information and Features
What to post:
Guides (extencive from building a kernel module to what repo to sync for CM7)
Compiled modules
Kernel configs
In the future I plan on adding:
File hosting capabilities, and linking along with change logs for Nook Tablet Roms
Git repos for community development
What should not be posted:
Anything that is not useful or pertaining to the Nook Tablet
EXPLOIT Explanations (trying to stay away from letting TI or BN patching)
Questions (Thats what these forums are for)
FAQs:
Why not use the XDA Wiki?
This wiki is used more for common knowledge and facts pertaining to hardware and current events on a device. nooktabletdev.org plans to be the overwhelming easy to search data base that will contain all of the knowledge on there plus more.
I found this awesome article on <insert topic>, can I copy it there?
Should be no problem but check with the copywrite rules of the source, and always make sure to source it so that it may be referenced against.
I want to help with the wiki!!!
Register on the wiki, and you can immediately add data (although it will be monitored closely).
If you wish to become a mod or be an admin please PM me or dj_segfault
I want to add something but I'm not sure if its useful?
PM, or hop on irc, and we can help you find out its usefulness. If all else fails just post it. We can always delete it later. MAKE SURE TO SEARCH BEFORE POSING TO AVOID DUPLICATES.
Information:
http://www.mediawiki.org/wiki/Help:Contents
Reserved for Future Use
Related
I've been following threads on here for a few months, and now I think I want to try to learn more about how Android actually works. I'm familiar with IDEs and coding in general(not my strong point), so I think I could pick up some things pretty quickly. Where would you guys recommend I look for learning to code/tweak Android code*?
I kind of want to be able to say I'm running my own cooked up version of Android.
*please ignore this redundant word choice, please.
rougegoat,
There is a fork in the road right at your starting point, strangely enough. You could choose to study Android application development, or you could choose to look at ROM "development". They are almost worlds apart in both nomenclature, toolsets, and skills; and because of the breadth of skills that are needed in both domains, I have no doubt that there are people that are simultaneously geniuses in one of those areas of expertise, and a numb-skull in the other: that's how far apart they are.
The former is all about Java, Android API's, the "SDK", and an IDE such as Eclipse, and emulators and the device bridge; the latter has a distinct "Unix jock" nature to it: Android "NDK", (or CodeSourcery) toolchains, gcc, make, command-line and shell scripting, understanding dynamic linking and execution environments, and use of configuration management tools (git and repo).
When "code" comes up in the former, it's Java; in the latter, ANSI C (or any other native-compiler language, but C is most typical). In the latter case, if you are building source trees from public repositories, (say Cyanogen or AOSP) initially you won't spend any time at all with C - you'll be spending 95% of your time struggling with with the build environment(s) and trying to wrap your head around the mysteries of "git" and "repo" - and also deciphering Unix shell scripts (typically written in the "Bourne" or "Bash" shell dialect) when things go wrong or are poorly documented. And yes, they will go wrong; effectively diagnosing what happened when things go wrong requires solid Unix/Linux skills.
Your question as posed suggests that you are more interested in the OS/ROM side of things than App development; if that is the case I would suggest you:
-brush up or learn from scratch basic Unix/Linux skill sets (they map over to Android almost 1-to-1).
-If you are a Windows user, download VirtualBox, and create a VM with Ubuntu (8.0.4 or 10x); use developer.android.com as a reference for dependencies and setup. Make sure the virtual disk is plenty big: at least 30-40 Gb. Don't attempt to set up a native development enviroment in Windows/cygwin. ( Windows is a great place for the Android SDK and Android App development, but decidedly not for native code development for Android "ROMs"** ).
-Install both the CodeSourcery and the Android "NDK" (Native Development Kit) in your Linux VM, and try and build a smallish, but multi-file C source-code project that uses Makefiles using both of those toolchains. (Sounds easy, right? Wait till you try anything involving the standard I/O library with the NDK).
-Get your simple project code to run correctly on a real phone device.
- Then, download and build an HTC kernel from their (standalone) source tree - try and do it with both toolchains (CodeSourcery and Android NDK) - simply for the experience of setting up the environments correctly.
- Then, learn the basics of dealing with repo, download an Android source tree and compile it - using both toolchains (CodeSourcery and Android NDK)
- After succeeding with the above, try pulling code from someone else's "git" repository and merging it into an Android build tree - and getting it to build correctly.
The above looks like a pretty short list - but it represents many, many hours of effort. Good luck.
bftb0
** There might be folks that take issue with that statement about ROM-building and Windows. They might tell you, "just download so-and-so's kitchen, and start building ROMs", it works fine under Windows." There's nothing wrong with that, especially because it can be satisfying seeing something of your creation actually running on a phone in a short period of time - but you probably won't learn very much, and when things go wrong, you'll be stumped about how to go about fixing things. The difference between a "chef" and a "developer" is that the former merely assembles together pre-built executable programs and libraries - whereas the latter understands not only how to go about building those things when the sources are available, but also has the opportunity to change them.
Lucky for me that I'm a Slackware guy. I'd much rather learn the system then just have a pretty GUI that does it all for me. That's half the fun of it.
Thanks for the advice, I'll have to try that whole bit out and see where it gets me. A weekend project awaits!
How to get answers efficiently and be helpful at the same time
I have been eagerly following this project for a while now, and gleefully confusing retailers when they see android pop up on my WM phone. There are several people who put in an exceptional amount of effort into this project, and unfortunately there seem to have been an influx of users lately who seem to be fairly effective at frustrating them. Often, instead of seeking answers already clearly identified within this forum and learning from the discussions, they step into an otherwise productive thread and ask to be brought up to speed, or to have their problems solved for them. Usually these individuals are well-intentioned, but are lacking the knowledge both of where to start learning, as well as how to be helpful. I hope this post is helpful in recruiting the many well-meaning new users into becoming active and helpful contributors in their own way, while answering their own questions and solving their own problems at the same time.
I think it's reasonable to assume everyone should do Step 1, and it would be nice if most people would also do Step 2. Step 3 is for individuals with some programming skills and a willing to learn the technological challenges at hand.
Step 1: The Basics, and asking questions well
Many, if not most of us here on this forum are driven here by curiosity, and kept by the challenges faced in this project. When we first start, there often is a very low level of relevant knowledge and understanding.
The very best place to start is the FAQ. It will help orient you to XDAndroid, and will answer many of your questions - so it's a great place to return to and do some reading.
http://xdandroid.com/wiki/Faq
Next, fortunately, we now have an excellent post by ryannathans on an introduction to Android – SD Card. If you haven’t yet read it, please do.
http://forum.xda-developers.com/showthread.php?t=980079
You may also be interested in browsing and referring to the XDAndroid wiki:
http://xdandroid.com/wiki/Main_Page
Finally, a useful thread to read the first few posts, search with your questions, and follow the most recent few pages is the main FRX06 Page. (This will probably change to a new thread when FRX07 is released)
http://forum.xda-developers.com/showthread.php?t=951962
Once you’ve understood the key elements to getting your Rhodium (aka Touch Pro 2, Tilt 2,e tc) running Android, and know which model phone you have, you should probably install the suggested current base system (FRX06 at the time of this writing). Use it, learn about what works and what doesn’t, and do as much reading about your questions as you can. Almost everything has already been discussed on either XDA Developers or PPC Geeks. On XDA Forums, go to the main rhodium android page (http://forum.xda-developers.com/forumdisplay.php?f=589), and click the 'search this forum' button in the top right.
If you want to look a bit broader, or use a more familiar search engine, use Google, and if you need to, constrain the searches to the given sites (substituting “ThisIsMyQuestion” with your question).
GOOGLE site:http://forum.xda-developers.com/ ThisIsMyQuestion
GOOGLE site:http://forum.ppcgeeks.com/ ThisIsMyQuestion
Look first, and take the time to read. Even if you don’t find the specific answer (unlikely), you will learn a lot. I found it incredibly helpful to make an account with XDA developers so that I could identify and subscribe to the various important threads and be able to see when there have been new posts on issues I was interested in.
Now, if you still have a question, then find the appropriate thread and ask it. To pose a useful question, you need to be clear, concise, and specific. (Being polite always helps, as well as being patient)
Try to ask your question as simply as possible (ie, how do I enable/do ThisCoolThing on my Rhod 400? I am running FRX06, with _____ modifications on (SD Card / NAND / etc). I’m on Telus/Verizon/etc (CDMA / GSM). It is often a good idea to state what windows is running on your phone (ie, EnergyRom WM6.5, or stock 6.1, etc...), as some of its drivers/settings are occasionally relevant. If there seem to be some situational factor that seems important to you, briefly mention it (ie, everything worked until I did xxxx) If you have gone ahead and done something silly like overclocking your phone, state it, as it may well be a complicating factor. (hint: Don’t. ... At least not in Windows Mobile).
Secondly, try to make sure you get to trying everything suggested to you. Unfortunately, good advice is often overlooked simply because the first item didn’t fix the problem, or the solution seemed too time consuming. You may be asked to delete your data file – don’t worry, you can back it up, and if it doesn’t work, simply replace the new file with your old one. Installing a backup application such as Titanium Explorer (from marketplace) helps backup your apps and their data, speeding their re-installation (and saving you from having to re-download them).
Remember that by participating in this project, by installing new, testing versions, you are not receiving a polished or supported product. You are contributing to a community, and your few hours it takes will pale in contrast to the hours and contributions others have put in. If you do put in this time, as well as do some background reading on the issues and post your findings/solutions, you very likely will help advance the general understanding of the problems at hand.
Step 2: Provide Log Files
This may help you in getting an answer, but to be even more helpful, if your question or problem is new, or is something that hasn’t been solved yet, then having logs will help those answering your question to not fumble blindly. It may even help provide a better build for the next release.
How to get the log files:
Install ADB and DroidExplorer:
http://forum.xda-developers.com/showthread.php?t=1099481
From your command prompt, after the phone is connected, grab your logs by typing the following:
adb shell dmesg > dmesg.txt
adb logcat -b radio -v time > radiolog.txt
adb logcat -v time > logcat.txt
You can learn more about logcat, if you're interested, at:
http://developer.android.com/guide/developing/tools/logcat.html
It is then a good idea to edit these logs to remove personal information (ie, your phone number from radiolog.txt (search for it in notepad/wordpad - it's 10 digits, no dashes, in my logs; your email address may appear in the logcat.txt, although I haven't found mine there). To simplify matters, I just do a search & replace for my phone number and email address, replacing them with XXXXXXXXXX.
If you're interested in catching an error in real time, you can omit the storing to file option, and the information will be displayed on the screen, continuing to report until you terminate the process with ^C (control + C)
If your computer isn’t able to find adb.exe, then you may have to either set the environment path to where you installed the android sdk (or where droidexplorer installed it), or simply type in the full path to execute the command
ie: C:\android-sdk-windows\adb shell dmesg > dmesg.txt
Once you have these files, upload them along with your question (note, the files will be created in the location from which you executed the adb command), and an answer may be found much sooner. If you want to look particularly good, read the logs first, and find the areas that you think are involved. Cut and paste the relevant sections into the body of your question, and say ‘I think the problem is this...’, and you may get an answer even sooner.
Step 3: Cutting edge / bleeding edge
If you’re really eager to help, or are simply really frustrated with a problem and have some coding ability, then this step is for you. First off, know that when you start to play with fire, you may cause problems with your phone, so make sure you keep everything backed up. Titanium Explorer is a common choice to backup your applications and their data onto the SD card, and it may be a good idea to backup the important contents of the SD card too, as they have been known to fail on their own.
If these instructions don’t make sense to you, then think twice if you’re wanting to become involved at this level. This will require some coding ability, and if you want to build it yourself, you`ll need a 64-bit recent linux installation with >1 GB of memory free.
The source code for XDAndroid is located at:
http://gitorious.org/xdandroid (git://gitorious.org/xdandroid/manifest.git)
And there’s several branches from there that contain the useful areas of development. For example, jbruneaux is working on the new audio routing (and thus you can see/follow/contribute to better solutions there), and Howard Chu is working on a variety of hardware issues.
Useful reading can be found at the XDAndroid Wiki Page:
Getting the Source: http://xdandroid.com/wiki/Getting_the_Source
Configuring the Build: http://xdandroid.com/wiki/Build_Configuration
Building and Packaging: http://xdandroid.com/wiki/Building_and_Packaging
If you’re eager to help out with coding, spend some time getting familiar with android first, then ask around or pick something that grabs your interest and get working on it. The IRC is a great place to chat with some of the other developers/contributors, and a few others communicate directly with each other about specific challenges.
irc://chat.freenode.net/xdandroid
The project owner of XDAndroid is Brian Stine, who’s blog often helps give some perspective on what is happening behind the scenes (http://southcape.org/).
Please let me know if there’s any changes you’d suggest to this. My goal is to round out the other guides that have been created with the goal of facilitating clearer communication and increased participation in development.
Great guide!
Couple of suggestions.
It's adb logcat -b radio, not adb shell logcat -b radio. Also, add -v time. Also add regular adb logcat, again with -v time. Also might want to mention the "things to scrub" from these logs - email addresses for example will show up in regular logcats, a whole slew of personal things show up in radio logcats. Seems like a good place to make people aware of that
That's all I have for right now, bravo!
Thanks Arrrghhh,
I had been using adb shell logcat until now, and hadn't noticed I could just use adb logcat - thanks for pointing that out. The -v time is an amazing tag - I wish I had been using that up until now, it's great to isolate when a problem happened. Too bad that's not an option for the dmesg. I've added your suggestions to the post - though I can't seem to find my email address in my current logs.
Cheers.
Great Post!
Hopefully n00bies shall read this
I think "READ THE FAQ" should be included somewhere in Step 1.
Thanks rpierce99, you're right it should be right at the top - and now is.
Hi there. I just got my first smartphone a couple weeks ago and I'm loving it. Samsung Galaxy SII i777 with gingerbread. I was talking with my friend today and he told me about this site and how amazing it is so I decided to check it out! However I'm incredibly lost. I see all the posts about how to root your phone and everything that says HOW TO, but I couldn't find any "WHAT IS" threads (surprisingly not in the stickies).
So could someone do a noob a favor and explain what all these different things are? Like rooting, kernel, etc. I dont plan on using anything other than the default gingerbread/ICS any time soon, but my friend told me there are tons of good benefits behind the scenes from kernels, namely getting double the battery life I'm getting now, so I definitely want to start looking into all that -- I just need to get a foundation on what's what.
Thanks in advance for the help
Read the design section from this wikipedia article about the Android operating system for an explanation of of what the kernel is
http://en.m.wikipedia.org/wiki/Android_(operating_system)#section_2
Here is an explanation of rooting and Android phone
http://en.m.wikipedia.org/wiki/Rooting_(Android_OS)
For basic definitions of terms like this google and wikipedia are great resources, as well as the stickies posted in these forums.
Now once your learn some about this things after looking and reading you will then be able to ask more specific questions which people here are very helpful with.
However general basic questions about terms and definitions like this post will sometimes generate some not so friendly responses here.
Sent from my SGH-I777 using XDA Premium HD app
http://forum.xda-developers.com/showthread.php?t=1511999
I looked through the sticky before posting, and the wikipedia links don't answer my question. I just want to know what exactly a kernel is, the different benefits of rooting your phone, etc. Any BASIC (not overly detailed) stuff people should known when first starting to do this stuff
The FAQ had "what is rooting?" and that was it..
http://www.reddit.com/r/Android/comments/distm/allwhy_should_i_root_here_is_why/
http://www.reddit.com/r/Android/comments/dctbb/okay_so_you_rooted_this_is_what/
Will add more as I find them.
ScelestusAnimus said:
I looked through the sticky before posting, and the wikipedia links don't answer my question. I just want to know what exactly a kernel is, the different benefits of rooting your phone, etc. Any BASIC (not overly detailed) stuff people should known when first starting to do this stuff
The FAQ had "what is rooting?" and that was it..
Click to expand...
Click to collapse
The BASIC stuff you should know when starting "to do this stuff" is don't skip the details they are important and they will help keep you from making big mistakes.
The main reason/benefit that drives most average people to root their phones is to get direct access control over the /system partition and the applications installed there - to have more control over the "system apps". This allows them to debloat their device and to directly back up system apps (i.e. Titanium Backup).
Though there is allot more available to them and many different things that different people do with root. Once you have root access as the term root suggests, root gives you access to the very root partition "/" and everything below it (this means that root privileges gives you access to everything on your phone). It allows you access to troubleshooting, tweaking and theming that you would not otherwise be able to do.
Just remember the saying "with great knowledge comes great responsibly". Because once you have root access, you can then give applications that same root access - and that will allow that app free run through everything on your phone, as well as any and all accounts you have sync'd to your phone. So be careful to be stingy with what apps you allow root privileges, because if you allow a rogue or pirate app such control it could do quite allot of damage and steal quite allot from you before you ever know what happened.
As to exactly what the kernel is (summarizing part of the Wikipedia article says because it does tell you exactly what the kernel is) - the android kernel is the core of the android operating system (just like the Linux kernel is the core of the Linux OS as the android kernel is built directly from the Linux kernel). The kernel is the part of the OS that allows the user input and application inputs to interface with the hardware - it is the drivers and communication translation between the user controls/applications and the hardware it operates on.
Hello all,
I want to reverse engineer n7player, change its UI add features, ect. and republish it to the play store. I was wondering how much I would have to change it to republish it. Also if you're interested in developing with me send me a PM (I will pay),
Thanks ahead of time.
Bump
Assuming you mean the free version, you can repost it here after changing anything I think. There is no set amount you have to change before doing so, but most people won't want a very slightly changed version. There is also no amount of changes you can make that will make it OK for you to release it as your own app, you will ALWAYS have to make it very clear that it is "a modification of n7player".
If you mean the paid version, you cannot directly redistribute your modified version. You can possibly distribute the changed files from within the APK, but you cannot distribute the full APK.
Also, I don't think modified apps are allowed on the Play Store, you can only really post them places like here on XDA.
Ok. Then can you point me in the right direction for creating a player I know Java, just not the android development process
Questions or Problems Should Not Be Posted in the Development Forum
Please Post in the Correct Forums & Read the Forum Rules
Thanks ✟
Moving to Q&A
Check the Android Developers website for tutorials and information about Android Development. It'll have all the information you need.
I believe the SDK Samples also includes a simple sample of MediaPlayers.
Get started on learning Android Development. You won't really get anywhere with Android if you only know Java.
Also, you should do this to create your own special and unique media player and not try to reverse engineer another developer's app to release it as your own. Give yourself some confidence and come up with a better idea.
I am looking to create a calendar app which would operate similar to the Google Calendar aside from some unique features I plan to put in. After some initial prototyping of a few of the layouts and research. I can't help but think the scope and time required for initially cloning the GC will significant.
This would be my first android application, am I approaching this correctly. Is this actually a one man project? Thanks in advance
[Just note, this is a question so it should've been posted in the Q&A section]
Yes this is a one man project, adding people to the project will just speed things up.
Firstly you'll need to run yourself through the Android Development section for critical info when creating applications.
If this is your first time working with Java then you're going to need some knowledge with quite a bit of statements.
Creating a calendar similar to GC isn't too hard and can be done quite well. In fact its a great "first" project.
Also I would suggest you create layouts first before you actually go into coding as that will build up a platform to work on.
You will be working with intents and Uri's allot as you would want your users to be able to set their own events.
Here is an official doc on Calendar Provider - http://goo.gl/8f1v3J Loads of great info on creating calendar.
All the best with your project, if you feel you are in a loop and need some help finding out errors and fixing them. Go to stackoverflow. The guys and gals there are very nice and respond quickly with fantastic answers.
Thanks
Thanks for the quick response, didn't realise I posted in the wrong area. Will have a look at the android dev section .