2016년 4월 28일 목요일

Here's an example project that follows the KennyTM's answer. You can create it from scratch or modify another project, for example, hello-jni in the NDK samples.
jni/main.c:
#include 
int main() {
    printf("hello\n");
    return 0;
}
jni/Application.mk:
#APP_ABI := all
APP_ABI := armeabi-v7a
jni/Android.mk:
LOCAL_PATH := $(call my-dir)

# first target: the hello-jni example
# it shows how to build multiple targets
# {{ you may comment it out
include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
LOCAL_LDLIBS := -llog -L$(LOCAL_PATH)/lib -lmystuff # link to libmystuff.so

include $(BUILD_SHARED_LIBRARY)
#}} you may comment it out


# second target
include $(CLEAR_VARS)

LOCAL_MODULE := hello
LOCAL_SRC_FILES := main.c

include $(BUILD_EXECUTABLE)    # <-- an="" build="" executable.="" span="" this="" to="" use="">
I have to note that you will not see any logging in the stdout output, you will have to use adb logcatto see it.
So if you want logging:
jni/main.c:
#include 
#include 
int main() {
    printf("hello\n");
    __android_log_print(ANDROID_LOG_DEBUG  , "~~~~~~", "log %i", 0); // the 3rd arg is a printf-style format string
    return 0;
}
and the corresponding section in jni/Android.mk becomes:
LOCAL_PATH := $(call my-dir)

#...

include $(CLEAR_VARS)

LOCAL_MODULE := hello
LOCAL_SRC_FILES := main.c
LOCAL_LDLIBS := -llog   # no need to specify path for liblog.so

include $(BUILD_EXECUTABLE)    # <-- an="" build="" executable.="" span="" this="" to="" use="">

댓글 없음:

댓글 쓰기