public class MainActivity extends AppCompatActivity { // 加载so static { System.loadLibrary("native-lib"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = findViewById(R.id.sample_text); tv.setText(getString()); } /** * 定义native方法 */ public native String getString(); } 复制代码
#include <jni.h> #include <string> /** * extern "C" :主要作用就是为了能够正确实现C++代码调用其他 C语言 代码 * JNIEXPORT,JNICALL :告诉虚拟机,这是jni函数 */ extern "C" JNIEXPORT jstring JNICALL native_getString(JNIEnv *env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); } /** * 对应 java 类的全路径名,.用/代替 */ const char *classPathName = "com/chenpeng/registernativemethoddemo/MainActivity"; /** * JNINativeMethod 结构体的数组 * 结构体参数1:对应java类总的native方法 * 结构体参数2:对应java类总的native方法的描述信息,用javap -s xxxx.class 查看 * 结构体参数3:c/c++ 种对应的方法名 */ JNINativeMethod method[] = {{"getString", "()Ljava/lang/String;", (void *) native_getString}}; /** * 该函数定义在jni.h头文件中,System.loadLibrary()时会调用JNI_OnLoad()函数 */ JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { //定义 JNIEnv 指针 JNIEnv *env = NULL; //获取 JNIEnv vm->GetEnv((void **) &env, JNI_VERSION_1_6); //获取对应的java类 jclass clazz = env->FindClass(classPathName); //注册native方法 env->RegisterNatives(clazz, method, 1); //返回Jni 的版本 return JNI_VERSION_1_6; } 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- .net core3.1 abp动态菜单和动态权限(动态菜单实现和动态权限添加) (三)
- 动态代理三部曲(一):动态代理模式及实现原理
- 你必须会的 JDK 动态代理和 CGLIB 动态代理
- 彻底搞懂jdk动态代理并自己动手写一个动态代理
- Android程序员必会技能---运行时动态生成类---之动态代理
- 安卓动态加载技术
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Hard Thing About Hard Things
Ben Horowitz / HarperBusiness / 2014-3-4 / USD 29.99
Ben Horowitz, cofounder of Andreessen Horowitz and one of Silicon Valley's most respected and experienced entrepreneurs, offers essential advice on building and running a startup—practical wisdom for ......一起来看看 《The Hard Thing About Hard Things》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
RGB HSV 转换
RGB HSV 互转工具