Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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++_Java Native Interface - Fatal编程技术网

Java 编译android应用程序时,本机代码(JNI)会发生什么变化?

Java 编译android应用程序时,本机代码(JNI)会发生什么变化?,java,android,c++,java-native-interface,Java,Android,C++,Java Native Interface,根据我对Android的理解,似乎Java代码首先转换成.class文件,然后再转换成专有的Dalvik字节码格式。这可以反向工程回到Java源代码 我的问题是,JNI中使用的本机代码(用C++编写)会发生什么变化?有人能得到C++源代码吗?还是只得到C++的字节码?< /p> 编辑:我不知道为android编译应用程序时,本机代码会发生什么变化。有人能解释一下使用JNI时会发生什么吗?JNI调用在运行时绑定。这些库按原样存储。Android基于linux内核,因此在运行时为相应的体系结构编译的

根据我对Android的理解,似乎Java代码首先转换成.class文件,然后再转换成专有的Dalvik字节码格式。这可以反向工程回到Java源代码

我的问题是,JNI中使用的本机代码(用C++编写)会发生什么变化?有人能得到C++源代码吗?还是只得到C++的字节码?< /p>
编辑:我不知道为android编译应用程序时,本机代码会发生什么变化。有人能解释一下使用JNI时会发生什么吗?

JNI调用在运行时绑定。这些库按原样存储。Android基于linux内核,因此在运行时为相应的体系结构编译的库不会出现任何问题。这些库按原样存储。Android基于linux内核,因此运行为相应架构编译的库也不会有问题。java语言中C++ C++代码比纯java应用程序更难分解,Dalvik只留下C++代码,为什么生成字节代码?没有“C++代码”。只有一个DSO二进制文件被动态加载程序加载到进程空间。如果愿意,您可以在汇编程序中手工编写DSO,也可以从Pascal或Rust编译它。JNI只指定一个松散的ABI,使用C声明作为阿德事实上的ABI标准。@ KerrekSB -所以在C++中编写的代码在编译成本地时,而不是Dalvik字节码。java语言中C++ C++代码比纯java应用程序更难分解,Dalvik只留下C++代码,为什么生成字节代码?没有“C++代码”。只有一个DSO二进制文件被动态加载程序加载到进程空间。如果愿意,您可以在汇编程序中手工编写DSO,也可以从Pascal或Rust编译它。JNI只使用C声明作为阿德事实上的ABI标准指定一个松散的ABI。@ KerrekSB -所以C++编写的代码,当编译成本地的,而不是Dalvik字节码的时候?@是的,它是本地代码(这就是为什么它被称为JNI)。