Android NDK build, метод не может быть решен

У меня есть проект Android с нативным кодом. Я могу собрать собственный код из командной строки, вызвав ndk-build Команда без ошибок или предупреждений. Но когда я открываю его в ADT, он показывает следующую ошибку.

введите описание изображения здесь

Сообщение об ошибке: Method CallStaticIntMethod could not be resolved. В проекте много файлов с похожими ошибками.

Я дважды проверил конфигурацию и вот что у меня есть. Android-сборка, цепочка инструментов и включения правильно настроены (см. Рисунки ниже)

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Обязательные включения также отображаются в Project Explorer и являются действительными (не пустыми и указывают на правильные заголовочные файлы).

введите описание изображения здесь

Но когда я Clean проект и Build это, ошибки все еще там. Есть идеи, как это решить?

Конфигурация: ADT 22.6.2, NDK r9d (64-разрядная версия), OSX 10.9.2

3 ответа

Решение

После некоторой борьбы с предпочтениями я наконец нашел решение. Это ошибка в плагине NDK, которая была передана в AOSP, но еще не исправлена. Прошлое ответа описано в комментарии № 50. Вот последовательность, которая сработала для меня.

  1. Откройте Свойства проекта -> Сборка C/C++ -> Редактор инструментов Chan
  2. В разделе Used Tools замещать Android GCC Compiler с GCC C Compiler, Если раздел пуст, просто добавьте GCC C Compiler вход туда.
  3. Откройте " Свойства проекта" -> " Общие сведения о C/C++" -> " Пути и символы" и добавьте каталоги, в которых находятся ваши h-файлы. Используйте кнопку "Вверх", чтобы добавить папку с локальными включениями (/AudioPlayer/jni в моем случае) на первое место. Затем добавьте платформу и наборы инструментов. Встроенные включения должны оставаться в самом низу.В моем случае полные пути к цепочкам инструментов были, как показано ниже. Это встроенные пути оригинальных Android GCC Compiler набор инструментов, который мы заменили на шаге 2.

    /Tools/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include
    /Tools/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include-fixed
    
  4. Нажмите кнопку ОК, очистите и заново соберите проект. Все ошибки должны уйти. Если они остаются, попробуйте удалить их из окна "Проблемы" и заново построить проект.

Обновление: я нашел другое место, где вы можете добавить пути для включения файлов. Однако, похоже, что это зависит от версии Eclipse. Настройки проекта -> Общие положения C/C++ -> Пути процессора, макросы и т. Д. -> Записи настроек пользователя CDT -> Добавить. После того, как я добавил пути, перечисленные выше, больше нет проблем компиляции. Развитие снова весело.

Да, это вызвано тем, что IDE не знает, где находятся все ваши заголовки и любые библиотеки, на которые вы ссылаетесь снова. Ошибки генерируются системой автозаполнения / ошибок IDE. Вы можете исправить ваши включения в затмении или удалить их как ошибки в настройках.

У меня была похожая ошибка, и я решил ее, перейдя в раздел project->properties->discovery options и изменив профиль обнаружения с управляемой системы сборки на GCC, после перехода на GCC C Complier из Android GCC Compiler и обновления включаемых каталогов.

Другие вопросы по тегам