我有一个我添加到Android Studio 2.1.1的.so文件。一切都运行良好,我可以从.so文件中调用该方法。唯一的事情是,为了它的工作,我需要从我的应用程序中的一个非常特定的部分调用本机方法。
例如,方法名称为Java_com_test_app_MainView_myMethod
,因此我必须在名为myMethod
的包中名为MainView
的类中调用com.test.app
。
因此,如果我将MainView
重命名为SubView
,我会java.lang.UnsatisfiedLinkError: Native method not found: com.test.app.SubView.myMethod
。
这应该是这样的,还是我错过了什么?
答案 0 :(得分:2)
这确实应该像这样工作。 JNI方法名称必须以_
格式镜像JAVA方法名称。
从this doc,必须遵守以下规则:
解析原生方法名称
动态链接器根据名称解析条目。本机方法名称由以下组件连接:
- 错误的完全合格的班级名称
- 下划线(“_”)分隔符
- 错误的方法名称
- 用于重载的本机方法,两个下划线(“__”)后跟受损的参数签名