一、根据native类生成 native类的头文件
代码语言:javascript复制 1> 如下图所示,com.lhs.serial.ObdNative 是自己建的native类;
2> cmd 切到 工程的java目录下, 输入 javah -d ../jni com.lhs.serial.ObdNative;
3> 可以看到 在 jni文件目录下,生成了 com_lhs_serial_ObdNative.h ;
4> 新建 .cpp ,实现 com_lhs_serial_ObdNative.h 中的内容;
二、编译 .cpp ,生成 .so
1) 在 jni目录下新建 Android.mk
2) 修改gradle,根据Android.mk 自动编译 .cpp
代码语言:javascript复制app 目录下的 build.gradle 配置
代码语言:javascript复制android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.mct.interation.service"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
externalNativeBuild {
ndkBuild{
abiFilters 'armeabi-v7a'
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
ndkBuild{
path 'src/main/jni/Android.mk'
}
}
}
task ndkClean(type: Delete) {
delete ".externalNativeBuild/"
}
clean.dependsOn 'ndkClean'
工程根目录下的build.gradle, class path 中的gradle版本需要修改为2.2.0以上 (不然会报错找不到 externalNativeBuild 方法)
三、完成上面步骤后,运行工程的时候,就会自动生成 .so,并打包进 apk
【遇到的问题】
1)Could not find method externalNativeBuild() for arguments
[action]