文档章节

【NDK】NDK初入门

2tman
 2tman
发布于 2016/05/18 12:06
字数 433
阅读 50
收藏 4
点赞 2
评论 0

下载地址:

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!看到没,就这么搞定!

© 著作权归作者所有

共有 人打赏支持
2tman
粉丝 11
博文 115
码字总数 31481
作品 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
Android NDK 原理

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

晨曦之光
2012/03/09
363
0
Android NDK 原理

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

晨曦之光
2012/03/07
449
0
AndroidStudio3.0NDK输出多个so库

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

静默加载
04/12
0
0
自省

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

吴七禁
2017/11/10
0
0
【jni 编程】—— NDK环境搭建

在《站在巨人的肩膀上,谈app的创新性》一文中 http://my.oschina.net/liusicong/blog/311971,我提到过构建app技术壁垒的必要性。在构建技术壁垒时,我们往往需要调用许多库函数,例如:图像...

刘小米
2014/09/10
0
0
Android NDK 入门与实践

Android NDK 入门与实践 吴小龙同學2017-12-271 阅读 NDK NDK 是什么 NDK 全称 Native Development Kit,可以让您在 Android 应用中调用 C 和 C++ 代码的工具。 NDK 好处 1、NDK 可以生成 .s...

吴小龙同學
2017/12/27
0
0
用Android NDK编译FFmpeg

原文转自:http://abitno.me/compile-ffmpeg-android-ndk Android内置的编解码器实在太少,于是我们需要FFmpeg。Android提供了NDK,为我们使用FFmpeg这种C语言代码提供了方便。 不过为了用N...

华宰
2011/09/08
12.6K
1
Android NDK 入门

原文转自:http://abitno.me/a-simple-tutorial-to-android-ndk 我理解的NDK是允许你把程序的一部分代码用C或C++来实现,通过JNI与Java代码交互。不要想整个程序都用C/C++完成,Android是不允...

华宰
2011/09/08
2.3K
1
Android NDK开发之旅 目录

Android NDK开发之旅 目录 Android NDK开发之旅1--NDK介绍 Android NDK开发之旅2--C语言--基本数据类型 Android NDK开发之旅3--C语言--指针 Android NDK开发之旅4--C语言--动态内存分配 Andr...

香沙小熊
2017/12/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
37分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
52分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
245
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
3
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部