This is definitely not for the faint-hearted! It is complicated enough that I thought it'd be useful to run through in a blog entry.
So, here is a summary of what to do, in order to get started with using the Android software under both Mac and Windows.
1. Get the latest Sun Java SE Development Kit
Windows: You can get this from here:
http://java.sun.com/javase/downloads/index.jsp
Mac: You should already be up-to-date, assuming you have XCode installed
2. Get Eclipse
I downloaded the latest version of the "Eclipse IDE for Java Developers" from here:
http://www.eclipse.org/downloads/
Windows: Unzip, and then put a shortcut to eclipse.exe somewhere where you can find it!
Mac: Unstuff, and put Eclipse to your Applications folder.
3. Get the base Android SDK (1.5 or later!)
As we're doing to be doing NDK development, make sure you get Android 1.5 or later from here:
http://developer.android.com/sdk/index.html
Make sure you follow the appropriate instructions for installing/upgrading (depending on what current system you might already have)
Windows: When you unzip the file, make sure that it goes under the c:\ root folder... i.e. so it looks like this (for example):
c:\android-sdk-windows-1.5_r3
Mac: Put this under your home folder, so it looks like this (for example):
~/android-sdk-windows-1.5_r3
4. Windows: Get Cygwin
The cygwin toolchain is required for NDK development if you're using Windows.
So, make sure you have cygwin installed! You can get this from here:
http://www.cygwin.org
... note that you'll need the C/C++ developer tool packages.
Mac: users already have a suitable toolchain built-in through XCode.
5. Get the Android NDK
Get the latest Android NDK, from the "Native Development Tools" in the sidebar on in the sidebar on this page:
http://developer.android.com/sdk/index.html
Windows: When you unzip the files, make sure you copy them such that they are under the C:\ root folder, i.e. so that they look like this:
c:\android-ndk-1.5_r1
... if you leave them under e.g. My Documents, then the system will fail to build your source code due to spaces in the file paths etc.
Mac: Put this under your home folder, so it looks like this (for example):
~/android-ndk-1.5_r1
Make sure you follow the instructions that are in DOCS/INSTALL.TXT ...!!!
6. Windows: My Computer - path
Remember to follow instructions on setting your path variable!
Basically, append something like the following (which you'll have to change if you ever come to upgrade)
;c:\android-sdk-windows-1.5_r3;c:\android-ndk-1.5_r1
7. Create your first AVD
You can create your first AVD to be called something like my_android1.5 ... make sure you base it on the Android 1.5 SDK!
You can do this from Eclipse; and more information is available here:
http://developer.android.com/guide/developing/tools/avd.html
Test that you set-up the NDK properly
The following steps will create the following file:
out/apps/hello-jni/android-1.5-arm/libhello-jni.so
Windows:
start cygwin
cd /cygdrive/c/android-ndk-1.5_r1
make APP=hello-jni
Mac:
Run Terminal
cd ~/android-ndk-1.5_r1
make APP=hello-jni
8. Create your first basic Android Project
Now follow the instructions here:
http://developer.android.com/guide/developing/eclipse-adt.html#CreatingAProject
... and if you're lucky, it will build and run, and you can then get on with the JNI/NDK side of things!
9. Create and build/run your first NDK project
You can now create your first NDK project using JNI, and build/run it, following the steps you'll find here:
http://developer.android.com/sdk/ndk/1.5_r1/index.html#samples
Easy!
9 comments:
Nice tutorial on how to get started! Helped me a lot.
Greetings
Willem-Jan
Hi Willem-Jan,
I'm very pleased to hear that you found this useful; many thanks for the feedback!
Pete
Following your tutorial, I was able to get the NDK installed and was able to build the sample Hellojni application. I installed it on the phone simulator, and it seemed to work OK.
However, if I go and change the hello-jni.c file (e.g. change the text string that is returned), my changes to not show up. I rebuilt the shared 'c' library, and the Eclipse project but that didn't help.
Do you have any sage words of advice?
Thanks
Hi John,
Yes, this one is quite easy luckily!
The problem is that Eclipse doesn't fully understand the dependency between your C code/library and your project; one of the many reasons why I don't like developing for Android :)
To work around this, I have configured my copy of Eclipse to use manual build (I have been unable to rely on the automatic rebuilding which is enabled by default...)
So, assuming you have manual rebuilding set-up through Eclipse: whenever you have rebuilt your underlying shared library, you must force your project to rebuild the package and redeploy.
To achieve this, I simply add a space to one of the Java wrapper file sources, remove the space, save the modified file (!) and then select project rebuild from the menu. Your changes should then be picked-up OK!
Hoping this helps, and with best wishes,
Pete
Yes, that seems to work, thanks.
I have a second question, if you would be so kind. How the heck do you debug your C/C++ code? I found some help with Google searches, but they seem to be mostly for a Linux environment.
Thanks.
This is where things become almost impossible with Android. Until such time as Google properly integrate C++/C development within the development environment, we're all a bit stuffed and are stuck with trace output (you can review this using adb) and no direct debugging. Which makes things very, very hard (e.g. porting Mixtikl - which is > 250K lines of C++ ... ! ... for which I really need better tools from Google!).
I've tried out many different suggestions on the net, and none of them have allowed me to set breakpoints or see a stack trace that is of any use! If I knew how to do this, I'd certainly spread the word on this blog. :)
If you find a solution, I'd really like to hear of it!
Best wishes,
Pete
Sigh, that is what I was afraid of considering the dearth of information about it on the internet.
I have found some information that might be helpful under Linux, and I am considering setting up a virtual Linux machine to try it out. I will let you know if I have any success.
Thanks for all your help.
nice tutorial...can u tell how to start ndk to get work on ubuntu platform
Post a Comment