Можно ли отлаживать C / C ++ в Android Studio?

Я пишу приложение для Android, которое включает в себя код C / C ++, который скомпилирован вместе с кодом Java. Мое приложение рушится во время выполнения собственного кода.

Есть ли способ перейти через исходный код Android C / C ++ и проверить переменные, как это возможно с источником Java?

Я не обязательно ищу способ проникнуть через источник из Android Studio . Это, безусловно, идеальное решение, однако, если мне нужно использовать внешний инструмент после запуска приложения из Studio, все в порядке. Я хочу, чтобы можно было выполнить выполнение по очереди и проверить переменные.

Android Studio 1.0.2
Android NDK r10d

Редактирование: от немедленного ответа «Использовать Eclipse с плагином ADT», позвольте мне добавить дополнительные требования.
Этот проект начался как проект Eclipse ADT. Однако теперь я перешел на Android Studio. Мой проект теперь построен с использованием Gradle, и моя структура каталога проекта отражает это. Я готов использовать Eclipse; Я не хочу менять свою структуру проекта, чтобы вернуться к Eclipse из Android Studio. Если есть способ открыть проект Android Studio в Eclipse и отладить его таким образом, пожалуйста, подробно расскажите об этом процессе.

Solutions Collecting From Web of "Можно ли отлаживать C / C ++ в Android Studio?"

Начиная с версии 1.3+ Preview Android Studio поддерживает отладку C ++, цитируя Android M Developer Preview & Tools :

Самое примечательное – это очень востребованная функция от наших разработчиков Android NDK и игр: редактирование кода и отладка для кода C / C ++. На платформе JetBrains Clion плагин Android Studio NDK предоставляет такие функции, как рефакторинг и завершение кода для кода C / C ++ вместе с вашим Java-кодом. Поддержка Java и C / C ++ встроена в один опыт разработки бесплатно для разработчиков приложений для Android.

[ОБНОВИТЬ]

По состоянию на июль 2015 года Android Studio DOES поддерживает NDK.

Вы можете узнать больше об этом по этой ссылке .


[OLD] NDK еще не поддерживается в Android Studio.

Когда нам приходится иметь дело с NDK, единственным решением является использование Eclipse.

РЕДАКТИРОВАТЬ

В основном мы поддерживаем проект Eclipse с функцией NDK (карта в нашем случае) и проект Gradle с другими (не картами) функциями. Итак, все, что нужно сделать с NDK, мы делаем в Eclipse, а затем включаем изменения в проект Gradle.

Чтобы быть более точным, внутри каталога /src/main/ мы создали другой каталог jniLibs и поместили скомпилированный *.so файл в папки, специфичные для архитектуры (armeabi-v7a, armeabi, x86 …). Тогда в основном классе проекта Gradle просто добавлена ​​строка

 static { System.loadLibrary("OurNDKLibName"); } 

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

Это не было не очень хорошо.

Ошибка hello-jni не удалась:

 Starting LLDB server: run-as com.example.sample /data/data/com.example.sample/lldb/bin/start_lldb_server.sh /data/data/com.example.sample/lldb /data/data/com.example.sample/lldb/tmp/platform.port1442695333842 "lldb process:gdb-remote packets" Error while launching debug server on device: com.android.tools.ndk.run.DebuggerContext$StartServerException: java.lang.IllegalStateException: Failed to read platform port /data/data/com.example.sample/lldb/tmp/platform.port1442695333842 

Я использую 1.4RC1

 compileSdkVersion 23 buildToolsVersion "23.0.1" 

И упомянутая конфигурация запуска «app-native» @Gerry. Это почти есть, но я не могу найти никаких следов lldb в папке личных данных моего приложения. Я нахожу 400kb gdbserver в каталоге lib связанном оттуда, с моим собственным *.so тоже. К сожалению, опция для отладки с gdb вместо lldb прошла с обновлением от 1.3 до 1.4. NDK 10e отправляет двоичный файл gdbserver 400kb в ndk\prebuilt\android-arm\gdbserver который он (я думаю). 15 сентября был обновлен gdb debug howto https://github.com/mapbox/mapbox-gl-native/wiki/Android-debugging-with-remote-GDB . Это сложнее, чем logcat отладки IMO, но текущая тема, извините за то, что я так отрицателен, но я не верю, что lldb на самом деле работает.

Я поздоровался и пришел к такому же выводу.

Поэтому, отвечая на ваш вопрос, пока не удается отладить C / C ++ в Android Studio. Извините, что это был не тот ответ, на который вы надеялись, и я надеюсь, что окажется ошибочным с неопровержимым доказательством обратного, но прямо здесь, прямо сейчас, никаких шансов!

ОБНОВЛЕНИЕ Я поднял вопрос, где мне дали исправление для одного телефона.

UPDATE2 Слишком рано говорить, что это экспериментально, но иногда я не могу соединиться, часто, если не всегда выходить из строя и прерывать порядок с бессмысленными значениями параметров. Я просто установил условную точку останова, которая не срабатывала, но logcat показывает, что она должна. Первоначально я предполагал, что это была моя логическая ошибка, но она идет глубже.

Просто ударить точки останова на всех очень полезно, но это все еще на миллион миль меньше отладки Java или отладки Vis Studio C ++.

UPDATE3 Вернулась к стабильной версии 1.3.1, так как версия канала Canaray приостанавливалась для разрыва каждого нажатия клавиши. Хотя встроенная отладочная сборка, по крайней мере, запускается с помощью моего «фиксированного» телефона, никакие точки останова не попадают даже в hellojni или немного расширенную версию, чтобы дать больше возможностей. Я привык логарифмировать сейчас, но у меня были лучшие проблемы с дедушкой с Android, NDK и Eclipse. Более сложное решение также легче сломать, но, по крайней мере, оно работает .

Да , Android Studio поддерживает отладку C ++, по крайней мере, с Android Studio 1.5.1 и android-ndk-r10e.

В старые времена вам придется писать файлы файлов Android.mk и Application.mk для создания кода на C ++ в Android Studio. Они вам больше не нужны. Пока вы кладете их под папку jni, gradle сможет поднять его и скомпилировать. Вы должны увидеть что-то вроде следующего:

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

А также позволяет установить точку останова и отладить ее.

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

Вы должны следовать этому пошаговому руководству и узнать больше об этом. И читайте больше о документации здесь . Я загрузил полный рабочий пример, чтобы вы могли скачать и попробовать его на GitHub .


С Android Studio 1.4 от tools.android.com возможна отладка. Когда вы открываете / создаете проект с кодом C ++ [jni] в нем, студия Android создаст новую конфигурацию, что-то вроде $ (module_name) -native

Я бы выбрал эту конфигурацию, синхронизацию, сборку, установить точку останова и запустить ее с помощью Android Studio. После долгого ожидания мой отладчик подключен, приложение разбито на [Я думаю, вы могли бы также установить точку останова в это время]; Этот перерыв не на моих постах, я отпустил его в андроид-студию, и моя точка останова попала. Надеюсь это поможет
Некоторые образцы должны работать с отладчиком android

да! Можно отладить собственный код в студии android. Начиная с обновлений Android Studio 2.2 + поддержка встроенных инструментов для отладки собственного кода.