zoukankan      html  css  js  c++  java
  • NDK入门项目实战

    目标:利用NDK 生成 SO 库,使用 SO 库进行 JNI 调用,在 Android sdcard 创建文件并写入数据。

      工具:NDK1.5 R1, android SDK1.5 R1, SDCARD, Eclipse , ADT 0.9, Eclipse Galileo for C/C++, Cygwin 1.5。工具比较多,我是在Windows XP 进行操作的,如果在 Ubuntu 或者其他的 Linux系统下进行操作直接进入步骤 2 即可。请看步骤:

      1. 安装Cygwin

      关于Cygwin 的安装请自行百度或者 google ,因为网速原因,建议大家使用本地安装包进行下载: http://www.gougou.com/search?search=cygwin&id=2  下载一个 38.2M  即可,我用的就是这个版本。

      2. 安装NDK

      进入正题安装NDK ,首先打开 cygwin ,然后使用 cd 命令进入你的 NDK 根目录,(不会用 linux命令?? Google 去),然后运行: build/host-setup.sh

      如果出现以上的信息,说明安装正确,如果出现GCC 为找到,请输入 gcc 命令查看,如果出现 toolchain 未找到的信息,请试着修改 build/host-setup.sh 文件第一行代码,将:#!/bin/sh 改成#!/bin/bash ,在 Ubuntu 上这个是需要修改的。

      安装成后,我们使用make 命令试试编译自带的程序,输入 make APP=hello-jni,hello-jni 为 apps 下 hello-jni 文件夹的名称,这个命令会先找到 apps\hello-jni 下地 Application.mk 文件,然后找到 source\samples\hello-jni 这个目录,然后找到 Android.mk 这个文件中的配置信息进行编译。

      因为我的已经编译过了,使用使用 make APP=hello-jni -B 进行重新编译。看图:

      出现上面的信息,说明编译成功,so 文件在 apps/hello-jni/project/libs/armeabi 文件夹下。

      3. 书写java native接口

      下面我们进入实战的阶段,写代码。

      建立一个android1.5 的项目,NDK 不支持 1.5 以下的版本:

      JNI.java的代码:

      JniTest.java的代码:

      4.生成JNI头文件

      下面生成JNI 头文件啦,使用 javah 命令,对 JNI..java 这个文件生成,别搞错啦!

      使用cmd 进入 android 项目的 bin 目录中,然后执行  javah -classpath .  -jni cc.androidos.jni.JNI 这个命令。别忘记包名!( ^_^ )

      生成了一个cc_androidos_jni_JNI.h,打开看看:

      里面都是c 语言的头文件声明。

      5.书写C代码,写入数据

      下面进行c 语言代码的阶段,不会 C 的,可以去学习一下。我这里使用eclipse for c/c++的进行开发,简单的代码大家可以使用记事本。工程如下:


      cc_androidos_jni_JNI.h内容不变,cc_androidos_jni_JNI.c的内容:

      在这里的代码会在运行的时候向sdcard 写入 androidos.cc.txt 文件。然后写入 aaaa 数据。

      6.编译SO文件

      进行编译so 文件,在NDK 的 apps 目录下面创建一个 myjni 文件夹,在 myjni 文件夹中创建一个 Application.mk 文件,文件的内容为:

      在NDKsources 目录下创建 myjni 文件夹,在 myjni 文件中创建一个 Android.mk 文件,然后将 cc_androidos_jni_JNI.h 和 cc_androidos_jni_JNI.c 文件 copy进来:

      Android.mk中的内容如下:

      里面内容的关键字含义请自行查看docs\OVERVIEW.TXT 文件,编译:

      7. 加入到Android项目中进行运行

      将apps\myjni\libs 整个文件夹 copy到 android 项目下:


      运行android 项目使用 adb shell 进行查看:

      进入sdcard 查看数据。

      注意:sdcard 具有 system 的权限,如果你的目录是 root 权限的,那么是不能写成功的,除非是真机越权,模拟器是不成功的,并且在 Eclipse logcat 下会有 DEBUG 信息出现。

    aliyun活动 https://www.aliyun.com/acts/limit-buy?userCode=re2o7acl
  • 相关阅读:
    51 Nod 1068 Bash游戏v3
    51 Nod Bash 游戏v2
    51 Nod 1073 约瑟夫环
    UVA 12063 Zeros and ones 一道需要好好体会的好题
    51 Nod 1161 Partial sums
    2018中国大学生程序设计竞赛
    UVA 11971 Polygon
    UVA 10900 So do you want to be a 2^n-aire?
    UVA 11346 Possibility
    python with as 的用法
  • 原文地址:https://www.cnblogs.com/wangbin/p/1830910.html
Copyright © 2011-2022 走看看