【Android】Jni开发部署

1,环境部署

AndroidStudio(4.xxx以上版本)安装NDK、CMake插件/

2,简单示例

(1)main目录下创建jni子目录

(2)创建demo.cpp文件

注意,方法名对应native方法目录,如com.zjw.demo目录下MainActivity#getFromJni()声明如下:

#include "demo.h"
#include<jni.h>
#include<stdio.h>
extern "C"
{
    JNIEXPORT jstring JNICALL Java_com_zjw_demo_MainActivity_getFromJNI(JNIEnv *env, jobject obj ){
    return env -> NewStringUTF("Hello,I am from JNI!");
	}
}

 (3)创建Android.mk和Application.mk文件

这两个文件是用来指定编译路径、编译平台等配置

//Android.mk

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

//Application.mk
//空

LOCAL_MODULE是生成so库名。

(4)activity中声明native方法

System.loadLibrary()方法是生成so库libxxx后xxx,也就是之前声明的模块名

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.myapplication.R;

public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary("hello_jni");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.demo).setOnClickListener(view -> {
            ((Button) findViewById(R.id.demo)).setText(getFromJNI());
        });
    }


    public native String getFromJNI();
}

(5)生成so库

切换命令行到jni目录,运行”ndk-build“命令,自动生成so库。

如果找不到目录,请配置环境变量或者ndk-build全路径输入。

自动生成jniLibs目录,如果生成的是libs目录,请改名,否则找不到so库。生成各架构平台下的so库。

 (6)运行

 

点击按钮,就能拿到jni返回的字符串了

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值