博客
关于我
Android Studio NDK 如何生成so
阅读量:507 次
发布时间:2019-03-07

本文共 1120 字,大约阅读时间需要 3 分钟。

Android Studio NDK 如何生成so

先来看下代码

MyNdkUtil.java

package com.heiko.ndksotest;public class MyTestNdk {    static {        System.loadLibrary("native-lib");    }    public native String stringFromJNI();}

native-lib.cpp

#include 
#include
extern "C"JNIEXPORT jstring JNICALLJava_com_heiko_ndksotest_MyTestNdk_stringFromJNI(JNIEnv *env, jobject instance) { /*std::string hello = "Hello from C++ !"; return env->NewStringUTF(hello.c_str());*/ char* hello = "Hello from C++ !!"; return env->NewStringUTF(hello);}

接着,编译NDK项目

编译so

然后,在项目中找到so文件

找到so

接着,将so及MyTestNdk.java复制到另外的项目中使用

使用so

其中,MyTestNdk.java的包名必须与原报名一致。

值得一提的是,在正式的环境中,一般会将这些java文件打包成jar包,将jar及so文件直接提供给调用者使用。

最后,在MainActivity.java中调用并运行

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TextView tv = (TextView) findViewById(R.id.sample_text);        MyTestNdk myTestNdk = new MyTestNdk();        tv.setText(myTestNdk.stringFromJNI());    }}

App界面显示 Hello from C++ !!,至此调用成功。

你可能感兴趣的文章
Netty在IDEA中搭建HelloWorld服务端并对Netty执行流程与重要组件进行介绍
查看>>
Netty基础—1.网络编程基础一
查看>>
Netty基础—1.网络编程基础二
查看>>
Netty基础—2.网络编程基础三
查看>>
Netty基础—2.网络编程基础四
查看>>
Netty基础—3.基础网络协议一
查看>>
Netty基础—3.基础网络协议二
查看>>
Netty基础—4.NIO的使用简介一
查看>>
Netty基础—4.NIO的使用简介二
查看>>
Netty基础—5.Netty的使用简介
查看>>
Netty基础—6.Netty实现RPC服务一
查看>>
Netty基础—6.Netty实现RPC服务三
查看>>
Netty基础—6.Netty实现RPC服务二
查看>>
Netty基础—7.Netty实现消息推送服务一
查看>>
Netty基础—7.Netty实现消息推送服务二
查看>>
Netty基础—8.Netty实现私有协议栈一
查看>>
Netty基础—8.Netty实现私有协议栈二
查看>>
Netty多线程 和 Redis6 多线程对比
查看>>
Netty学习总结(1)——Netty入门介绍
查看>>
Netty学习总结(2)——Netty的高性能架构之道
查看>>