2013-06-17 2 views
1

Я новичок в NDK Build system, хотя знаю GNU. Хорошо.Android NDK: Библиотека не построена

Я пытаюсь определить систему сборки для моего проекта с помощью одной библиотеки и тестовой заглушки для тестирования библиотеки.

У меня есть следующая настройка, которая работает, но я не доволен ею.

--------------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/библиотеки, но не работает с JNI. Из jni-каталога он не создает библиотеку и просто удаляет существовавший ранее lib и создает новый пустой архив.

Я бы действительно хотел сделать следующее.

---------------------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----------- 

Заранее благодарим за любую помощь. Есть ли какая-либо документация, которую я могу пройти. Я не нахожу ничего, что подробно объясняет создание сложной системы построения нескольких подкаталогов.

спасибо, Анандом

ответ

-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 - это c-файл, содержащий методы экспорта JNI, важные для экспорта в Activity.

3.Paste follwoing коды в 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. Goto rightclik on project -> properties-> вкладка builder -> выберите New -> выберите Program. откроется окно -> выберите «Местоположение» -> «Выбрать файловую систему» ​​-> «Перейти к NdkFolder» и «Выбрать файл ndk-build», затем в «Рабочий каталог». Выберите «Обзор рабочей области» -> выберите проект и выберите папку jni.
+0

Извините, Gva. Есть несколько моментов, которые вы пропустили. 1) Мне нужна статическая библиотека 2) У меня уже есть библиотека C. 3) Я могу заставить его работать с одним файлом Android.mk. 4) Я хочу настроить его для нескольких каталогов с иерархией файлов mk. 5) Я не использую Java в своем проекте. –

Смежные вопросы