文档章节

【NDK】NDK初入门

鬼风
 鬼风
发布于 2016/05/18 12:06
字数 433
阅读 52
收藏 4

下载地址:

http://blog.csdn.net/lanergaming/article/details/39855033

http://www.androiddevtools.cn/

配置ndk:

 

jni头文件需要用到javah命令:

开始生成步骤:

1、

可以发现上面出现找不到类文件的问题

2、解决方法:找到sdk里的android.jar目录

3、会发现项目里多了jni的目录和.h头文件

4、配置下ndk的环境变量

5、验证下是否配置成功

6、项目添加.mk文件,可以参考google的hello-jni的demo,直接copy过来改下
地址:https://github.com/googlesamples/android-ndk/tree/android-mk

文件如图,直接copy到自己的工作目录jni文件夹下,修改下即可

修改说明:

# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#.so文件的名字
LOCAL_MODULE    := hello
#对哪个c文件进行编译
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

7、最后到自己的项目目录里编译下

再到项目里刷新下就可以看到神奇的.so文件了

如图会生成obj>local>armeabi>文件目录,便是编译成功了。

8、好了,进展到最后了,我们开始小试牛刀了,开启“Hello World”装逼模式

在Activity里使用:

/**
 * jni头文件 通过javah的命令
 * @author haoxi
 *
 */
public class MainActivity extends Activity {
	
	static{
		System.loadLibrary("hello");
	}
	
	private TextView tv_test;
	
	public static native String getStringFromC();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		tv_test = (TextView)findViewById(R.id.tv_test);
		tv_test.setText(getStringFromC());
	}

	
}

如图所示:改了下逼格,Hello from JNI!看到没,就这么搞定!

© 著作权归作者所有

共有 人打赏支持
鬼风
粉丝 12
博文 113
码字总数 32371
作品 0
苏州
Android工程师
私信 提问
【NDK】NDK概念

1、ndk是什么 官方地址: https://developer.android.com/ndk/index.html 2、什么场景可以应用ndk 1.代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大 2.在NDK中调用第...

小树coding
2016/05/18
66
0
AndroidStudio3.0NDK输出多个so库

个人博客地址 http://dandanlove.com/ 前言 去年的 Android之NDK开发初体验 这篇文章讲述NDK开发环境的搭建,以及在AndroidStudio3.0版本之前的NKDK简单开发。这次升级到Android Studio3.1,...

静默加载
04/12
0
0
Android NDK 原理

本文介绍Android NDK 原理, 熟悉此教程, 需要有JNI的基础, 以及Android 应用程序的入门知识(环境搭建, 工程运行等), 可以查看本站的其它文章. 本文关注Android NDK的原理知识. 关于JNI的基本...

晨曦之光
2012/03/07
449
0
Android NDK 原理

本文介绍Android NDK 原理, 熟悉此教程, 需要有JNI的基础, 以及Android 应用程序的入门知识(环境搭建, 工程运行等), 可以查看本站的其它文章. 本文关注Android NDK的原理知识. 关于JNI的基本...

晨曦之光
2012/03/09
363
0
自省

就在前两天写完一部分Handler源码分析的文章后意识到了两个问题: 现在的学习进度太慢了,如果以这个速度下去定好的目标根本完不成。 我忘了来简书的初心,来简书不是来交朋友的,也不是为了...

吴七禁
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 谁小时候没当过熊孩子呀

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《行尸走肉》- amazarashi 《行尸走肉》- amazarashi 手机党少年们想听歌,请使劲儿戳(这里) @神话 :周五了,周末干啥...

小小编辑
29分钟前
18
1
docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
14
0
ios多个target

1.建立3个target,分别为heroone,heroone test,heroone dev;分别为正式环境,test环境,dev环境 2.注意取消掉autocreate以防止名字不对,分别以Duplicate的方式建立另外两个scheme 3.创建...

HeroHY
今天
8
0
php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
2
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部