Я пытаюсь сгенерировать файл .h в android-studio для NDK

#android-ndk #android-studio-2.2 #javah

#android-ndk #android-studio-2.2 #javah

Вопрос:

Кто-нибудь может выяснить, в чем проблема в этой команде.

я использовал команду для генерации is:

 -classpath $Classpath$ -v -jni $FileClass$
  

он выдает исключение:

 Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: FilesJavajdk1.8.0_102jrelibcharsets.jar;C:Program
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:129)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:107)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:64)
at com.sun.tools.javah.JavahTask.run(JavahTask.java:503)
at com.sun.tools.javah.JavahTask.run(JavahTask.java:329)
at com.sun.tools.javah.Main.main(Main.java:46)
  

MyNDK.class:

 public class MyNDK {

// Used to load the 'native-lib' library on application startup.
static {
    System.loadLibrary("MyLibrary");
}

public native int getHelloSum(int[] val,int size);

}
  

Настройка для NDK:
НАСТРОЙКА NDK

Комментарии:

1. Попробуйте заключить classpayh в кавычки, "amp;Classpathamp;"

2. Если у вас уже есть код класса Java и внутри android Studio, не могли бы вы использовать функцию missingFunctionInspection внутри Android Studio, чтобы позволить ей сгенерировать прототип для вас? это небольшая хитрость в использовании, но это может избавить от некоторых проблем. Один из примеров находится внутри этого: codelabs.developers.google.com/codelabs/android-studio-jni / … в нем использовался gradle-experimental, но этот конкретный шаг работает и для CMake / Ndkbuild [ без изменений]. Он должен выполнять большую часть работы для вашей функции, одно незначительное изменение заключается в добавлении внешнего «C» для размещения cpp-файла

3. @AlexCohn вместо $ я использовал amp; с кавычками, теперь я получаю эту ошибку «C:Program FilesJavajdk1.8.0_102binjavah.exe «Ошибка -classpath amp; Classpath amp; -v -jni com.myndkapp.MyNDK: не удалось найти файл класса для ‘com.myndkapp.MyNDK’.

4. Моя ошибка; это должно быть $

5. Да, это сработало @AlexCohn Спасибо

Ответ №1:

@Alex Cohn помог мне исправить это, правильный ответ :

 -classpath "$Classpath$" -v -jni $FileClass$