加入收藏 | 设为首页 | 会员中心 | 我要投稿 171手机网 (https://www.171shouji.cn/)- 云手机、5G、智能手机、新款手机、手机推荐!
当前位置: 首页 > 安卓频道 > 安卓资讯 > 正文

Android NDK开发之最简单的Hello

发布时间:2017-06-06 07:02:01 所属栏目:安卓资讯 来源:www.yidianzixun.com
导读:前言为了能让所有的童鞋都能写出helloworld,博客中会详细说明配置的过程,虽然不麻烦,但是博主还是会写清楚的demo流程新建一个项目在main目录下新建一个jni目录在其中编写c代码在activity中加载这个库,调用方法显示首先我们新建一...

前言为了能让所有的童鞋都能写出helloworld,博客中会详细说明配置的过程,虽然不麻烦,但是博主还是会写清楚的demo流程新建一个项目在main目录下新建一个jni目录在其中编写c代码在activity中加载这个库,调用方法显示首先我们新建一...

前言

为了能让所有的童鞋都能写出hello world,博客中会详细说明配置的过程,虽然不麻烦,但是博主还是会写清楚的

demo流程
  • 新建一个项目
  • 在main目录下新建一个jni目录
  • 在其中编写c代码
  • 在activity中加载这个库,调用方法显示

首先我们新建一个项目

Android NDK开发之最简单的Hello

然后在main目录下新建一个jni目录,里面有一个c文件源码

Android NDK开发之最简单的Hello

开头的时候不一定非要引用jni.h,但是如果不引用ide没有提示是一方面,另一方面是jni.h里面提供了大量方便开发人员开发的方法

#include jstring Java_com_move_demo_MainAct_getString(JNIEnv *env) { return(*env)->NewStringUTF(env, "hello world jin"); }

这里面代码的具体意思不需要现在就搞懂,只要知道这里返回了一个字符串,然后方法名字为什么这么长也是有规律的,因为这个方法名字必须是Java_开头的,然后后面是调用这个方法的java native方法的路径

package com.move.demo; publicclassMainActextendsAppCompatActivity {static { System.loadLibrary("hello"); } @OverrideprotectedvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act_main); ((TextView) findViewById(R.id.tv)).setText(add); } privatestaticnative String getString; }

看到了吧,那个c语言中的方法就是activity中这个getString方法的路径 然后我们静态初始化的时候加载了库,然后就可以使用了

描述库的Android.mk文件

上面我们可以看到有一个Android.mk文件,这里我们也不详细说明,只要先能跑出Hello World就行,里面的内容是

LOCAL_PATH:= $(call my-dir) include$(CLEAR_VARS) LOCAL_MODULE:= hello LOCAL_SRC_FILES:= hello.c include$(BUILD_SHARED_LIBRARY)

表示c的源文件的是hello.c,编译成的库的名字是hello,这也就是我们在Activity中加载的那个库,不可以写错哦,不然运行肯定失败的

最后一点

build文件中让ide去编译c文件并且打包

Android NDK开发之最简单的Hello

配置的地方我用红色框框圈出来了

最后运行成功了

Android NDK开发之最简单的Hello

(编辑:171手机网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读