android JNI (二) 第一个 android工程
下载NDK 后 它自带有 sample,初学者 可以导入Eclipse 运行
这里 我是自己创建的一个新工程
第一步: 新建一个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吧~~~~~~~
android JNI (二) 第一个 android工程的更多相关文章
- Android jni 二维数组 传递
学习Android Jni时,一个二维 整数 数组的传递花了我好长时间,在网上查的资料都不全,当然最后是成功了,写在这里是为了自己记住,当然有人搜索到并利用了我会很高兴. in Android J ...
- Android逆向 破解第一个Android程序
这节正式开始破解编写的第一个Android工程,打开Android Killer,把第一节自己编写的Android apk拖入Android Killer. PS: 如果Android Killer不 ...
- Android笔记二十四.Android基于回调的事件处理机制
假设说事件监听机制是一种托付式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说事件监听器全然消失了,当用户在GUI控件上激发某个事件时,控 ...
- 【Android实验】第一个Android程序与Activity生命周期
目录 第一个Android程序和Activity生命周期 实验目的 实验要求 实验过程 1. 程序正常启动与关闭 2. 外来电话接入的情况 3. 外来短信接入的情况 4. 程序运行中切换到其他程序(比 ...
- Creating an Android Project(创建一个android项目)
一个android项目包含了你的应用程序中的所有源代码文件,我们可以通过android sdk tools轻松地创建一个拥有默认文件跟文件夹的android项目. 这部分课程我们将展示两种创建andr ...
- Spring Boot2 系列教程 (二) | 第一个 SpringBoot 工程详解
微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 哎呦喂,按照以往的惯例今天周六我的安排应该是待在家学学猫叫啥的.但是今年这种日子就可能一去不复返了,没法办法啊.前 ...
- [Android Memory] 怎样使一个Android应用不被杀死
转载自: http://blog.sina.com.cn/s/blog_3e3fcadd0100yjo2.html 参考:http://blog.csdn.net/windskier/article/ ...
- 从零开始学android开发-创建第一个android项目
打开ADT开发工具
- day01_使用Android Studio创建第一个Android项目
使用Android Studio开发Android项目如此简单 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize ...
- Android进阶(二十四)Android UI---界面开发推荐颜色
Android UI---界面开发推荐颜色 在Android开发过程中,总要给app添加一些背景,个人认为使用纯色调便可以达到优雅的视觉效果. 补充一些常用的颜色值:colors.xml < ...
随机推荐
- 转:CentOS6.3配置yum源
全新以最小化包安装了64位的CentOS6.3系统,作为本地的Web服务器使用,现记录全过程第二步,配置网易163的yum源 1. 下载repo文件 下载地址:http://mirrors.16 ...
- 【Maven实战】archetype的使用和eclipse的配置
1.之前在进行项目的构建时都是使用手工进行文件夹的建立,maven也给我们提供了一个参数archetype,可以用来进行项目骨架的建立.使用maven archetype:generate进行创建: ...
- 改进了UI的界面
小峤提醒我,千万要记住, 调用JS之前,一定要先加载哟~~~ <!--[if lt IE 9]> <script src="/static/js/jquery1.11.1. ...
- 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai 的数 ...
- 【转】TCP三次握手过程
写的非常明白:http://www.cnblogs.com/rootq/articles/1377355.html TCP协议三次握手过程分析 TCP(Transmission Control Pro ...
- 慕课网《Android智能机器人“小慕”的实现》项目上手操作与代码解读【2】
前几天有点忙,一直没写第三方API是怎么调用的,今天我先介绍一下如何调用图灵机器人第三方API. 一.图灵机器人API的调用 首先登录图灵机器人官网首页http://www.tuling123.com ...
- RMQ——[USACO Jan07] 均衡队形题解
题目:[USACO Jan07] 均衡队形 描述: 题目描述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按同样的顺序站好.一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比 ...
- codeforces MemSQL start[c]up Round 2 - online version B 最长公共子系列
题目链接: http://codeforces.com/contest/335/problem/B 分析: 第一眼看上去串的长度为5*10^4, 冒似只能用O(n)的算法可解. 而这样的算法从来没见 ...
- nc命令
监视指定网络接口的数据包 nc -l -u 1001 像指定端口使用指定协议发送数据包 nc -l -u 192 168.10.11 1001
- MySQL定时事件
1.创建一个测试表 CREATE TABLE aaa (timeline TIMESTAMP); 2.创建一个事件:每秒插入一条记录到数据表 CREATE EVENT e_test_insert SE ...