Size: a a a

Android NDK (C++) — русскоговорящее сообщество

2021 September 18

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
В Си я их не встречал
источник

VK

Vladimir Kornev in Android NDK (C++) — русскоговорящее сообщество
оу, ты на чистом С пишешь... эээ... тогда, наверное, земля тебе пухом, братан :)
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
А причем тут это
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
GetStaticMethodID

jmethodID GetStaticMethodID(JNIEnv *env, jclass clazz, const char *name, const char *sig);

Returns the method ID for a static method of a class. The method is specified by its name and signature.

GetStaticMethodID() causes an uninitialized class to be initialized.
LINKAGE:

Index 113 in the JNIEnv interface function table.
PARAMETERS:

env: the JNI interface pointer, must not be NULL.

clazz: a Java class object, must not be NULL.

name: the static method name in a 0-terminated modified UTF-8 string, must not be NULL.

sig: the method signature in a 0-terminated modified UTF-8 string, must not be NULL.
RETURNS:

Returns a method ID, or NULL if the operation fails.
THROWS:

NoSuchMethodError: if the specified static method cannot be found.

ExceptionInInitializerError: if the class initializer fails due to an exception.

OutOfMemoryError: if the system runs out of memory.
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
Статик тут для примера
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Ясно, значит придётся костыли юзать
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
Какие?
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
Для вызова джава метода с натива так или иначе придется получить его айди с помощью подобной функции
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Из явы дёргать функцию с проверкой существует или нет метод. Потом вызывать.

Часть кода грузится в дексе.
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
Какую функцию?
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
Нативную? Класс не будет зарегистрирован и приложение упадет если не будет реализации native метода
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
Проверка на стороне натива но вызов с джавы. Что???
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Апк А. В application грузится so либа. Она распаковывает и грузит в дексе Апк Б. Из Б можно в java дёрнуть функцию с try catch ClassNotFoundException. Если все нормально спокойно вызывать из натива методы java
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
И где проблема
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Костыль это. Судя по всему напрямую из натива нет возможности проверить есть ли метод или нет. Поэтому придётся такой вариант использовать
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
.
источник

w

waldo in Android NDK (C++) — русскоговорящее сообщество
👹
источник

AV

Alexander Vasilyev in Android NDK (C++) — русскоговорящее сообщество
Ну прислали же JNI метод, который без каких-то модификаций java-кода вернёт NULL, если что-то пошло не так, и тогда по результату ExceptionOccurred() можно будет проверить, что исключение — это NoSuchMethodError.
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Нет null просто падает. Вызов функций идёт из Б. А их so либа до погрузки не видит
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Исключения не вариант. Нельзя ронять приложение
источник