Java、NDK、JNI、JVM和C/C++代码等在Android项目中是如何相关联的?
我想知道例如Java代码运行NDK方法时会发生什么,NDK使用JNI库或其他任何情况。另外NDK和JNI之间有什么区别。
如果这个问题表述不清楚的话,请见谅,我只是对如何在Android项目中实现NDK感到困惑。
Java、NDK、JNI、JVM和C/C++代码等在Android项目中是如何相关联的?
我想知道例如Java代码运行NDK方法时会发生什么,NDK使用JNI库或其他任何情况。另外NDK和JNI之间有什么区别。
如果这个问题表述不清楚的话,请见谅,我只是对如何在Android项目中实现NDK感到困惑。
在Android Studio项目中jniLibs/CPU_ABI
在AAR内的jni/CPU_ABI
当应用程序打包成APK时,libs位于其lib/CPU_ABI文件夹内。
在安装过程中,针对目标平台的libs被安装到<5.0设备上的nativeLibraryPath中,在>=5.0设备上则位于应用程序的legacyNativeLibraryDir/CPU_ARCH内。
这里的CPU_ABI可以是以下任意一种:armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips、mips64,具体取决于你要面向哪些架构以及你的libs是否已经编译完成。