我已经写了一堆Android JNI代码,我想把它作为一个客户的库。显然,我不希望客户能够看到我的JNI代码。有没有办法可以在库项目中为它们包含so文件?
我尝试过使用System.loadLibrary(<library>);
,但每次都会遇到不满意的链接错误。
有一件事是有效的,我刚刚编译了我的项目并删除了所有的c文件。我仍然可以使用.so文件,但如果我做了一个make clean,它会删除我的so文件,如果没有源代码就无法恢复它。
简而言之,我想要的是能够自己编译一个so文件,并通过一些与之接口的java代码将它提供给我的客户。我不在乎他们是否看到java'包装器'源但我不希望他们能够看到JNI代码。我也希望他们像对待任何其他人一样对待这个图书馆(即清理不会破坏它)。
谢谢!
答案 0 :(得分:4)
有没有办法可以在库项目中为这些文件添加so文件?
打包包含库的AAR,并将AAR托管为客户的工件。有关示例,请参阅我的CWAC-AndDown library。对于您支持的任何体系结构,AAR将包含您的.so
文件,以及为本机代码提供Java API的已编译Java代码的JAR。
我也希望他们像对待任何其他人一样对待这个图书馆(即清理不会破坏它)。
嗯,根据定义, make clean
需要来源。它还需要一个makefile,大概你不会分发,因为没有源代码就没用了。