Создайте заголовочный файл C (*.h) для реализации собственного метода JNI в студии Android.

Как сгенерировать заголовочный файл C (*.h), содержащий прототип функции для реализации собственного метода JNI в студии Android при автоматической сборке?

Спасибо


person ant    schedule 02.05.2016    source источник
comment
Вызовом javah из вашего скрипта сборки?   -  person Michael    schedule 02.05.2016
comment
Спасибо, сэр, за указание.   -  person ant    schedule 03.05.2016


Ответы (3)


Предположим, у вас есть проект HelloNative.

HelloNative
   |-build/intermediate/classes/debug  (you get this directory upon project build)
   |-app/src/main/jni
        /src/main/java/com/planets/mercury/HelloNativeActivity.java

И вы хотите сгенерировать файл заголовка для HelloNativeActivity.java --> сделайте это

cd HelloNative

javah -d app/src/main/jni -classpath /Users/john-smith/Android/sdk/platforms/android-19/android.jar:app/build/intermediates/classes/debug com.planets.mercury.HelloNativeActivity

Замените путь john-smith и android sdk тем, что есть на вашей машине. Для файла jar Android. Вы можете использовать все, что по вашему выбору.

Например. андроид-19 или андроид-21

person display name    schedule 15.05.2016

Для создания файла заголовка в студии Android выполните следующие несколько шагов.

1) Open Android Studio Terminal
   (At Left Bottom Corner Given Terminal Tab)

2) type this command first
   (cd app/src/main)
   it is located to the your main source directory.

3) now type this command in the termial for the generation of the header file
   (javah -d cpp -classpath ../../build/intermediates/classes/debug <your_packagename>.<class_name>)

person Kishan Donga    schedule 20.01.2017
comment
А тем временем какой-то стажер нарушил совместимость и изменил путь к сгенерированным классам в Android Studio 4.1 на build/intermediates/javac/debug/classes - person Lothar; 13.11.2020

Я предлагаю создать внешний инструмент.

Перейдите в раздел Файл->Настройки->Инструменты->Внешние инструменты и добавьте новый инструмент. Заполните диалоговую форму (используйте кнопку «Вставить макрос»)

  • Имя: javah
  • Описание: создает заголовочный файл jni.
  • Программа: $JDKPath$\bin\javah
  • Аргументы: -d $SourcepathEntry$..\cpp\ -v $FileClass$
  • Рабочий каталог. $SourcepathEntry$

Остальные параметры оставьте без изменений.

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

Теперь вы можете выбрать свой класс в Project Explorer, щелкнуть правой кнопкой мыши и из контекстного меню запустить External Tool->javah.

Файл заголовка будет создан в папке cpp вашего проекта (как это предлагается для разработки Android Studio Native), но вам нужно будет просмотреть папку, чтобы увидеть его.

Авторы http://kn-gloryo.github.io/Build_NDK_AndroidStudio_detail/ (изменено на быть более совместимым с более поздними SDK и Android Studio) и Javah : Ошибка: невозможно получить доступ к android.support.v7.app.ActionBarActivity

person Matteo    schedule 26.09.2018
comment
Кажется, отсутствует обратная косая черта в аргументах. Это сработало для меня: -d $SourcepathEntry$\..\cpp\ -v $FileClass$ - person Bram Vaessen; 01.12.2020