Friday, November 14, 2008

Add a new component into open source Android

The android build system is complicated. It is not easy to create a simple build script to build single component. But it is much easier to add a new component into the build system. Here is a sample to build the "Hello world!" for Android, and it is dynamic linked executable.

  1. create a directory for the new component in $(YOUR_ANDROID)/external folder: $(YOUR_ANDROID)/external/hello
  2. put the hello.c into the directory: $(YOUR_ANDROID)/external/hello/
  3. create in $(YOUR_ANDROID)/external/hello/ directory, the likes the following:
    LOCAL_PATH:=$(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_ARM_MODE := arm
    LOCAL_MODULE := hello
    include $(BUILD_EXECUTABLE)
  4. add the following line into $(BUILD_SYSTEM)/,$(BUILD_SYSTEM) is in $(YOUR_ANDROID)/build/core:
  5. launch the build command in $(YOUR_ANDROID): make hello
you will have the build target hello in $(YOUR_ANDROID)/out/target/product/generic/system/bin.
You can use include $(BUILD_SHARED_LIBRARY) to create shared library. Find more in $(YOUR_ANDROID)/build/core/


Kenny said...

thanks for the post. i don't understand the following step that you mentioned: (step #4):

"add the following line into $(BUILD_SYSTEM)/,$(BUILD_SYSTEM) is in $(YOUR_ANDROID)/build/core:

My question is that _where in the main.mk_ should i add the line to? :)


rtm said...

Did you find the external/zlib in Append your lines after that.

Naanlu said...

why is that every one suggests that the new modules should be added in external/ folder only.Say i have an file in packages/inputmethods/hello/.How do include this in the build so that my is also included while the complete code is built.

fastzap said...

From what I can tell if you have anywhere in your build tree build/tools/ will find it and include it in the make.

Gary said...

I want to know what is an android used for, I also wonder if an android uses stuff like Generic Viagra or such

sasha said...

There are hundreds of great free Android weather apps that more than make up for the lack of paid weather apps in the Android market.

best android apps

best iphone apps

Rupesh said...

In my /build/core/ file, no entry of extrenal/zlib.
I am using Android source code of version 5.0
The entry of external/zlib in file is upto the Android verion 4.2 .
From version 4.3 and later there is no such a entry in file.
So what to do in that case ?