从adb shell运行可执行文件可以达到100 MIPS,而使用Android本机库在同一设备上只能达到30 MIPS。考虑到Android ndk / jni / ......开销是否正常?
可执行文件和本机二进制文件使用相同的标志进行编译,但可能是不同的编译器。
可执行文件使用arm-none-linux-gnueabi-gcc
编译,arm-none-linux-gnueabi-gcc --version
的输出:
arm-none-linux-gnueabi-gcc(Sourcery CodeBench Lite 2014.05-29)4.8.3 20140320(预发布)
版权所有(C)2013 Free Software Foundation,Inc。
这是免费软件;查看复制条件的来源。没有 保证;甚至不适用于适销性或特定用途的适用性。
通过在Android Studio项目的 build.gradle 中添加以下命令来编译本机库。
externalNativeBuild {
cmake {
// for neon optimization:
abiFilters "armeabi-v7a"
cppFlags "-DHAVE_NEON -O3 -Wno-parentheses -mfpu=neon -mfloat-abi=softfp -march=armv7-a"
}
}