android jni 开发 第一章

一直想学习 Android 的JNI 的开发,但是一直没有时间。现在抽空学习了一下,再次写个博客当个笔记。

在网上找了相关的文章以及教程,然后总结了一下,记在这里。话不多言,直接开始。

环境配置

本人使用的是Android studio ,首先是下载 NDK


点击 OK 下载
下载完成后需要配置相关路径

打开电脑的环境配置,设置 ndk 的路径

打开命令窗口 敲入 ndk-build 出现如下界面,则环境配置成功


打开Android studio 新建项目,在 local.properties 中配置ndk 路径

打开项目下的 gradle.properties 添加代码
android.deprecatedNdkCompileLease=1517738977337

在项目中新建一个文件 Mp3Coder.java 如下

在main下新建文件夹 jni

在jni文件夹下新建文件Mp3Coder.c 文件(此处的文件名 随意 只需是 .c的文件)

在新建的 .c文件中输入一下代码

#include#include#include
jstring Java_com_example_mp3application_Mp3Coder_getCode(JNIEnv* env,jobject obj){

        return (*env)->NewStringUTF(env,"hello hhhh");
};
此处的
Java_com_example_mp3application_Mp3Coder_getCode

是与Mp3Coder.java 中的 native 方法对应的 (所有的 . 更换成 _ )


在前面需要加上 大写的 Java
在 APP 的module下的 build.gradle 中添加 ndk 节点


moduleName "Mp3Coder"
moduleName 的名称需要和 文件名称一致。

在Mp3Coder.java文件中添加引用

public class Mp3Coder {

    {
        System.loadLibrary("Mp3Coder");
    }

    public native String getCode();
}
System.loadLibrary 的名称 需要和 build.gradle 中添加 ndk 节点的名称一致

build项目

完成之后会在 app\build\intermediates\ndk\debug\lib 下面生成对于的 .so文件

运行程序之后模拟器会打印对于的文字

附上 代码

mainactivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView=(TextView)findViewById(R.id.tv_dd);
        textView.setText(new Mp3Coder().getCode());
    }
}
Mp3Coder.java

public class Mp3Coder {

    {
        System.loadLibrary("Mp3Coder");
    }

    public native String getCode();
}
Mp3Coder.c

#include#include#include
jstring Java_com_example_mp3application_Mp3Coder_getCode(JNIEnv* env,jobject obj){

        return (*env)->NewStringUTF(env,"hello hhhh");
};
如有不足之处,后续修改添加

猜你喜欢

转载自blog.csdn.net/weixin_41191134/article/details/79266121