android studio无需命令行,jni实现

1.ndk相关下载版本

1584502508(1).png

1584502555(1).jpg

2.界面化配置

1.javah配置
File-settings-Tools-External Tool


image.png

点击窗口界面左上角的+号,开始如下图配置javah


配置javah.jpg

代码,从上到下依次是:
javah
javah
Program:$JDKPath$\bin\javah.exe
Parameters:-classpath . -jni -d $ModuleFileDir$\src\main\jni $FileClass$
Working directory:$ModuleFileDir$\src\main\Java

2.ndk-build配置


ndk-build配置.jpg

代码,从上到下依次是:

ndk-build
ndk-build
C:\Users\Administrator\AppData\Local\Android\Sdk\ndk-bundle\build\ndk-build.cmd
空着就行
$ProjectFileDir$\app\src\main

其中C:\Users\Administrator\AppData\Local\Android\Sdk\ndk-bundle\build\ndk-build.cmd为你安装ndk的目录下的ndk-build.cmd文件,其他地方用到此路径同理

2.ndk-build clean配置


ndk-build clean配置.jpg

代码,从上到下依次是:

ndk-build clean
ndk-build clean
C:\Users\Administrator\AppData\Local\Android\Sdk\ndk-bundle\build\ndk-build.cmd
clean
$ProjectFileDir$\app\src\main
此处即配置完成,接下来可以直接使用

1.main下面新建jni文件夹与java文件夹同级
jni文件夹下新建Application.mk类

APP_MODULES := TestNdkLibrary(此处TestNdkLibrary是生成的so库名称 随便取)
APP_ABI := all
APP_STL := c++_static
APP_PLATFORM :=android-19
APP_CPPFLAGS += -fexceptions

jni文件夹下新建Android.mk类

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := TestNdkLibrary(此处TestNdkLibrary是生成的so库名称 随便取)
LOCAL_SRC_FILES =: iBeaconLocation.cpp json_reader.cpp json_value.cpp json_writer.cpp BasicAlgorithm.cpp iNavigation.cpp JNIiNavigation.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../jni/include
include $(BUILD_SHARED_LIBRARY)

2.app下build.gradle

android {
……
ndk{
            moduleName "TestNdkLibrary"
            abiFilters "armeabi", "x86" , "arm64-v8a", "armeabi-v7a", "x86_64"
        }
        sourceSets.main{
            jni.srcDirs = []
            jniLibs.srcDir "src/main/libs"
        }
}

3.新建TestNdk.java类

public class TestNdk {
    public TestNdk(){
        System.loadLibrary("TestNdkLibrary");//打印方法
    }
}

4.选中TestNdk.java类,鼠标右键可以看到三个刚才配置好的菜单


image.png

javah是生成.h的类
ndk-build是生成.so库
ndk-build clean是清除所有生成过的.so库

你可能感兴趣的:(android studio无需命令行,jni实现)