This article's purpose is to generate a static/shared library which can be used in android ndk.
Software Version:
1.Install Android-ndk and Cygwin
Install NDK.Download the zip file and unzip it to the destination folder.my is D:\Android\android-ndk-r8
Edit file \cygwin\home\user_name\.bash_profile,if you can't find the file in this location,copy the cygwin\etc\skel\.bash_profile to here,add the following to the end:
# Android NDK
NDK=/cygdrive/<yourdrive>
export NDK
My:
ndk=/cygdrive/D/Android/android-ndk-r8
export ndk
ndk is a custom name ,you can change it.
Save and restart cygwin.Go to D:\Android\android-ndk-r8\samples\hello-jni\jni :
cd $ndk/samples/hello-jni/jni
If you can't use $ndk,use /cygdrive/D/Android/android-ndk-r8
2.Compile
execute command:$ndk/ndk-build or /cygdrive/D/Android/android-ndk-r8/ndk-build in your project folder,make sure you folder like the following:
or you'll get error about directory.You just need to put your c/c++ code in the jni folder and write a Android.mk similar with the demo,about the others,you can copy from the demo.And the you can find the library in libs folder:
Pay attention to these content of google document:
Required development tools
If you installed the wrong version,you may get the error of the following pictrue:
My project :
first.c:
#include "first.h" int first(int x, int y) { return x + y; }
first.h:
#ifndef FIRST_H #define FIRST_H extern int first(int x, int y); #endif /* FIRST_H */
Android.mk:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libtwolib-first LOCAL_SRC_FILES := first.c include $(BUILD_SHARED_LIBRARY)
Then you can use the first method of libtwolib-first.so in your c/c++ program.