Android studio 3.4 使用JIN(创建工程)

1 .创建一个新的工程:
首选要保证集成开发环境已经安装了NDK和Cmake;
Android studio 3.4 使用JIN(创建工程)_第1张图片
2. 右键 src->New->Folder->JNI Folder ,这时就可以在main目录下生产一个JNI文件夹。Android studio 3.4 使用JIN(创建工程)_第2张图片
3. 创建JNI类 在Mainactivity相同的目录下,创建一个类,在类中加入要实现的native方法;
Android studio 3.4 使用JIN(创建工程)_第3张图片
这个例子是java通过调用Linux库函数实现串口通信。
4. 将上级目录拖到teriminal下如图所示:Android studio 3.4 使用JIN(创建工程)_第4张图片
terminal就会自动进入到这个包的目录,然后在该目录下执行javac + 刚才创建的类文件,成功以后,会在当前目录下生成一个class文件。
5. 接下来拖动java目录到Terminal,生成的.h文件一定要和包在同一个路径下。Android studio 3.4 使用JIN(创建工程)_第5张图片
拖动完成之后,执行javah -jni 包名+类名,如下图所示:
Android studio 3.4 使用JIN(创建工程)_第6张图片
得到.h文件以后,把这个文件拖动到JNI目录下。
6. 在该目录下创建三个文件
1. Android.mk
2. Application.mk
3. SerialLib.cpp (这个文件要和加载的库对应起来)
在Android.mk中加入以下脚本

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := SerialLib 
LOCAL_SRC_FILES =: SerialLib .cpp
include $(BUILD_SHARED_LIBRARY)

以上代码需要注意两点:LOCAL_MODULE和LOCAL_SRC_FILES ,一定要与自己项目对应起来。

在Application.mk 文件中加入下列代码:

APP_MODULES := SerialLib 
APP_ABI := all

注意APP_MODULES 要与自己的项目名称对应

接下来就是在SerialLib.cpp实现自己的本地函数
7. 其他相关的配置:
在app目录下的bulid.gradle中加入

      ndk{
            moduleName "serialLib"
//            abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定的三种abi体系下的so库
        }
        sourceSets.main{
            jni.srcDirs = []
            jniLibs.srcDir "src/main/libs"
        }

注意一定是在defaultConfig节点下加入。

在根目录下的gradle.properties中加入android.useDeprecatedNdk=true;
8. NKD编译器设置
在file->setting中加入一个外部工具,如下图Android studio 3.4 使用JIN(创建工程)_第7张图片
program = C:\Android\SDKANDTOOLS\ndk-bundle\build\ndk-build.cmd
Work directory = P r o j e c t F i l e D i r ProjectFileDir ProjectFileDir\app\src\main
设置号好以后点击OK。
选中JNI类右键->New->External Tools->ndk-build,之后就会生成.so库。

最后就可以直接在其他类中调用此库。

你可能感兴趣的:(安卓驱动)