这里是自己创建的一个新工程

第一步: 新建一个Android工程 jni_test

第二步:为工程添加 本地支持

右击工程,选择 android tools -- Add Native support 后,会弹出一个对话框 让你输入 库的名称

这个名字 你可以做修改,也可以使用默认,点击finish 之后,你会发现 该工程里多了几个文件夹,其中有一个叫 jni,这里 就是我们写c代码的地方,jni文件夹里默认产生2个文件,一个是cpp,还有一个是 mk文件

接下来 需要在 Java代码中 加载 库文件,以及声明 本地方法,如下

//声明 本地方法

public native String getStr();

//jni_test 是 库的文件名,也是刚才弹出对话框中 输入的名称,也是编译c文件后 产生的 so文件的名字

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

注意,如果你需要是在activity里直接使用 本地方法的话,先去掉 extend activity 这段代码

接下来 我们用命令生成 头文件。

通过cd 命令进入工程,然后执行 javah -classpath bin/classes -d jni 使用本地代码的类的全名

如果javah 命令不可用的 ,表示你的java环境变量没有配置对

执行成功后,可以在 jni这个文件夹里 发现 多了一个 .h的文件

当然 你也可以不用 javah 去产生头文件。

产生的头文件名字很长,我们可以做个修改,这里我修改为 jni_test.h

接下来我们需要在 cpp文件里 根据我们的头文件编写 代码

#include <jni.h>
#include <jni_test.h>
JNIEXPORT jstring JNICALL Java_com_zhangyi_android_jnitest_MainActivity_getStr
(JNIEnv *env, jobject obj){
return env->NewStringUTF("你好,我来自c");
}

接下来,我们需要修改 activity的代码,因为 java代码 只声明了 本地代码,没有调用, 在布局文件里添加一个文本文件,然后 初始化它(不写代码了哈,能看到这个地方来的人 都是具备一定的android基础) 为该文本控件 设置 内容 为getStr();

代码编写完成,run吧~~~~~~~

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Camera服务之--架构浅析
  4. Android(安卓)Studio插件之Android(安卓)Strings.xml To CSV Con
  5. 关于Android使用proguard进行代码混淆
  6. Android实现动态改变app图标的示例代码
  7. Android(安卓)结束通话--实现黑名单拦截
  8. Android(安卓)- 文件读写操作 总结
  9. 在Android(安卓)Studio中使用Android-PullToRefresh Library

随机推荐

  1. Android:控件Spinner实现下拉列表
  2. 横屏和竖屏切换界面不刷新
  3. Android开发技术周报 Issue#72
  4. 遥控器新增键值
  5. Android 消息机制之 MessageQueue 消息队
  6. android:scaleType详解
  7. android富文本 加载带图片的html
  8. Android之RecyclerView实现时光轴
  9. Android ContentProvider实例详解
  10. Android Dependencies