前言
我会在小专栏和简书一起分享。
最近在搞NDK开发,于是想着申请专栏跟大家一起分享我的学习过程,刚申请完没想到就有人关注了,让我更有了干劲。如今大部分Android开发应该是了Android Studio(AS),所以接下来基本围绕AS来开发。如果有需要Eclipse入门的可以留言给我。
正题
使用AS开发现在有两种方式,分别ndk-build和CMake。不管哪种方式都需要安装Android NDK工具,需要调试需要LLDB工具,使用CMake编译就需要CMake工具,如图,首页讲讲使用ndk-build编译,先使用Android Studio新建一个基础项目,在任意类中新建native方法进行一次编译。接着打开Terminal工具,通过命令行“cd app/src/main/java”进去到工程目录,然后使用命令“javah -jni <包名>.<类名>”,噌。蹦出一个错误找不到xxx类,进过一翻搜索后发现原来现在是要这样“javah -classpath . -jni <包名>.<类名>”,注意在-classpath后面是有一个空格和一个点,敲完回车.h文件就生成了。把得到的.h文件拉到我们的jni文件夹中,在新建一个.c文件进行编码。接下来就是要生成.so文件,根据一位大神的方案配置了External Tools。
1.javah命令生成.h文件
2.ndk-build命令生成.so文件
除了以上设置以外,还有必须配置在build.gradle ->defaultConfig
ndk{
moduleName "HelloJniLibName" //生成的so名字
}
根据存放的so文件配置
sourceSets.main {
jni.srcDirs = ['src/main/jni']
jniLibs.srcDir 'src/main/jniLibs'
}
在gradle.properties中需要加入
android.useDeprecatedNdk=true
最后别忘了Android.mk文件和Application.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloJniLibName
LOCAL_SRC_FILES := ndktest-jni.c
include $(BUILD_SHARED_LIBRARY)
以上都搞定后,你可以在你的jni目录右键使用NDK->ndk-build操作就会在响应目录生成.so文件了。
结尾
第一次写望大家见谅,可留言指点,今天就先到这了明天继续CMake方式生成so文件。