Вопросы о том, как файлы build .c

#android

#Android

Вопрос:

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

http://code.google.com/p/android-serialport-api/source/browse/#svn/trunk/android-serialport-api/project/jni

Вопросы:

1) Как создаются файлы .c? Нужно ли мне загружать NDK? Я предполагаю, что файл .c запускается непосредственно виртуальной машиной или как? Или исполняемый файл для .c находится в каталоге libs? Если да, то как мне использовать libserial_por.so файл?

Спасибо!

Ответ №1:

Файлы .c встраиваются в библиотеку путем запуска ndk-build в каталоге проекта. Вам нужен NDK.

Файлы .c не запускаются виртуальной машиной напрямую, а скорее создается библиотека в libs каталоге, которая затем загружается вместе с SerialPort классом.

Чтобы использовать библиотеку, просто используйте SerialPort класс, у которого уже есть привязки к библиотеке.


Файлы C будут скомпилированы в двоичную библиотеку ARM с расширением.итак, по NDK. Взгляните на документацию NDK, раздел «Начало работы с NDK», чтобы узнать, как его использовать.

По сути, вы помещаете свои файлы .c в jni каталог, изменяете Android.mk , чтобы указать способ их компиляции, затем запускаете ndk-build для сборки библиотеки. Полученные lib<name>.so данные будут помещены в lib каталог. Затем вы используете свою библиотеку в проекте Java с System.loadLibrary('<name>') .

Это, конечно, означает, что библиотека должна иметь интерфейс JNI, чтобы вы могли использовать его с приложением Java, поскольку Android пока не поддерживает JNA.

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

Комментарии:

1. Спасибо. Итак, файл в каталоге lib является результатом сборки .c. Это означает, что у меня уже есть файл .so, который мне нужен. Хорошо.

2. Если у вас это уже есть, то все в порядке, вам не нужно его перестраивать.

3. Итак, если я просто оставлю файл .so в каталоге lib и запущу Eclipse, он найдет библиотеку (файл .so) в каталоге lib? Или я должен сделать что-то особенное, чтобы сообщить ему, что файл .so существует?

4. Eclipse не должен заботиться о библиотеке или знать, что с ней делать. Однако он упакует его в .apk, и он должен работать в эмуляторе без каких-либо дополнительных действий.