先去下载NDK
下载过程非常长,现在完后,你的NDK路径在这里
然后就需要去配置环境变量:
然后去Path里面配置上这个
然后去黑窗口输入ndk-build:
然后打开你的Studio开始创工程
点加号创建
方便粘贴内容给出:
$JDKPath$\bin\javah.exe -classpath . -jni -d $ModuleFileDir$/src/main/jni $FileClass$ $ModuleFileDir$\src\main\java
再点+号
E:\androidstudio\studiosdk\ndk-bundle\ndk-build.cmd//自己去自己的NDK下面找这个文件去,误粘 $ModuleFileDir$\src\main\ //不管自动出来什么删掉,粘这个,本人被坑了一天,百度都没看董
创建一个类Utils2:
public class Utils2 { public native int chengfa(int a,int b); }
然后点击:
然后再往类里面加上
就在刚写的类里面加
static { System.loadLibrary("MySo"); }
然后换成Project的文档查看方式在main下就能看到你有了一个jni文件里面多了一个h文件如果没有,先不要往下进行了,胜败乃兵家常事大侠请重新来过。
如果出来了那么久接着走
点击下拉创建一个c文件
然后写代码:
#include<stdio.h> #include<jni.h> #include<stdlib.h> #include "rise_lung_sow_dra_ceshindk_Utils2.h"//写你自己生成的h文件的文件名 JNIEXPORT jint JNICALL Java_rise_lung_sow_dra_ceshindk_Utils2_chengfa//从h文件里将你的方法粘过来,然后去掉“;”写成大括号,自己把参数名加上然后大括号里面写代码 (JNIEnv *env, jobject thisz, jint a, jint b){ return a*b; }
然后创建Android.mk文件还是jni文件下创建file
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := MySo//这里写你上面后加到类里面的代码里的名字,不懂的看图 LOCAL_SRC_FILES := test2.c//这个写c文件的名字 include $(BUILD_SHARED_LIBRARY)
然后右击你的c文件
然后控制台会提示你生成的文件,生成完之后是这样
然后在你的main下创建jniLibs文件把你lib里面的文件全部复制一份粘到里面,然后把生成的lib删掉
然后打开appbuild将下面的代码粘到android下
sourceSets.main { jniLibs.srcDir 'libs' jni.srcDirs = [] }
然后在MainActivity里面调用:
Utils2 utils2 = new Utils2(); int chengfa = utils2.chengfa(3, 5); Toast.makeText(MainActivity.this,"乘法:"+chengfa,Toast.LENGTH_LONG).show();
然后点击运行。本人请测。