2015-01-05 2 views
0

Я начал работать над NDK - Native Development Kit, используя JNI.Собственные библиотеки и документация NDK для Android.

В моем понимании НДК содержит: 1. Исходный код, содержащий набор .so библиотеки (и файлов C/C++ заголовка), каждая из специально скомпилирован для другой архитектуры Android: такие как ARM, MIPS, x86 , которые предоставляют нам некоторые API c/C++ для Android-устройства. 2. Цепочка инструментов, которая отвечает за сборку для каждой архитектуры Android.

Пример работы с NDK:

Я использую в моем приложении кода, то LogCat в C++, для этого я добавил к моему Android.mk (в Android-студий - в Gradle свойство):

LOCAL_LDLIBS := -llog 

И в моей C++ кода я включать заголовок:

#include <android/log.h> 

И я вижу, файл заголовка в: \ platform \ android-21 \ arch-arm \ usr \ include \ android \ log.h и файл lib в: \ platform \ android-21 \ arch-arm \ usr \ lib \ liblog.so

Мои вопросы:

  1. Не все интерфейсы, которые существуют в рамках Java SDK существует в НДК Framework, не так ли?

  2. Если я прав около 1: пока кажется, что работать с журналом очень легко, как узнать, какие API поддерживаются, а какие нет? Например, есть ли lib для использования камеры/flashlight/gps/Запись на хранение или для этого мне нужно использовать код Java? Я не видел ясного API или документацию об этом, а не в официальном http://developer.android, а не в документах, предоставляемых в установке NDK (stableAPIs. html содержит минимальное описание для минимального набора API), а не во многих вопросах, которые я читал в StackOverFlow.

  3. Это другая тема. Компилятор NDK для разных архитектур Android основан на GCC для компиляции нашего C++ код справа? и как я могу узнать, какую версию C++ использую?

Благодаря

ответ

1
  1. справа.

  2. В каталоге NDK, перейдите к docs, откройте Start_Here.html, затем нажмите на Stable APIs для списка интерфейсов, поддерживаемых НДК. Обратите внимание, что вы можете вызывать Java-API из кода C++ через Java Native Interface (JNI), но это отдельная тема (и немного более продвинутая).

  3. В комплект поставки NDK входят как GCC, так и Clang/LLVM toolchains.
    По версии C++, вы на самом деле имеете в виду компилятор версии?Если вы имеете в виду версию компилятора, то вы можете указать, какой из них вы хотите использовать, если вам требуется конкретная версия:

    # Specify that you want GCC 4.8 to be used. This goes in your Application.mk file NDK_TOOLCHAIN_VERSION := 4.8

Если вы на самом деле означает C++ версии, то если вы Явно не указано стандарт (например, с -std=c++11 или -std=c++1y), вы, вероятно, получаете стандарт C++ 98 (возможно, с некоторыми расширениями).

+0

Спасибо за ваш комментарий! :) это ответ на мои вопросы. только что касается вопроса 2, я уже видел раздел «Стабильные API» в html, но он кажется очень плохим. Например, я хотел бы теперь работать с датчиками, и в API-интерфейсах Stable есть только 1 лайнер: « Прослушивать входные события и датчики непосредственно из собственного кода " Так что теперь я должен явно перейти к файлу заголовка, чтобы попытаться понять. И если мне нужна документация о библиотеках и их API, это кажется не существовавшим. Нет ли другого документа? – ZiviMagic

+0

Вы можете взглянуть на образец программы native-activity, который поставляется вместе с NDK. Он использует акселерометр. – Michael

+0

Yup, но я не был специально настроен в реализации датчика, это было как пример ... Я принимаю ваш ответ так спасибо :) Я хотел создать отдельное сообщение, но, возможно, вы знаете, почему я не могу получить автоматическое завершение работы при написании кода C++ для этих собственных методов API в AndroidStudios? – ZiviMagic

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