2012-08-08 84 views
1

Android可以通过JNI使用.so文件。 C/C++中的本地函数绑定到Java函数。Android的.so文件中的包名称

我想使用其他开发者的.so文件(我没有源代码)。我知道本机功能的界面,但我遇到了一些困难。似乎.so文件被硬编码以绑定某个包名。

有什么办法让我使用其他开发者的.so文件吗?

如果没有,是否可以反编译.so文件并使其工作?

回答

0

您可以使用共享对象所期望的名称创建一个包,其中包含一个包装类,其唯一目的是加载库并将本机方法提供给使用此类的客户端。

将该软件包导入到您自己的活动包(或任何您想使用它的地方)中,并通过包装类调用本地方法。

+0

它的工作方式是静态的,它是一个对象方法呢? – Bear 2012-08-08 14:43:06

+0

在封装类而不是'public static native'中创建'public native'。或者你的意思是别的(如果是这样,你能否更详细地解释你想做什么以及得到什么错误)? – Michael 2012-08-08 17:14:23

+0

但问题是本地方法会尝试访问C++代码中的调用者对象或其字段?如果是的话,他们不能在包装类中访问它们,对吧? – Bear 2012-08-09 02:02:58

相关问题