#android
#Android
Вопрос:
Я пытался реализовать API для последовательного порта, найденного на веб-странице ниже. Я новичок во всем этом, и я уверен в том, на что я смотрю:
Вопросы:
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, и он должен работать в эмуляторе без каких-либо дополнительных действий.