cmake 和 android.mk两种编译方式
对于eclipse转android studio工程,会有一些关于ndk操作的事情
1.eclipse: jni android.mk application.mk实现
application.mkAPP_ABI 指定编译版本 x86 armiv7
APP_PLATFORM:= android-19 编译版本
android.mk
LOCAL_PATH := $(call my-dir)
#模块1
include $(CLEAR_VARS)
LOCAL_MODULE := module1
LOCAL_SRC_FILES := module1.c
include $(BUILD_SHARED_LIBRARY)
#模块2
include $(CLEAR_VARS)
LOCAL_MODULE := module2
LOCAL_SRC_FILES := module2.c
include $(BUILD_SHARED_LIBRARY
BUILD_SHARED_LIBRARY 还有静态库
ifeq ($TARGET_ARCH_API) 可以进行判断 运行哪一个.so
共享库和编译出库
有了这些,如何在android studio中使用呢
在/src/main 创建jni 拷贝jni文件 使用externalNativeBuild 编译
指定位置 externalNativeBuild{ndkBuild{path "src/main/jni/Android.mk"}}
externalNativeBuild{ndkBuild{arguments "NDK_APPLICATION.MK:=src/main/jni/Application.mk"}}
或者通过nkd-build进行编译,生成.so
进入jni目录 ndk-build 在jniLibs目录下生成.so文件 两种方式 第一:创建jniLibs 拷贝 第二:创建libs
sourceSets.main{
jniLibs.srcDirs += ['libs']
}
cmakelist externalNativeBuild{cmake{abiFilters 'armeabi' ,"x86"}}
externalNativeBuild{path "src/main/cpp/CMakeLists.txt"}
网友评论