Compile skia for android on Mac Lion

Some time ago I started to look at skia as possible solution for graphics 2D editing for a native android project I was developing.
Well, even if skia is part of the android system and it’s used everywhere by android itself, trying to include skia in my project was quite an hell..
Looking for resources I just found old examples and tips, and every try was just a failure.. but since android uses skia internally to do graphics operations I decided to look into the android project.

After downloading the skia module from the android git repository I just realized it couldn’t be compiled by itself because it has external dependencies. So next step was to download and compile the whole android source code. Easy task? not at all, at least if you’re on a mac running Lion!

At the end I managed to compile everything and build the skia module as static module, in this way now my project can link the skia library and include correctly the skia headers.

Ok, I don’t have the whole procedure step by step here, first of all because it depends on the android version you’re going to compiled, second and most important because I didn’t write down all the steps 🙂 So this is more a sort of list of notes about compiling android on Lion and a reminder for myself too. ( I was trying to compile android 2.2 using “generic-user” as lunch configuration )

Build Android: http://source.android.com/source/initializing.html

To get rid of clearsilver errors: http://code.google.com/p/android/issues/detail?id=993#c27

Java 1.5 version complaining: http://wiki.oneswarm.org/index.php/OS_X_10.6_Snow_Leopard

Well, the first time you’ll try to “ I Can Do My Assignment make” everything probably you’ll get this error:

1
./external/elfutils/config-compat-darwin.h:42: error: static declaration of ‘strnlen’ follows non-static declaration

modify ./external/elfutils/config-compat-darwin.h.
replace:

1
2
3
4
5
6
7
static inline size_t strnlen (const char *__string, size_t __maxlen)
{
int len = 0;
while (__maxlen-- && *__string++)
len++;
return len;
}

with:

1
2
3
4
5
6
7
8
9
#if 0
static inline size_t strnlen (const char *__string, size_t __maxlen)
{
int len = 0;
while (__maxlen-- && *__string++)
len++;
return len;
}
#endif

Well, at the end of the process I just edited the Android.mk makefile into external/skia adding a new entry for BUILD_STATIC_LIBRARY and the next command was simply:

1
mmm external/skia

which produced the required libskia.a file to be linked in my project.

How-to debug native code with Android

This is a step by step guide for executing and debugging native code on Android with Eclipse.

1. Prerequisites

The SDK version used for this guide is Froyo with the NDK r4b ( crystax release ).
Also Eclipse CDT plugin it’s very useful for our purposes, so install it.
Last plugin to install it’s the Sequoyah plugin for Eclipse.

2. Project setup

At this point let’s create a new Android project, name it “Example” and use the “com.darkwavegames.com” package name, add also an Activity name of your choice.
Select Android 2.2 as base SDK version and complete the project wizard.

Now you need to add the native support for the newly created project. Just right click on the project root element in the package explorer and select “add native support”.

In the next dialog write the path of your NDK folder and give also name for your library.
After this operation a new folder “jni” will be created with a .cpp file, header filer and an Android makefile, Android.mk, which can be edited to modify all the includes, linker and compiler options. In the Android.mk file you also need to specify all the source file you want to use within the LOCAL_SRC_FILE directive.

3. Debug

In order to enable debug of native code in Android you have to face different problems, based also on the device and the firmware version, and if the native code is multi thread or single thread.
First of all you need to mofify the AndroidManifest.xml file adding the attribute “debuggable” to true ( remember also to enable the “Debug USB” option under the Application device menu ).
At this point you can debug all the java code within your eclipse debugger, for for the native C debug you need more steps.

Continue reading

Android: Create your own sharing app

One of the first applications I did for Android was a very simple application which simply takes a picture using Camera and then send it to a remote server. Very simple, but it introduced to me into the android world and the notion of activities and communication between different applications.
A little addition to this application I wanted to make was the possibility to share any of the pictures already taken. To do that I wanted to add the application to the list of the choices which appear when an user click on the “share” button when view an image using the default Gallery application.

Continue reading

Haxe got (awesome) macros!

Hi guys, It has been a while since I posted the last time.
However I felt like it was the right moment to go back on the blog, to talk you about the new awesome Haxe macro system.

As you can read on Nicolas’s blog, they’re only present in the latest SVN update, but they will be included in the next build as soon as they will be perfect.
I must say I’m extremely happy about that addition: one of the most important reasons I’m so happy is the fact that instead of implementing an old-and-bording Macro system ala C/C++, Nicolas decided to go for a much more powerful macro system, which allows typesafe macros and real runtime code generation.

You are not limited to simple stuff like replace a macro call with a block of source code, but you can generate any kind of valid AST expressions that will be evaluated by the macro preprocessor at compile time.
Moreover you have access to almost the whole neko library (io, net, etc) which means you can write extremely powerful code generators and DSL! That’s an awesome feature – really.

Give it a look!

Amethyst Actionscript editor

amethyst screenshotIt’s since the first time I used Eclipse that I’m waiting for an actionscript editor non eclipse based!

I never like eclipse and hated all its problems.
Unfortunately Adobe decided to implement its editor over eclipse and also other nice editors, like fdt, used the eclipse framework to build their own editors.
I used Visual Studio for a while but that was enough to make me fall in love with it.
Visual Studio is indeed the best editor at all, without doubts!
Finally I discovered an interesting project for editing actionscript projects integrated into Visual Studio.
Amethyst is still in beta and probably too premature to be used in large production environment, but it’s a great news for me.
I hope they’ll continue in the development and create a serious competitor for Flash Builder.
For more info visit their product page: http://www.sapphiresteel.com/Amethyst-Product-Page

H.264 can’t kill flash

This is another interesting reading about the current discussion about HTML5, video and Flash: http://blog.streamingmedia.com/the_…-cant-kill-off-the-other.html.

Sincerely this last crusade against flash is just annoying me ( the same way the first svg crusade against flash ). In my humble opinion I think that next year HTML5 will be already an old technology and everyone will forget this war.

Silverlight 3.0 beta

Today I discovered this page about the upcoming Silverlight 3.0 and I was really surprised about the ton of new features they are adding in this new release. In fact, reading at the features list it confusing me… it seems to me like I was reading a page with the flash player capabilities.. more or less.

If SIlverlight 2.0 was comparable, more or less to flash 5, I believe ( but I should test it before ) that this new version has quite all the features of flash 10.

Moreover, dont forget, Silverlight has a couple of advantages above flash: a more powerful vector rendering engine and threads capabilities.

Read the full article here: http://silverlight.net/themes/silverlight/getstarted/sl3beta.aspx?AspxAutoDetectCookieSupport=1#whatsnew

P.S. …just because I continued following links around MS pages I also came across a new feature microsoft will add to C#, one of those features I always envy to python: the named arguments. I really find it useful, instead of writing twenty null arguments ( like when you create a textformat… ) you simply call arguments by name.

Win a 3D Flash Gallery!

This is a great opportunity for all the readers! Thanks for flashloaded we’re giving 3 free licenses of 3D Wall Pro ($199/each).

To win the prize is very simple, just leave a comment to this post with at least “I want the license” text besides any other comment and after 12 days we will select randomly 3 winners! ( remember to leave your email in the comment )

What is 3D Wall?

The 3D Wall is a papervision powered component to isplays images on an engaging interactive 3D wall. This PRO version can also display FLV videos and SWF’s and more..

Some of the key features of the 3D Wall are:

  • Flat or curved wall
  • Customizable animations
  • Glow and reflections
  • Double sided thumbnails
  • Complete customizable properties (rows, columns, preloader…)
  • Complete interaction (keyboard or mouse)
  • Use of external xml configuration file
  • A Flash component inspector
  • Images, flv and swfs
  • Customizable video controls
  • Youtube, flickr images
  • Watermarks

Here’s a couple of screenshots:

See more screenshots at the 3D Wall page

REMEMBER: Winners will be selected randomly from commenters 10 days later (31 October 2008) and will be contacted directly via email.

Contest is over!

Today (1st November 2008) the contest is over! After running this mysql query to find out 3 random commenters:

1
SELECT * FROM mt_comment WHERE comment_entry_id = 268 order by RAND() LIMIT 3

we got the three winners who are: (5170) moon, (5135) Pieter and (5176) tm!