Add C/C++ codes into AS project
Paste_Image.png- create jni folder under main, jni and java folder are the same parent location
- copy C and C++ files into jni folder
- create Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := gifflen //lib name
LOCAL_SRC_FILES := gifflen.cpp //src file
LOCAL_LDLIBS += -llog // linked library
include $(BUILD_SHARED_LIBRARY) //generate dynamic library
config build.gradle
Paste_Image.pngopen the build.gradle under app folder
Paste_Image.pngadd ndk module, the moduleName is mandatory, the ldLibs must set as above, some docs mentioned config ldLibs as ldLibs += "log", my AS will report error.
create java class for you c code
- create java class
static{
System.loadLibrary("gifflen");
}
means load the library
public native void Close();
public native int AddFrame(int[] pixels);
public native means declare the functions you want to use in java
- change the jni name
find you pakage name in you java class
Paste_Image.pngnow open the file which include the functions you want to invoke
Paste_Image.pngyou'll find the JNIEXPORT name is "java_"+"package name"+"java class name"+"function name"
the picture is just the function declare, don't forget to change the real function name.
- if you files include C and C++ files, don't forget add
#ifdef __cplusplus
#endif
in you C files, or the AS will report error
Generate Libs
now, you can go to the jni folder, and generate libs
Paste_Image.pngfind the libs in
Paste_Image.pngbecause I didn't config in build.gradle which platform I prefer, so ndk compiled all platforms libs
and next you could use jni gladly
how to add NDK in AS
Paste_Image.pngclick the top button, and choose NDK and ok button. AS will download NDK automatically.
if done, you can find the ndk in "Android/sdk/ndk-bundle", and then export ndk-build PATH "export PATH=$PATH:/usr/local/bin:/Users/liut1/Library/Android/sdk/ndk-bundle"
check out the ndk path in the local.properties of your AS project, if error, correct it, if miss, add it.
网友评论