android NDK环境搭建及练习

WIndows环境NDK环境搭建:
1. ndk资源,百度ndk去官网下载;有的是压缩包,有的exe文件,都是双击解压到当前文件夹


2. Cygwin是一种在windows环境下用Linux编译的软件,因为最终的程序在android或者ios内核都是Linux,所以难免程序用编译linux;该工具下载去Cygwin官网下载;下载后安装教程可以百度,很多图文教程;大概说一下:官网下载后,打开软件,这软件还要从网上去下载软件安装(自由定制化的软件,像Linux一样,选择自己想安装),并且选择下载的url尽量选择带.cn的域名,国外的域名下载很慢甚至不能下载;

3. 以上我们需要的软件,最后利用上面两个软件进行环境配置:
a. 打开Cygwin安装目录下的Cygwin.bat  敲入命令:gcc -v 让其自动生成一些环境信息
b. 在Cywin目录下回有一个/home/<windows user>/.bash_profile文件,打开此文件,在最后一行加入:
NDK=/cygdrive/f/eclispse/ndk/android-ndk-r10d
export NDK
NDK是自定义的名称,后面是我们之前解压的ndk目录

4. 测试验证我们的环境是否搭建好;
a. 启动Cygwin.bat; 切换目录 cd $NDK  在切换至ndk目录下的sample/hello-jni
b. 执行命令将生成so文件;  $NDK/ndk-build就可以在hello-jni的lib下生成so文件了;去该路径去查看就知道是否环境搭建成功了

Ubuntu 系统下NDK环境配置:

1. 下载Linux 版本的NDK资源,解压即可

2. 在当前用户目录下有一个~/.bashrc配置文件,在最后一行写入

即可;

最后输入命令:

即可生效


第一个NDK project:
1. 在Eclipse里面创建android project

2. 声明native方法,生成class文件后,在src目录下执行:javah -d ../jni 包名.类名生成.h头文件;  -d是强制创建一个jni目录,并把.h文件放在jni下面


3. 根据头文件,我们在jni路径下创建C/C++源文件;


4. 在jni路径下,创建android.mk文件,此文件是向我们的android编译系统描述C/C++代码模块的


5. 最后一步生成so文件,打开Cygwin文件,切换到我们刚才的jni路径下,执行命令:$NDK/ndk-build;成功就会生成so文件了


6. java代码里面static {loadlibrary()}即可,运行;注意,生成的so文件前面都会加上lib前缀,但是loadlirbary里面加载库则不要加lib前缀,也不要加.so后缀


解释android.mk文件含义:
文件用途:
android.mk编译文件向android NDK描述你的用C/C++源文件,它是GNU makefile的一部分


文件内容解释:
LOCAL_PATH := $(call my-dir)//用于开发数查找源文件;my-dir是由编译系统提供的宏函数,返回当前路径,即使anroid.mk的路径


include $(CLEAR_VARS)//编译系统提供的,用于清除许多LOCAL_XXX变量,除LOCAL_PATH不能清除外


LOCAL_MODULE  := myjni//android.mk中描述的每个模块名字,不能有空格;最终生成so文件时变成libmyjni.so文件;如果取名的时候就取为libmyjni,生成so文件后将不会再添加


LOCAL_SRC_FILES := myjni.cpp//具体的源代码文件


include $(BUILD_SHARED_LIBRARY)//编译系统决定的,指向GNU makefile的一个脚本(build/core/shared_library.mk),负责收集从上一次CLEAR_VARS以来的LOCAL_XX信息,决定编译什么,如何正确的编译,生成so文件

编写native的类

package com.jack.elftype;

/**
 * Created by jackzhous on 17-11-9.
 */
public class NativeUtils {
    public static native String getString();
}


将java文件生成class文件

使用javac命令: javac java文件



生成头文件命令:
javah +包名.类名   注意是在:project/src下进行

由于新版本的jdk取消了javah命令,可以用javac来替换

javac -h ../jni ./com/jack/mainactivity.java         //-h表示强制在上一级目录下生成jni文件,并把生成的头文件.h放到该路径下

注意我的路径

后面就可以在jni里面创建C文件执行ndk build

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气好男人_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值