从Android中的最终用户隐藏JNI代码

时间:2015-10-02 23:08:56

标签: java android c++ android-ndk

我已经写了一堆Android JNI代码,我想把它作为一个客户的库。显然,我不希望客户能够看到我的JNI代码。有没有办法可以在库项目中为它们包含so文件?

我尝试过使用System.loadLibrary(<library>);,但每次都会遇到不满意的链接错误。

有一件事是有效的,我刚刚编译了我的项目并删除了所有的c文件。我仍然可以使用.so文件,但如果我做了一个make clean,它会删除我的so文件,如果没有源代码就无法恢复它。

简而言之,我想要的是能够自己编译一个so文件,并通过一些与之接口的java代码将它提供给我的客户。我不在乎他们是否看到java'包装器'源但我不希望他们能够看到JNI代码。我也希望他们像对待任何其他人一样对待这个图书馆(即清理不会破坏它)。

谢谢!

1 个答案:

答案 0 :(得分:4)

  

有没有办法可以在库项目中为这些文件添加so文件?

打包包含库的AAR,并将AAR托管为客户的工件。有关示例,请参阅我的CWAC-AndDown library。对于您支持的任何体系结构,AAR将包含您的.so文件,以及为本机代码提供Java API的已编译Java代码的JAR。

  

我也希望他们像对待任何其他人一样对待这个图书馆(即清理不会破坏它)。

嗯,根据定义, make clean 需要来源。它还需要一个makefile,大概你不会分发,因为没有源代码就没用了。