с помощью Android.mk я не могу вызвать функции Java_ из MainActivity.java, но использование CMakeLists.txt работает нормально

  1. Я создал простой проект JNI,
  2. Я создаю файл test.cpp и внутри него я создал Java_com_etc_function1()
  3. я использовал CMakeLists.txt создать общую библиотеку test.so
  4. Я загрузил общую библиотеку в MainActivity, используя
    System.LoadLibrary('test');
  5. я звонил public native void function1() успешно.
  6. когда я бегу nm.exe -D test.so Могу подтвердить Java_com_etc_function1() существует.

Все в порядке, пока я не решил заменить CMakeLists.txt файл с Android.mk файл.

Когда я изменяю файл приложения, чтобы он указывал на:

ndkBuild {
path 'src/main/jni/Android.mk'
}

вместо CMakeLists.txt,
мой проект все еще создает библиотеку test.so, и когда я запускаю nm.exe -D test.so
Я также могу подтвердить, что Java_com_etc_function1() существует в нем, и я все еще могу загрузить библиотеку в MainActivity.java, но проблема в следующем: Я не могу позвонить: public native void function1() , в красном цвете, ошибка: не может найти подходящую функцию JNI Java_com_etc_function1 () , и когда я нажимаю Alt + Войти -> выберите функцию создания — ничего не происходит.

Это мой файл Android.mk ниже,

Файл Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := test
LOCAL_EXPORT_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

Файл Application.mk:

APP_OPTM := release
APP_ABI := all
APP_PLATFORM := android-21

Я думаю, что мне не хватает еще 1 шага для вызова этой функции из MainActivity.java, но я до сих пор не могу понять. Пожалуйста, если вы можете мне помочь.

Благодарю.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector