Android Studio JNI 初体验

环境准备

  1. ndk 环境设置
    这里写图片描述
    我选择了lldb ndk 然后next 直接就行了
  2. java 要正确设置

概念

  1. ndk是个啥?
    ndk: Native Development Kit
    NDK允许开发人员使用本地代码语言(例如C和C++)实现应用的部分功能。这样以代码重用的形式能够给某类应用提供方便,而且在某些情况下能提高运行速度…巴拉巴拉一堆

call c

  • 新建工程 myNDK

这里写图片描述
一路点击,最后完成。
* 创建一个弹窗

这里写图片描述
在MainActive增加代码

        Button btn = (Button)findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new AlertDialog.Builder(MainActivity.this)
                        .setTitle("标题")
                        .setMessage("内容")
                        .setPositiveButton("确定", null)
                        .show();
            }
        });

这里写图片描述
这里写图片描述

  • 增加JNIdemo.java,内容如下:

public class JNIdemo{
    static {
        System.loadLibrary("JNIdemo");
        //这里的"JNIdemo"要和build.gradle里面设置的名字,必须一致,其实这里用的是后来生成的so的名字,两者一致就好
    }
    public static native String callc();
}
  • 目录结构如下
    这里写图片描述
  • 完成后,执行Build->reBuild Project 会生成class文件,目录结构如下
    这里写图片描述
    到classes/debug/文件夹下,Shift+鼠标右键,选择“此处打开命令窗口”输入javah命令,生成.h文件
javah -jni com.example.demo.myndk.JNIdemo

生成.h文件
在src/main下建立文件夹jni,把这个.h文件拷贝进去,并建立.c文件(注意,这里不是cpp文件)
这里写图片描述
代码如下

#include "com_example_demo_myndk_jnidemo.h"
JNIEXPORT jstring JNICALL Java_com_example_demo_myndk_JNIdemo_callc
  (JNIEnv *env, jclass obj){
  return (*env)->NewStringUTF(env,"this is Android call C ");
  }

在grade.properties文件增加
android.useDeprecatedNdk=true
在app下的build.gradle的defaultConfig节点增加

     ndk {
            moduleName "JNIdemo"          //生成的so名字
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

在MainActive里调用代码如下

...
import static com.example.demo.myndk.JNIdemo.callc;
...
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s = callc();
                new AlertDialog.Builder(MainActivity.this).setTitle(s).setMessage("内容")
                        .setPositiveButton("确定", null).show();
            }
        });

Build->Rebuild Project看看是否报错
这里写图片描述

结语

本次是第一次使用java,第一次开发android.由于工作需要,不足之处还请谅解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值