Question

I am trying to use pjsip on android.. after ./configure-android and make dep and make commands, static libraries were generated 13 of them.

I used the include folder which is copied inside jni folder. The content of android.mk in jni folder is as follows:

        LOCAL_PATH := $(call my-dir)
        include $(CLEAR_VARS)
        LOCAL_MODULE := libpj-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpj-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjlib-util-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjlib-util-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjmedia-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../voiper/pjsip_lib/libpjmedia-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjmedia-audiodev-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjmedia-audiodev-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjmedia-codec-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjmedia-codec-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjmedia-videodev-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjmedia-videodev-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjnath-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjnath-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjsdp-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjsdp-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjsip-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjsip-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjsip-simple-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjsip-simple-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjsip-ua-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjsip-ua-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjsua2-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjsua2-arm-unknown-linux-androideabi.a
        LOCAL_MODULE := libpjsua-arm-unknown-linux-androideabi
        LOCAL_SRC_FILES := ../pjsip_lib/libpjsua-arm-unknown-linux-androideabi.a
        include $(PREBUILT_STATIC_LIBRARY)
        include $(CLEAR_VARS)
        LOCAL_MODULE := dummy_pjsip_jni_module
        LOCAL_SRC_FILES := dummy_pjsua.c
        LOCAL_EXPORT_C_INCLUDES += ./include
        LOCAL_C_INCLUDES += ./include
        LOCAL_STATIC_LIBRARIES :=  libpj-arm-unknown-linux-androideabi libpjlib-util-arm-unknown-linux-androideabi libpjmedia-arm-unknown-linux-androideabi libpjmedia-audiodev-arm-unknown-linux-androideabi  libpjmedia-codec-arm-unknown-linux-androideabi libpjmedia-videodev-arm-unknown-linux-androideabi libpjnath-arm-unknown-linux-androideabi libpjsdp-arm-unknown-linux-androideabi libpjsip-arm-unknown-linux-androideabi libpjsip-simple-arm-unknown-linux-androideabi libpjsip-ua-arm-unknown-linux-androideabi libpjsua2-arm-unknown-linux-androideabi libpjsua-arm-unknown-linux-androideabi
        include $(BUILD_SHARED_LIBRARY)

I wrote a simple one line c file that only includes a header file inside include folder. Then i run ndk-build from the project directory and get no such file for the header file which is present inside the include folder. There is no application.mk.. What am i missing?

EDIT

the '.' represents the current directory.. "include" folder is inside jni folder

Was it helpful?

Solution

There are several issues here:

1) Each prebuilt static library should have its own module definition, i.e. your Android.mk should look like:

include $(CLEAR_VARS)
LOCAL_MODULE := libpj
LOCAL_SRC_FILES := libpj-arm-unknown-linux-androideabi.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libpjlib-util
LOCAL_SRC_FILES := libpjlib-util-arm-unknown-linux-androideabi.a
include $(PREBUILT_STATIC_LIBRARY)

... etc

Note that the module name doesn't have to be exactly the same as the file path, which makes things a little clearer for the rest.

2) That '.' will refer, at build time, to the current directory where you invoke ndk-build, you need to use $(LOCAL_PATH)/include instead to refer to the right include path (assuming your Android.mk is under jni/ too). I.e.:

include $(CLEAR_VARS)
LOCAL_MODULE := dummy_pjsip_jni_module
LOCAL_SRC_FILES := dummy_pjsua.c
LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/include
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include
LOCAL_STATIC_LIBRARIES :=  libpj libpjlib-util libpjmedia libpjmedia-audiodev \
      libpjmedia-codec libpjmedia-videodev libpjnath \
      libpjsdp libpjsip libpjsip-simple libpjsip-ua \
      libpjsua2 libpjsua
include $(BUILD_SHARED_LIBRARY)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top