Intereting Posts
WebView не отображает css, как браузер? Ошибка Android Studio при нажатии на монитор устройства Android Публикация частного приложения Android для нескольких клиентов Не удалось скрыть диалоговое окно Разрешения Runtime Rails Android: проверьте, существует ли значение в общих настройках Активность не отображается в реестрах, когда приложение находится в фоновом режиме Как отключить «автопрокрутку» час на заданное значение минуты в выборе времени андроида Утечка памяти Android и Admob неожиданно хранят данные и значения кеша Почему вызываются фрагменты onCreateView, onCreate, onActivityCreated Автоматически отображать пользовательскую клавиатуру для EditText. Android Как хранить и извлекать изображения в базе данных Androidite SQL и отображать их на gridview Ошибка входа в Facebook на некоторых устройствах Android ConstraintLayout генерирует абсолютные значения Получить приложение Crittercism

Как связать любую библиотеку в приложении ndk

Из этого урока .

См. У меня есть одна предварительно построенная статическая библиотека, называемая stackoverflow.a и у нее есть stackoverflow.h

Теперь я хочу использовать функцию этой статической библиотеки в

ndk_demo.c // этот учебник имеет этот файл

Для этого внутри ndk_demo.c я добавил

 #include 'stackoverflow.h' 

редактировать

 inside `android-ndk-r7c` | apps | ndk_demo | ----------------- | | project Application.mk | -------------------- | | all other | folder jni | ------------------------------------------------------------------- | | | | | ndk_demo.c stackoverflow.h lib com_marakana Android.mk | _NativeLib.h | -------------------- | | Android.mk libstackoverflow.a 

Теперь Application.mk

 APP_PROJECT_PATH := $(call my-dir)/project APP_MODULES := ndk_demo stackover 

Теперь jni / Android.mk

 include $(call all-subdir-makefiles) LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ndk_demo LOCAL_SRC_FILES := ndk_demo.c LOCAL_STATIC_LIBRARIES := stackover include $(BUILD_SHARED_LIBRARY) 

Теперь jni / lib / Android.mk

  LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := stackover LOCAL_SRC_FILES := libstackoverflow.a include $(PREBUILT_STATIC_LIBRARY) LOCAL_PATH := $(call my-dir) 

Теперь из android-ndk-r7c запустите

 make APP=ndk_demo 

Он показывает мне ошибку, как

 Android NDK: Building for application 'ndk_demo' make: *** No rule to make target `build/core/ndk_demo.c', needed by `out/apps/ndk_demo/armeabi/objs/ndk_demo/ndk_demo.o'. Stop. 

Почему это происходит, я не получаю?

Если я комментирую

 #include $(call all-subdir-makefiles) 

Это из jni/Android.mk после чего появляется следующая ошибка

 Android NDK: Building for application 'ndk_demo' Compile thumb : ndk_demo <= ndk_demo.c SharedLibrary : libndk_demo.so ./out/apps/ndk_demo/armeabi/objs/ndk_demo/ndk_demo.o: In function `Java_com_marakana_NativeLib_hello': /home/jeegar/android-ndk-r7c/apps/ndk_demo/project/jni/ndk_demo.c:10: undefined reference to `stackoverflowInit' collect2: ld returned 1 exit status make: *** [out/apps/ndk_demo/armeabi/libndk_demo.so] Error 1 

Когда вы получаете «make: * No rule to make target« something.c », это просто означает, что он не может найти файл.

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

 (doesn't matter which directory) | -->(ndk_demo) -->-->(jni) -->-->-->Application.mk -->-->-->Android.mk -->-->-->com_marakana_NativeLib.h -->-->-->ndk_demo.c -->-->(stackoverflow) -->-->-->stackoverflow.h -->-->-->libstackoverflow.a 

Тогда я бы использовал следующий make-файл:

Android.mk:

 LOCAL_PATH := $(call my-dir) ### include stackoverflow as a prebuilt lib ### include $(CLEAR_VARS) LOCAL_MODULE := stackoverflow-prebuilt LOCAL_SRC_FILES := ../stackoverflow/libstackoverflow.a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../stackoverflow include $(PREBUILT_STATIC_LIBRARY) ### build your ndk lib ### include $(CLEAR_VARS) LOCAL_MODULE := ndk_demo LOCAL_C_INCLUDES := $(LOCAL_PATH) \ $(LOCAL_PATH)/../stackoverflow LOCAL_SRC_FILES := ndk_demo.c LOCAL_LDLIBS := -llog LOCAL_STATIC_LIBRARIES := stackoverflow-prebuilt include $(BUILD_SHARED_LIBRARY) 

И следующее:

Application.mk:

 APP_MODULES := ndk_demo APP_PLATFORM := android-8 

Затем, наконец, я перейду в каталог (ndk_demo) и запустил ndk-build.

Ndk-build – это инструмент сборки android. Вы должны использовать его. Его можно найти по адресу:

 (AndroidSDK)/(NDK)/ndk-build 

Если вы используете окна, вам нужно либо ввести полный путь ndk-build в консоль, либо добавить переменную среды в свою систему, прежде чем пытаться ее запустить.

http://www.windows7hacker.com/index.php/2010/05/how-to-addedit-environment-variables-in-windows-7/