-------------------------------------- .mk配置 ------------------------------------------------------------
早期的ndk开发,是需要配置.mk文件类型现在的cmake文件作用
#这里能够决定编译 Login.c
#1源文件的位置, 宏函数my-dir 返回当前目录(包含 Android.mk 文件本身的目录)的路径
LOCAL_PATH := $(call my-dir)
#2清理
include $(CLEAR_VARS)
#3存储你要构建的模块的名称 每个模块名称必须唯一 且不含任何空格
#如果模块名称的开通已是 lib 则构建系统不含附加额外的前缀 lib 而是按原样采用模块名称 并添加.so 扩展名
#最后mk会构建出libMyLoginJar.so
LOCAL_MODULE :=myLoginJar
#4指定模块 C 或者c++源文件(.h是申明文件 .c是源文件) 以空格分开 使用连接符 反斜杠 (\)
#Login.c 就是cpp文件夹中新建的 .c文件
LOCAL_SRC_FILES :=main/cpp/Login.c \
main/cpp/Register.c
#5构建静态库 还是动态库
#静态库 .a
#include $(BUILD_STATIC_LIBRARY)
#动态库 .so
include $(BUILD_SHARED_LIBRARY)
------------------------------------ app.build的配置 ------------------------------
android {
compileSdkVersion 28
defaultConfig {
applicationId "cn.zdh.ndk4"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//TODO 配置编译方式 的编译区域 (armeabi-v7a x86)
externalNativeBuild {
ndkBuild {
abiFilters 'armeabi-v7a'
abiFilters 'x86' //x86一般开发不配置 用于支持模拟器(但是增加apk体积)
}
}
//TODO 指定打包 应该打哪几种CPU架构模式(你的apk需要兼容那些平台)
ndk{
abiFilters'armeabi-v7a'
abiFilters'x86'//x86一般开发不配置 用于支持模拟器(但是增加apk体积)
}
}
//TODO 指定脚本路径
externalNativeBuild {
ndkBuild {
path 'src/Android.mk'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
下面是AS build 后的效果图