Recently I've been trying to teach myself how to develop for our phone, but I'm using a Mac. I have a Windows Partition, and can run Windows on my Mac, but it's a pain to have to restart just to use a single program for whatever it is that I need done. So I've done some research and thought it would be nice to share all the programs that I've found that help in Android Development.
It would also be nice if other Mac Users would share what they have found as well or what they use when trying to accomplish certain tasks when working with android. So here goes:
--Android SDK--
This is rather obvious…that being said you can download this from android.com. However, if you chose to install Eclipse I find installing the SDK from Android to be rather Redundant, if you agree go on and read the part about Eclipse.
--Wine/MacPorts/xCode--
First, sometimes it's useful to use Windows programs on Mac, and an one quick way to do that without having to reboot is with Wine. It takes a while to set up, but it is useful for running MOST executables. The last two programs you install as part of the tutorial, so follow on:
So here is the website I used to set up Wine: http://www.davidbaumgold.com/tutorials/wine-mac/
All of his instructions are accurate excluding where he talks about installing xCode. It is OK to install xCode through the App Store, all you have to do afterwards is install Command Line Tools. To do this:
1. Open xCode
2. Open Preferences (cmd+,)
3. Click the Downloads tab
4. Use the link to create an Apple Dev account
5. Click Command Line Tools
Now you can continue to follow the rest of the Tutorial
--Eclipse--
This program is useful for creating Android Applications on your phone. If you choose to install Eclipse I would follow this guide once you're done. I realize it is for creating Android Applications but it also explains how to set up a working environment.
So here is the website I used to set up Eclipse: http://www.vogella.de/articles/Android/article.html
I would start at section 5.1
Also Eclipse can be used for compiling .9.png files…I found a good tutorial for this on XDA: http://forum.xda-developers.com/showthread.php?t=487001
Go hit damnitpud's thank meter if you find his thread useful
--APK Manager--
I found this tool extremely useful for pulling APK's and pushing them to your phone. This app can be used for Themeing apks, or editing the XML files.
I found this application on XDA as well: http://forum.xda-developers.com/showthread.php?t=1285130
Go hit s0niq3's thanks button, maybe it'll convince her that people actually care about her program.
--android-utility or AU--
This little program looks to be extremely useful, I found it while searching for a way to compile .9.png files without having to use Eclipse. But it also has a host of other applications and uses. Make sure you read the thread thoroughly and follow all instructions.
I found this application on XDA as well: http://forum.xda-developers.com/showthread.php?t=1167623
Go hit tommytomatoe's thanks button as well, he gave us a marvelous little program. There is also a version for windows now, well at least part of it.
[For windows, and Linux Users: http://forum.xda-developers.com/showthread.php?t=1272513]
Go hit kakomalo's thanks button
If you download the version 1.0.1 and you try to compile a .9.png file, and you receive an error telling you that aapt is missing, all you have to do is drag and drop the aapt from the Android SDK into /android-utility/utility/
--xUlitimate--
I'm not sure if this one is worth mentioning for Mac, but it would be kinda cool if someone figured out how to get this to work with Wine…so here it is:
So here is its link: http://www.droidforums.net/forum/xeudoxus/47283-release-xultimate.html
This one has some theme tools. I found it specifically for the Draw9Patch Compiler, but I could not get it to work nicely with wine.
--Gimp--
This one is well known, so I don't think it needs much explanation…but it is image editing software.
Here is the download link if you don't already have it: http://gimp.lisanet.de/Website/Download.html
---Finally
After spending hours searching, downloading, and finding out what works I thought I would share to save someone else the expense of having to go through the trial and error. I would love it if other Mac Users, or any one else would share their knowledge on programs they use when working with Android; to theme, compile ROMs, or any other activity related to Android while pertaining to Mac.
Also, if you mess up your computer while doing this it is your own responsibility
Don't know why you haven't got any thanks for this, here's one from me for a very detailed and informative post. I am not a Mac user but thanks for your contribution.
Well I guess I just gave you your first thanks!
This post should be a little useful for Mac users... especially those that don't understand Unix.
Developing on Mac can be very similar to developing on Linux. Mac is just slightly more GUI oriented. Unix commands are the same, though.
So Linux users could use this guide as well!
EDIT: After I posted... I noticed 4 more users had thanked you as well... o-o that was fast
Haha oh thanks guys! After the first couple of days I thought my thread was going to get swallowed up. I'm starting to think that Mac Users are rare amongst Android developers. I do realize that other Unix OSs like Ubuntu are favored more, but sometimes it's a pain to run these back and forth. I've even tried to VM UBUNTU, but I had a problem getting the USB to interface with the program, whether it was how I sent it up, or the program itself I have no idea. So I went out looking for alternatives. There is always triple booting I suppose.
Sent from my SAMSUNG-SGH-I727
I'm use a Mac at my office, and not by choice. Thank you for this extremely helpful post!
Great guide for anyone who is looking to start developing for Android. Better yet, for people who need to get the jist of what is going on in UNIX!
Related
Basically what i want to do is what M2DC does.
i want the program to list all the .zip files that are in a certain theme folder and then when you apply the theme, it unzips the file and copies whatever is in that file and copy it to the windows folder.
Please help me.
i know NOTHING about programming.
you dont even need to show me, even if you give me a link that give me the necessary information to help me do so.
btw, i have Visual Studio 2008.
http://msdn.microsoft.com/en-us/windowsmobile/default.aspx
that is microsofts windows mobile developer center you may find some stuff there, but if you have no programing experience you may just want to get the developer of m2dc to help you out getting started
best of luck
forgot to mention i already looked there.
good tutorials. just none of which help me in this situation.
kidnamedAlbert said:
Basically what i want to do is what M2DC does.
i want the program to list all the .zip files that are in a certain theme folder and then when you apply the theme, it unzips the file and copies whatever is in that file and copy it to the windows folder.
Please help me.
i know NOTHING about programming.
you dont even need to show me, even if you give me a link that give me the necessary information to help me do so.
btw, i have Visual Studio 2008.
Click to expand...
Click to collapse
Did you download the free copy of visual studio?
bedaweed said:
Did you download the free copy of visual studio?
Click to expand...
Click to collapse
i have the full version
the only reason he would have asked is that you have to have the full version for windows mobile development....
okay well i do.
but im not a programmer so i need some help.
i started trying to jump in just recently, mostly i've just been skinning before so i am in the same boat
this is the c++ library reference, it may provide some help.
http://msdn.microsoft.com/en-us/library/cscc687y.aspx
the code should be the same on a pc performing the same operation
so such code exmpls should be fine too
i tried to do some searching but it appears that there is not very many beginners tutorials for windows mobile so I will just put a couple of suggestions out there.
If you have never written code before I would recommend starting with C#
I personally use C++ but that is because I started writing C++ while still in high school before C# even existed. From what I can tell C# would be a much less painful experience that learning c++.
If you are not all that interested in learning the ins and outs of programming I would take a took at mortscript because that basically gives you just about everything that you would need and I just checked the documentation they have everything you need, the ability to unzip files and make a simple gui
Whenever looking about learning a new programming language you will do best to look for a "Hello World" example, whenever I learna new language / platform (like i am currently doing with android) I always look for a hello world example so that I can get something simple up and running
I end up getting a lot of information from http://www.codeproject.com/ and http://www.pocketpcdn.com/ sometimes the information is outdated, but it is usually pretty good.
The latest and greatest programming website is stackoverflow.com You can ask a question and Usually you will get an answer to your question in a day or so.
If you are ever interested in looking at some C++ things you can look at the full M2DC source code by downloading the zip file from the google code page (latest source code). In the zip file there is a sln file somewhere, that is the entire solution for the program. You should be able to open that file with you copy of visual studio and build a fully working copy of M2DC
good luck
How to teach programming in one post...
Well I don't know where to start, Developing C# apps for PPC is similar to developing desktop apps. The best way to learn is to see what others have done and copy across the code you need (Lookup Popfly Development ).
I'd try and find the code for this in a Normal WinForms app to do this and then port it across to the PPC App.
I'd do it in C#. The un-zipping maybe complicated, I'm not sure what ZIP code is in the .Net Compact Framework.
Let me know if you need any help, I might even knock some code together for ya.
Ta
Dave
mpenguin14 said:
i tried to do some searching but it appears that there is not very many beginners tutorials for windows mobile so I will just put a couple of suggestions out there.
If you have never written code before I would recommend starting with C#
I personally use C++ but that is because I started writing C++ while still in high school before C# even existed. From what I can tell C# would be a much less painful experience that learning c++.
If you are not all that interested in learning the ins and outs of programming I would take a took at mortscript because that basically gives you just about everything that you would need and I just checked the documentation they have everything you need, the ability to unzip files and make a simple gui
Whenever looking about learning a new programming language you will do best to look for a "Hello World" example, whenever I learna new language / platform (like i am currently doing with android) I always look for a hello world example so that I can get something simple up and running
I end up getting a lot of information from http://www.codeproject.com/ and http://www.pocketpcdn.com/ sometimes the information is outdated, but it is usually pretty good.
The latest and greatest programming website is stackoverflow.com You can ask a question and Usually you will get an answer to your question in a day or so.
If you are ever interested in looking at some C++ things you can look at the full M2DC source code by downloading the zip file from the google code page (latest source code). In the zip file there is a sln file somewhere, that is the entire solution for the program. You should be able to open that file with you copy of visual studio and build a fully working copy of M2DC
good luck
Click to expand...
Click to collapse
actually thats the first thing i tried(using m2dc as a template)
but i was super confused.
i tried taking out unessicary things like softkeys, background, internet, etc. but it didnt want to build. and plus, i probably did it all wrong.
if i cant get a good mortscript to do it, ill look into those websites you recommended me.
im in high school right now and im trying to find classing that will teach me some basic programming.
my school is filled with idiots though.
but im moving to a different city, so maybe they can teach me better than i would here.
thanks again.
Sorry for posting a whole new thread for this. I poked around with the search, however I figure the developers that are doing stuff for the Infuse have a lot on their plates to be able to write out a tutorial for this individual phone forum.
But, I have absolutely 0 experience in making a rom for anything. I have flashed Infused on my Infuse. This is my first Android device and I really love the customizability over the iOS software (previous phone). I know Gingerbread is just around the corner but I would love to take my first few steps towards developing with a rom thats been out already. This way by the time I get a better grip of things I can maybe transfer these skills to the new version.
If anyone can be so kind, Ide appreciate it if the helpful devs could maybe point me to some links with the necessary files and programs/files that are needed to build a custom rom. As well as maybe some tutorial threads or videos.
Anybody feel free to shoot me some useful links if possible. Thanks so much in advance! Cant wait to contribute.
Mikeymike had something you're looking for in the Captivate forum. Can't find the thread on my phone but it was basically a how to thread. Good stuff if ur interested
This should be in Q&A. But yeah, MikeyMike has a tutorial somewhere.
In my opinion - start off small. Get familiar with making customizations to a ROM (theming, app replacement, etc) and then grow from there. Don't bite off more than you can chew.
tazbo28 said:
Sorry for posting a whole new thread for this. I poked around with the search, however I figure the developers that are doing stuff for the Infuse have a lot on their plates to be able to write out a tutorial for this individual phone forum.
But, I have absolutely 0 experience in making a rom for anything. I have flashed Infused on my Infuse. This is my first Android device and I really love the customizability over the iOS software (previous phone). I know Gingerbread is just around the corner but I would love to take my first few steps towards developing with a rom thats been out already. This way by the time I get a better grip of things I can maybe transfer these skills to the new version.
If anyone can be so kind, Ide appreciate it if the helpful devs could maybe point me to some links with the necessary files and programs/files that are needed to build a custom rom. As well as maybe some tutorial threads or videos.
Anybody feel free to shoot me some useful links if possible. Thanks so much in advance! Cant wait to contribute.
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=928955
remember to post in the right section next time bud.
Thanks so much guys. Sorry I was totally debating on whether to post this there but I thought that maybe the devs dont frequent that section.
Please do move this thread if possible.
Sent from my SAMSUNG-SGH-I997 using XDA App
Ok so I have one last question.
Is it better/easier to build the rom using an ubuntu virtual machine, dual boot ubuntu, or a Mac OSX Lion virtual machine in Windows 7?
I have the option to run any one of these types of systems. Unfortunately I do not have a Mac available, so Im wondering if it is even possible to build the source using a Mac VM seeing as how there are certain types of partitions necessary.
Thanks in advance.
tazbo28 said:
Ok so I have one last question.
Is it better/easier to build the rom using an ubuntu virtual machine, dual boot ubuntu, or a Mac OSX Lion virtual machine in Windows 7?
I have the option to run any one of these types of systems. Unfortunately I do not have a Mac available, so Im wondering if it is even possible to build the source using a Mac VM seeing as how there are certain types of partitions necessary.
Thanks in advance.
Click to expand...
Click to collapse
I'd dual boot windows and Linux
Samsung infuse running gingerbread!
Dual-booting Linux is your best bet. VMs mean that if you eventually get as far as doing kernel or AOSP/Cyanogenmod compiles, you'll have less RAM available, and also sometimes accessing USB devices (such as to use ADB or Heimdall) is a bit of a pain with VMs.
Awesome thanks a bunch guys i just got my ubuntu dual boot set up but i don't seem to have a working Linus driver for my trendnet wifi adapter.
But i have downloaded the infuse 4g source and im about to start setting up the build components from the android website.
Sent from my SAMSUNG-SGH-I997 using XDA App
tazbo28 said:
Awesome thanks a bunch guys i just got my ubuntu dual boot set up but i don't seem to have a working Linus driver for my trendnet wifi adapter.
But i have downloaded the infuse 4g source and im about to start setting up the build components from the android website.
Sent from my SAMSUNG-SGH-I997 using XDA App
Click to expand...
Click to collapse
Well, there are two routes to building ROMs right now:
1) Start from a Samsung ROM - there is source to the kernel and a few small parts of the userland stack available, but most of it is lacking source. Most custom ROMs available here are created by taking the stock Samsung ROM and tweaking them - removing apps, adding others, or attempting to bring apps from other devices to ours.
2) Cyanogenmod 7 - this is a source build, HOWEVER - it is not complete, open-source reimplementations of some Samsung stuff is not complete, so some features (like Bluetooth) are broken
A lot of ROM devs (those that work on Samsung-derived ROMs) don't even have a copy of Samsung's source code release as it's not useful to them. (Exception are those of us who do kernel work.)
It's not something you can just jump into. To do it properly, you need patience and a willingness to spend a lot of time researching a lot of different things.
1) Some things are easier to do in Linux and other things are best done in Windows due to some tools only being available for Windows. It's best to have both.
2) Learn how to dump the system partition (using the dd command) and mount/extract the resulting factoryfs.rfs on your computer.
3) Learn the /system folder structure. Explorer the files in each folder and try to figure out what those files are.
4) Find and learn how to use a script or program that can deodex the apps and framework from the extracted system image.
5) Learn the structure of flashable zips and what all of the commands in updater-scripts do. Easiest way to do this is to download a bunch of roms and look at their folder structure and updater-scripts. Google commands in them that you do not understand.
6) Learn which apps can be removed and replaced without consequence. If you can't figure out exactly what a particular apk does, best to leave it alone.
7) Experiment with changing build prop entries to see what some of them do.
8) Learn how to manually decompile and compile the dex portion of apk and jar files. Use smali and baksmali for this. This lets you modify app and framework code, but the decompiled smali can be a bit confusing. Try to learn how to read it. Try this AOSP lockscreen mod tutorial.
9) Learn how to use a program that can decompile and compile entire apps, including resources. Apktool is a good program and APK Manager is a good front end for it. Look through all of the folders in the resources (res) directory of a decompiled app. Learn which images and types of files are in each folder. There are a ton of xml files that do various things in the resource folders. Open a bunch of them up and learn some basic xml structure so you can see what all that xml is doing. Most visual app mods are done via xml. Here's a slightly more advanced mod tutorial than the AOSP lockscreen was: http://forum.xda-developers.com/showthread.php?t=811532
10) Learn proper apk compression techniques. Though it works, just dropping images into apks via 7zip and calling it a day isn't really the right way to theme. The default Android Asset Packaging Tool (used by the Android SDK to package apps) does not compress certain file types, including images. This is because images, especially pngs, typically do not compress a great deal anyways and the added cpu time it takes to decompress those images at app launch makes the total app loading time longer than if the images were uncompressed, even if they are slightly larger. Also, compressing some file types, like oggs and system objects, too much can even cause the app to not be able to load them. See here for a handy script to repack apks with proper compression: http://forum.xda-developers.com/showthread.php?t=1123463
I could go on forever, but that should point you in the right direction. At least you know some of the basics you need to learn now even if I didn't tell you exactly how to do each thing. Remember, Google will be your best friend. Use it. A lot.
Man I really appreciate this so much gtg. Its exactly the kind of encouragement i was hoping for. I just get a general sense of excitement when thinking of all the different possibilities in both Rom and app development. And seeing as how im and artist first, its awesome to know that ill down be able to be a double threat in both designing the look of, and building the Rom myself.
I can't thank you enough for pointing me in the right direction. Maybe one day someone will put together a kitchen for the Infuse. Until then ill be happy to dive into all the nitty gritty.
Sent from my SAMSUNG-SGH-I997 using XDA App
So yeah... this hasn't been easy.
I'm not gonna spend time getting into my coding history... but I wanna expand to Android. Usually I'm able to just get myself to a point in which I can start writing code, and then from thereon I can learn whatever I need to learn... but that's based on languages where I have a compiler, or can even do most of my coding from notepad+/PFE... I won't say I'm used to things being simple, but getting into a new coding language as at least been generally direct enough so that I can dive nose first into some good 'ol T&E.
I keep hearing Eclipse being mentioned, but honestly the furthest I get before I'm confused is the Android SDK Manager (and it's megaton of downloads).
I just want to get to the point where I can start messing with values, strings, functions and see how much different it'll be from what I'm used to when I try to make key inputs trigger functions.
While I am not able to code myself, (I made the Hello World and that was it) I do have experience with the Android SDK due to some debugging I have needed to do.
Eclipse keeps being mentioned because it's the officially preferred IDE for Android, as it counts with an official plugin.
The sequence is the following.
1) Install the SDK.
2) Install the necessary modules. You should know what you're going to program in advance so that you Install the relevant ones.
3) Install Eclipse.
4) Install the ADT plugin for Eclipse (instructions can be found in the site, but it's basically adding a repository and installing its contents).
5) Code!
Logseman said:
While I am not able to code myself, (I made the Hello World and that was it) I do have experience with the Android SDK due to some debugging I have needed to do.
Eclipse keeps being mentioned because it's the officially preferred IDE for Android, as it counts with an official plugin.
The sequence is the following.
1) Install the SDK.
2) Install the necessary modules. You should know what you're going to program in advance so that you Install the relevant ones.
3) Install Eclipse.
4) Install the ADT plugin for Eclipse (instructions can be found in the site, but it's basically adding a repository and installing its contents).
5) Code!
Click to expand...
Click to collapse
What he said. This is the only way to get started. And buy a book, Amazon has some great ones that will get you started on what you need to do from start to finish. The coding is almost the easy part, but theres a lot more involved in making it "work" with Android. Eclipse/Android SDK is the only way to do that. Just launch the SDK and let it do its thing for a couple hours and you're good!
Okay so basically, if you check out www.androlinux.com or search for youtube for ZedoMax, the guy has hacked ubuntu onto android.
I followed his instructions to a point, had to use rootstock to create a lucid kernel though (for lts). He provides four scripts, another file and an .IMG - I made mine.
Basically, documentation issues + a linux noob mean I cant find all the files it created on my phone, kill em all, and try again.
If somebody could take a look at the scripts and let me know what they think, I would be wholly appreciative!!
Also if anyone knows of a workaround to viewing the GUI over vnc thatd be awesome too!
Ps I know of the official version.. Thats not the solution im looking for.. As you can run apps directly in ubuntu im thinking of an interface app for it but thats another days tasking.
Sent from my LT18i using XDA
Some of the ported games use SDL for the Interface, maybe that is a way?
I'll bear this in mind - my Coursework atm is modding IOQuake3 Thanks dude
Hey all-
I'm very interested in learning Linux in order to not only do cool stuff at home with my own computer, but also to perhaps be of service in developing ROMs and give back to the devs who've helped breathe life into my ol' OG Evo for nigh-on two years now. If I ever got to the point of doing some 'grunt work' and helping out on a project, that'd be awesome for me.
Here's where I'm currently at with Linux: I've followed instructions to dual-boot Ubuntu on my Windows 7 laptop (yay!!!!), but other than installing Chrome and using all my Google services (Gmail/Docs/etc.) through that, I'm not really sure what else to do in order to become fluent with Linux. It's kind of like reading a book on how to build a car, but not knowing one end of a wrench from another.
Here's where I'm at with Android: I can follow instructions to root my phone, flash ROMs, install the Car-O-Dope tweaks on GB ROMs using System Tuner and ROM Toolbox, and most basic things that include using Smelkus' recovery (flashing, wiping, nandroid/restoring, etc). I'd say I know more than the average Android user, but certainly not as much as the experts here.
I've looked on a variety of forums both here and on Ubuntu's site, but I'm not really sure how people got their start using Linux and how they progressed from there in terms of fluency with Linux, applying that to Android developing, and also generally using it as a 'one-stop shop' for home use. I've read about people being able to build HTPCs on the cheap, using a computer as a file server/web site host (my wife's a graphic designer, but hates technology, natch)/media streamer/home security server, but as soon as the instructions get to "Ok, now open up your command line and follow these 28 steps......", I get a bit gun-shy.
If anyone's got any helpful tips on how they got started, any good beginner's guides (project-oriented would be great, just as reading a book on speaking a foreign language is no substitute for conversing with a native/fluent speaker), and how they grew in fluency or just any general advice, it'd be greatly appreciated. I'm putting this here and spreading it around in the hopes that some of the WAY talented XDA devs and members I've read so much from will toss a bone in my direction.
Thanks for reading and for any help!
Get very familiar with Terminal. For Android dev or otherwise, it is essential. Reading man-pages is also good to learn new commands better. In Terminal, just type "man man" minus quotations. That will get you going.
Sent from my PC36100 using xda premium
You should definitely make an effort to become comfortable with the Linux command line environment (also known as Shell, the most common Shell currently is BASH).
Try giving yourself some useful activities to do, such as: setting up a home file server with Samba, setting up a media streaming server (DLNA - Plex Media Server is a great program for this), just little things like that.
Before you know it you'll be a pro
markinaus said:
You should definitely make an effort to become comfortable with the Linux command line environment (also known as Shell, the most common Shell currently is BASH).
Try giving yourself some useful activities to do, such as: setting up a home file server with Samba, setting up a media streaming server (DLNA - Plex Media Server is a great program for this), just little things like that.
Before you know it you'll be a pro
Click to expand...
Click to collapse
So, is Bash something I download/install, or should it be already 'packaged' in with Ubuntu?
go to the development forum on ubuntuforums.org and find out how to upgrade to ubuntu 13.04. As that version is currently in development you should get a chance to learn a few things. That's how I learned modern linux distros. Also setting up and playing around with Ubuntu server edition might be helpful.
For app development Google some Java tutorials. Once you get the beginners stuff out of the way you should be ready to learn android development with your new Java skills.
Sent from my GT-I5500 using xda app-developers app
---------- Post added at 06:01 AM ---------- Previous post was at 05:47 AM ----------
just using Ubuntu for your day to day tasks should also help. When the other Guy was talking about bash he was talking about the terminal in Ubuntu. its a command line that lets you enter various commands. Google 'Ubuntu terminal' for more info
Sent from my GT-I5500 using xda app-developers app
Joshmccullough said:
So, is Bash something I download/install, or should it be already 'packaged' in with Ubuntu?
Click to expand...
Click to collapse
No Bash is something that is already packaged with Ubuntu, it is one of the most essential elements of Ubuntu (and Linux in general) because it gives you a means of interfacing with everything else. If you have a type of Linux with no graphical interface, then the shell is your only means of interfacing with the operating system at all.
So in short, yes Bash is packaged with Ubuntu and every other kind of Linux out there (if it's not, a different shell will be packed with it, but Bash is the most common one).
Maybe something for later but I have seen a number of different Dev threads about getting started with AndroidDev, I know that I have seen at least about 10, all from different perspectives/starting points. One that I could find easily was the following:
http://forum.xda-developers.com/showthread.php?t=1778984
Check it out. Basically, says ... Linux (fundamentals), CLI (command line interface or shell, fluent), Java (fundamental), XML (medium), SDK (medium) and Time - to start with at least. Hope that is useful.