[英]Android NDK: Library doesn't build
我是NDK Build系统的新手,尽管我非常了解GNU Make。
我试图用一个库和一个测试存根的测试存根为我的项目定义构建系统。
我有以下设置,可以进行哪些工作,但我不满意。
--------------jni/Android.mk--------------
# A simple test for the minimal standard c library
LOCAL_PATH := $(call my-dir)
MY_LOCAL_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
include $(LOCAL_PATH)/library/Android.mk
---------------jni/Android.mk------------------
-------------jni/library/Android.mk----------------------
# A simple test for the minimal standard c library
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#LOCAL_CFLAGS := -g -DDEBUG
LOCAL_C_INCLUDES := $(LOCAL_PATH)/inc
LOCAL_MODULE := lteDiag
LOCAL_SRC_FILES := $(wildcard src/*.c)
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
#LOCAL_CFLAGS := -g -DDEBUG
LOCAL_C_INCLUDES := $(LOCAL_PATH)/inc
LOCAL_MODULE := DiagAppf
LOCAL_SRC_FILES := ../test_stub/test.c
LOCAL_STATIC_LIBRARIES := lteDiag
include $(BUILD_EXECUTABLE)
----------------------jni/library/Android.mk-----------
如果我在jni / library下运行ndk-build,则此设置有效,但不适用于jni。 从jni目录中,它不会构建库,而只是删除先前存在的库并创建一个新的空存档。
我实际上想做以下事情。
---------------------jni/Android.mk---------------
# A simple test for the minimal standard c library
LOCAL_PATH := $(call my-dir)
MY_LOCAL_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
include $(LOCAL_PATH)/DM_Library/Android.mk
include $(CLEAR_VARS)
#LOCAL_CFLAGS := -g -DDEBUG
LOCAL_PATH := $(MY_LOCAL_PATH)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/DM_Library/inc
LOCAL_MODULE := DiagAppf
LOCAL_SRC_FILES := test_stub/test.c
LOCAL_STATIC_LIBRARIES := lteDiag
include $(BUILD_EXECUTABLE)
---------------jni/Android.mk---------------
-----------------jni/library/Android.mk-----------------
# A simple test for the minimal standard c library
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#LOCAL_CFLAGS := -g -DDEBUG
LOCAL_C_INCLUDES := $(LOCAL_PATH)/inc
LOCAL_MODULE := lteDiag
LOCAL_SRC_FILES := $(wildcard src/*.c)
include $(BUILD_STATIC_LIBRARY)
--------------------jni/library/Android.mk-----------
在此先感谢您的帮助。 有没有我可以查阅的文件。 我找不到任何能详细解释复杂的多个子目录构建系统构建的内容。
谢谢,阿南德
请按照以下步骤操作,可能会对您有所帮助。
将您的c文件放在jni文件夹中,然后创建一个新文件,并将其命名为Android.mk,然后输入代码。
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := samplelib LOCAL_SRC_FILES := sample.c include $(BUILD_SHARED_LIBRARY)
samplelib是使用此u运行项目后在libs文件夹上创建的库,您应该在内部调用该库。
sample.c是包含JNI导出方法的c文件,该方法对于导出到Activity很重要。
3.将以下代码粘贴到sample.c文件中,
jint Java_com_example_ndkdemo_ADD (JNIEnv* env, jobject thiz,jint number1,jint number2)
{
int value = add(number1,number2);
return value;
}
在方法“Java_com_example_ndkdemo_ADD”,Java是关键字com_example_ndkdemo是包名“com.example.ndkdemo” ADD是方法名jint是int值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.