JNI (一)、环境搭建


概述:

windows下的可执行文件为exe程序,linux下为elf文件。这两种文件只能在各自的平台上运行。此外,window程序含有
一个函数库文件,后缀为.dll的文件,而linux程序的函数库是.so文件。一个程序从源码阶段到运行经历了 编译、连接、执行。
拿java来举例:首先由java --> .class --> java虚拟机,这里java虚拟机来模拟windows或者linux的环境来解释执行
.class文件。而C语言呢,首先编译为一个.O的中间文件,在windows环境下在生成.exe, linux环境下生成.elf 可执行文件。

在windows上如果把C语言打包成库文件 则是 dll。 而在linux上打包成库文件 则是.so文件。Android系统底层其实为linux系统,也就是说
linux系统可以运行在ARM 、x86、inter、等处理器上。由于C代码是和底层交互的,因此处理器不同,同样一个linux系统,系统的C代码可能不一样。而现在呢,我们要在windows环境下开发,并且开发一个运行在linux系统上的程序或者库文件,这个linux系统还是基于arm cpu运行的。
由于我们在进行NDK开发。最终目的是写出 在linux系统上的库文件.so. 因此就需要下面2步:
一、模拟基于arm cpu运行的linux环境

二、在模拟的linux环境下 编译 连接c代码,打成so文件

这两步也是环境搭建的2步。


环境搭建:

一、模拟基于arm cpu运行的linux环境,也就是手机环境。 用到的工具是Cygwin 。从网上下载安装即可。

    (安装过程中会出现选择安装组件界面。选devel 和shells 选设置为install,只安装这两个项即可。)

说明:

安装目录就是模拟linux的文件系统,就是linux的安装目录。

bin

etc :存放所有的配置文件的目录。

home

lib

usr

var

tmp


要熟悉这些目录 熟悉linux系统即可。如果开发用的系统是linux系统,当然这个工具没必要安装了。

二、在模拟的linux环境下 编译 连接c代码,打成so文件。这就用到NDK工具。

下载地址:
https://developer.android.com/ndk/downloads/index.html


NDK的安装:官网下载exe后安装即可
NDK的目录说明:

samples :放置了一下JNI开发例子。初学可以参考学习这里面的例子。

platforms :对应Android的一些平台。这里放置的是一些比较稳定的版本。arch-arm下放的是一些库 和 头文件。

            (一般基于Android-8这个版本开发,Android-8目录下有arch-arm和arch-x86两个平台。有少部分一些手机用的x86处理器。大部分还是arm cpu。)

docs:开发文档

ndk-build :安装后目录下有个ndk-build 文件。打开这个文件首行写有:#!/bin/sh ,表明这是一个linux环境下的批处理文件。(windows下为.bat格式)

build  :一些批处理文件等工具。


库文件 (.so) 和 头文件 (.h) 是什么:
头文件 是给编译器 来看的,C代码开头引入头文件这么写:#include <stdio.h> , 头文件中定义了一些函数,我们可以理解成接口。
库文件是给连接器来看的。定义了一些头文件中的实现。头文件中的函数定义 都对应与 库文件中的实现。和java的接口类似。头文件相当于接口。

库文件相当于实现类。

环境变量配置:
要用NDK命令来编译C代码,可以在Cygwin 命令界面 也可以在windows的dos界面。
Cygwin:
注意环境变量配置:
打开etc目录下的profile文件
在Path 环境变量下追加 配置即可:/cygdrive/NDK的安装目录/  例如:/cygdrive/d/setup/android-ndk-r7b

#下面是配置的例子:

PATH="/usr/local/bin:/cygdrive/d/setup/android-ndk-r7b:/usr/bin:${PATH}"

MANPATH="/usr/local/man:/usr/share/man:/usr/man:${MANPATH}"

INFOPATH="/usr/local/info:/usr/share/info:/usr/info:${INFOPATH}"



dos:
在windows系统 我的电脑中 找到环境变量配置,在Path 环境变量中追加 NDK的安装目录即可(;D://NDK...)。这种方式也可以用NDK来编译。 


至此,环境已经搭建好了。下面来在Eclipse下 用NDK写一个HelloWorld例子。

配置完成后在Cygwin界面 或者dos界面  打ndk-build 命令 输出错误提示: 

Could not find application project directory ..... 表明命令执行了,配置成功。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值