文档章节

【NDK】NDK初入门

2tman
 2tman
发布于 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!看到没,就这么搞定!

© 著作权归作者所有

共有 人打赏支持
2tman
粉丝 12
博文 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

没有更多内容

加载失败,请刷新页面

加载更多

df和du命令 磁盘分区

9月25日任务 4.1 df命令 4.2 du命令 4.3/4.4 磁盘分区 df 命令 查看系统磁盘空间使用情况 常用参数 -h (human-readble) # 人性化的为空间大小转换单位显示[root@centos7 ~]# df -h文件系...

robertt15
15分钟前
0
0
【a&sAI创新】华为CloudIVS轻量云:借力打力,四两拨千斤

[摘要] 1、测评表现就目前来说,AI的门槛还是比较高的,业内所熟知的算法企业,为了追求算法的极致,比如人脸识别公司,仍在不断扩大研发...   1、测评表现   就目前来说,AI的门槛还是比...

yizhichao
31分钟前
1
0
安卓安装APK报错error: INSTALL_FAILED_UPDATE_INCOMPATIBLE

记录一个 DELETE_FAILED_INTERNAL_ERROR Error while Installing APK问题 之前遇到这个问题 方案1 将data/data/目录下该应用的包名的目录删除掉,如:adb shell rm -rf data/data/com.demo.h...

切切歆语
32分钟前
0
0
用网关zuul时,熔断hytrix里面的坑

1,zuul 默认的隔离级别是信号量,默认最大隔离信号量是100 信号量隔离和线程池隔离的区别如下: https://my.oschina.net/u/867417/blog/2120713 默认设置: 2,zuul里隔离是按服务隔离的,也...

爱吃大肉包
32分钟前
0
0
使用SSM+Solr优雅的实现电商项目中的搜索功能

在学习了Redis&Spring-Data-Redis入门和Solr&Spring-Data-Solr入门后,接下来就该是项目实战了。这次我们用Vue.JS和ElementUI写前端页面,优雅的整合SSM-Shiro-Redis-Solr框架。 手摸手教你优...

TyCoding
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部