1

我是 NDK 构建系统的新手,虽然我非常了解 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-----------

提前感谢您的帮助。有没有我可以通过的文件。我没有找到任何详细解释复杂的多子目录构建系统构建的东西。

谢谢,阿南德

4

1 回答 1

-1

请按照以下步骤操作,它可能对您有所帮助。

  1. 首先创建 Android 项目。然后在项目中创建“jni”文件夹。
  2. 将您的 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 是在运行项目后在 libs 文件夹上创建的库,您应该调用内部活动。

sample.c 是包含对导出到 Activity 很重要的 JNI 导出方法的 c 文件。

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是 MethodName jint是 int 值

  1. 转到项目上的右键单击 -> 属性 -> 构建器选项卡 -> 选择新建 -> 选择程序。窗口将打开->选择位置->选择浏览文件系统->转到NdkFolder并选择ndk-build文件,然后在工作目录中选择浏览工作区->选择您的项目并选择jni文件夹。
于 2013-06-17T12:18:52.250 回答