博客
关于我
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++ !!,至此调用成功。

你可能感兴趣的文章
Mysql建立中英文全文索引(mysql5.7以上)
查看>>
mysql建立索引的几大原则
查看>>
Mysql建表中的 “FEDERATED 引擎连接失败 - Server Name Doesn‘t Exist“ 解决方法
查看>>
mysql开启bin-log日志,用于canal同步
查看>>
MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
查看>>
MySQL异步操作在C++中的应用
查看>>
MySQL引擎讲解
查看>>
Mysql当前列的值等于上一行的值累加前一列的值
查看>>
MySQL当查询的时候有多个结果,但需要返回一条的情况用GROUP_CONCAT拼接
查看>>
MySQL必知必会(组合Where子句,Not和In操作符)
查看>>
MySQL必知必会总结笔记
查看>>
MySQL快速入门
查看>>
MySQL快速入门——库的操作
查看>>
mysql快速复制一张表的内容,并添加新内容到另一张表中
查看>>
mysql快速查询表的结构和注释,字段等信息
查看>>
mysql怎么删除临时表里的数据_MySQL中关于临时表的一些基本使用方法
查看>>
mysql性能优化
查看>>
mysql性能优化学习笔记-存储引擎
查看>>
MySQL性能优化必备25条
查看>>
Mysql性能优化(1):SQL的执行过程
查看>>