如何解决使用jniRegisterNativeMethods在Kotlin的Android Studio中注册方法而不是长JNI名称?
是否可以使用jniRegisterNativeMethods
来在NDK应用程序中映射JNI函数? 即使用method_table
来通过JNI映射本机(C / C ++)函数 而不是使用冗长的JNI方法名吗?
例如,在一个练习中,我看到一个C文件自己添加到平台上,
#include "core_jni_helpers.h"
#include "jni.h"
static jlong init_native(JNIEnv *env,jobject clazz)
{
return 0;
}
// ...
static JNINativeMethod method_table[] = {
{ "init_native","()J",(void*)init_native },{ "finalize_native","(J)V",(void*)finalize_native },// ...
};
int register_android_server_ExampleService(JNIEnv *env)
{
return jniRegisterNativeMethods(env,"com/android/server/OpersysService",method_table,NELEM(method_table));
};
但是随后register_android_server_ExampleService
在services/core/jni/onload.cpp
(在平台上)中被手动调用
有什么办法可以做到这一点,或者是否与NDK类似?
我的猜测是否定的,因为JNIHelp.h
和core_jni_helpers.h
在NDK中不可用,并且Android Studio中的Kotlin工具可能无法运行功能来执行自动完成。但是,我认为值得在小情况下提出,我可以以某种方式避免命名诸如Java_vendor_<name>_<name>_<name>_test_MainActivity_stringFromJNI
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。