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. Вот последовательность, которая сработала для меня.
- Откройте Свойства проекта -> Сборка C/C++ -> Редактор инструментов Chan
- В разделе
Used Tools
замещатьAndroid GCC Compiler
сGCC C Compiler
, Если раздел пуст, просто добавьтеGCC C Compiler
вход туда. Откройте " Свойства проекта" -> " Общие сведения о 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
Нажмите кнопку ОК, очистите и заново соберите проект. Все ошибки должны уйти. Если они остаются, попробуйте удалить их из окна "Проблемы" и заново построить проект.
Обновление: я нашел другое место, где вы можете добавить пути для включения файлов. Однако, похоже, что это зависит от версии Eclipse. Настройки проекта -> Общие положения C/C++ -> Пути процессора, макросы и т. Д. -> Записи настроек пользователя CDT -> Добавить. После того, как я добавил пути, перечисленные выше, больше нет проблем компиляции. Развитие снова весело.
Да, это вызвано тем, что IDE не знает, где находятся все ваши заголовки и любые библиотеки, на которые вы ссылаетесь снова. Ошибки генерируются системой автозаполнения / ошибок IDE. Вы можете исправить ваши включения в затмении или удалить их как ошибки в настройках.
У меня была похожая ошибка, и я решил ее, перейдя в раздел project->properties->discovery options и изменив профиль обнаружения с управляемой системы сборки на GCC, после перехода на GCC C Complier из Android GCC Compiler и обновления включаемых каталогов.