Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中隐藏最终用户的JNI代码_Java_Android_C++_Android Ndk - Fatal编程技术网

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

Java 在Android中隐藏最终用户的JNI代码,java,android,c++,android-ndk,Java,Android,C++,Android Ndk,我已经写了一堆android JNI代码,我想为客户制作一个库。显然,我不希望客户能够看到我的JNI代码。有没有一种方法可以将so文件包含在图书馆项目中 我试过只使用System.loadLibrary;但每次我都会收到一个不满意的链接错误 成功的一件事是,我刚刚编译了我的项目并删除了所有的c文件。我仍然可以使用.so文件,但如果我进行清理,它会删除我的so文件,如果没有源代码,就无法恢复它 简言之,我想要的是能够自己编译一个so文件,并用一些与之交互的java代码将其提供给我的客户。我不在乎他

我已经写了一堆android JNI代码,我想为客户制作一个库。显然,我不希望客户能够看到我的JNI代码。有没有一种方法可以将so文件包含在图书馆项目中

我试过只使用System.loadLibrary;但每次我都会收到一个不满意的链接错误

成功的一件事是,我刚刚编译了我的项目并删除了所有的c文件。我仍然可以使用.so文件,但如果我进行清理,它会删除我的so文件,如果没有源代码,就无法恢复它

简言之,我想要的是能够自己编译一个so文件,并用一些与之交互的java代码将其提供给我的客户。我不在乎他们是否看到java“包装器”源代码,但我不希望他们能够看到JNI代码。我也希望他们能够像对待其他任何图书馆一样对待这个图书馆

谢谢

有没有一种方法可以将so文件包含在图书馆项目中

打包包含库的AAR,并将AAR作为您客户的工件托管。请参见我的示例。AAR将包含您所支持的任何体系结构的.so文件,以及一个为本机代码提供Java API的编译Java代码JAR

我也希望他们能够像对待其他任何图书馆一样对待这个图书馆


根据定义,makeclean需要源代码。它还需要一个makefile,您可能不会分发它,因为没有源代码就没有用。

这个.so文件应该足够了。你在用gradle吗?这可能是命名约定的问题?你能提供更多的细节吗?