编写自己的android jni程序

原创 2015年07月07日 11:33:08

1.建立自己的android程序

2.建立文件夹jni,创建make文件,与你要编写的C文件
编写自己的android <wbr>jni程序

 

开始编写Android.mk

(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件。由于一般情况下
Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式:
LOCAL_PATH:=$(call my-dir)
上面的语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径。

(2)Android.mk中可以定义多个编译模块,每个编译模块都是以include $(CLEAR_VARS)开始
以include $(BUILD_XXX)结束
include $(CLEAR_VARS)
CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除除LOCAL_PATH以外的所有LOCAL_XXX变量,
如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES,LOCAL_STATIC_LIBRARIES等。
include $(BUILD_STATIC_LIBRARY)表示编译成静态库
include $(BUILD_SHARED_LIBRARY)表示编译成动态库。
include $(BUILD_EXECUTABLE)表示编译成可执行程序

(3)LOCAL_MODULE 生成的模块的名称(注意应用程序名称用LOCAL_PACKAGE_NAME而不是LOCAL_MODULE)

(4)LOCAL_SRC_FILES 编译源文件

(5)include $(BUILD_SHARED_LIBRARY)编译成动态库

整体代码

LOCAL_PATH :=$(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := studyjni
LOCAL_SRC_FILES := studyjni.c

include $(BUILD_SHARED_LIBRARY)

 

studyjni.c代码

#include<String.h>
#include<jni.h>

jstring Java_com_st_studyjni_StudyJ_getString(JNIEnv *env, jobject thiz) {
 return (*env)->NewStringUTF(env, "change Wrold!");

}

代码详解见:http://blog.csdn.net/wong_judy/article/details/6250110

 

进入cgywin

到程序目录下,输入$NDK/ndk-build

编写自己的android <wbr>jni程序

如果成功的话,会生成obj和libs两个目录。

 

配置编译工具

1右键单击项目名称,点击Properties,弹出配置界面,之后再点击Builders,弹出项目的编译工具列表,之后点击New,新添加一个编译器,点击后出现添加界面,选择Program,点  击OK

2、出现了添加界面,首先给编译配置起个名字,如:C_Builder

  设置Location为<你cygwin安装路径>\bin\bash.exe程序,例如:E:\cygwin\bin \bash.exe,设置WorkingDirectory为<你cygwin安装路径>\bin目录,例如:E:\cygwin\bin

  设置Arguments为

  --login -c "cd/cygdrive/e/android-ndk-r5/samples/hello-jni && $NDK/ndk-build"


 上面的配置中/cygdrive/e/android-ndk-r5/samples/hello-jni是你当前要编译的程序的目录,$NDK是之前配置  的ndk的环境变量,这两个根据你具体的安装目录进行配置,其他的不用变,Arguments这串参数实际是  给bash.exe命令行程序传参数,进入要编译的程序目录,然后运行ndk-build编译程序

3、接着切换到Refresh选项卡,给Refresh resources upon completion打上钩


4、然后切换到Build Options选项卡,勾选上最后三项


5、之后点击Specify Resources按钮,选择资源目录,勾选你的项目目录即可


 6、  最后点击Finish,点击OK一路把刚才的配置都保存下来,注意:如果你配置的编译器在其它编译器下边,记得一定要点Up按钮,把它排到第一位,否则C代码的编译晚于Java代码的编译,会造成你的C代码要编译两次才能看到最新的修改

 

大功告成,编译第一个jni程序


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android使用已有so库自己实现jni封装

为什么写这个最近项目需要在盒子上实现内容的加解密,方案是使用机顶盒内部主芯片加解密算法对存储在内容分区的资源进行加密,然后由机顶盒平台提供本地库的方式给应用使用。所以也就有了这个事情。一般情况下,完全...
  • ForeverSunshine
  • ForeverSunshine
  • 2016年11月30日 21:07
  • 3180

编写android程序调用jni本地方法的实现(详细例子)

在写android程序的时候会用到jni,接下来的代码讲诉C实现,环境配置请看我其他的博客,不多说,直接上代码,代码上几乎每一句都会解释,绝对易懂 #include "com_ndk_test_Jni...
  • u012083681
  • u012083681
  • 2014年04月06日 20:46
  • 2006

Android JNI编程(七)——使用AndroidStudio编写第一个JNI程序

1.简单介绍一下NDK和JNI NDK:NDK是Native Development Kit的缩写,是Google提供的一套工具集,可以让你其他语言(C、C++或汇编)开发 Android的 JNI。...
  • a_zhon
  • a_zhon
  • 2016年11月09日 12:44
  • 4620

Android&nbsp;JNI必须掌握的五点

http://www.2cto.com/kf/201308/232666.html 1:JNI是什么?   Java NativeInterface(JNI)是Java提供的一个很重要的特性。它使...
  • kenthomsen
  • kenthomsen
  • 2014年06月14日 19:39
  • 211

Android&nbsp;Jni中使用线程及回…

Android Jni 中使用线程及回调更新UI原文地址:Jni中使用线程及回调更新UI">Android Jni中使用线程及回调更新UI作者:Eagle    在Android使用Jni时,为了能够...
  • l609043941
  • l609043941
  • 2014年06月25日 13:21
  • 347

Android&nbsp;JNI开发入门之一

Android JNI开发入门之一 2010十二月07 作者: Simon_fu 目录: Android, Java, ... 评论: 1 条评论      JNI在Android系统中有着广...
  • shangyaowei
  • shangyaowei
  • 2013年12月19日 20:39
  • 260

Android&nbsp;JNI开发入门之二

Android JNI开发入门之二 2010十二月08 作者: Simon_fu 目录: Android, Java, ... 评论: 1 条评论     在上一篇文章《Android JNI...
  • shangyaowei
  • shangyaowei
  • 2013年12月19日 20:39
  • 372

基于V4L2驱动程序的USB摄像头Android(JNI)的编写(一)

video4 linux2(V4L2)是Linux内核中关于视频设备的内核驱动,它为Linux中视频设备访问提供了通用接口,在Linux系统中,本文主要介绍如何使用V4L2驱动程序打开我们的USB摄像...
  • JansonZhe
  • JansonZhe
  • 2015年08月06日 17:00
  • 4348

基于V4L2驱动程序的USB摄像头Android(JNI)的编写(三)

在上两篇文章基于V4L2驱动程序的USB摄像头Android(JNI)的编写(一)和基于V4L2驱动程序的USB摄像头Android(JNI)的编写(二)中,我详细介绍了如何配置V4L2的环境、设置捕...
  • u012149181
  • u012149181
  • 2017年11月26日 14:08
  • 121

基于V4L2驱动程序的USB摄像头Android(JNI)的编写(一)

http://blog.csdn.net/jansonzhe/article/details/47319727 video4 linux2(V4L2)是Linux内核中关于视频设备的内核驱动...
  • u012149181
  • u012149181
  • 2017年11月26日 14:06
  • 55
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编写自己的android&nbsp;jni程序
举报原因:
原因补充:

(最多只允许输入30个字)