android Jni NDK开发环境搭建及其简单实例的编写
android Jni NDK开发环境搭建及其简单实例的编写
由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下。遇到了些问题,然后总结下学习过程中的问题和开发流程
首先、Jni我的理解,属于一个中间的东西,如果把只做linux 的话,他就是linux的应用程序,但是如果做安卓的话,它就是中间层了(用于java语言调用C语言的接口)。我们说说
开发JNI的开发环境的搭建吧。
第一:我们用windows平台开发
准备工作:
1、我们安卓开发都需要的elipse ,包括SDK,首先要能够开发APK软件。
2、 我们需要一个如同linux 的环境,需要编译的环境,我们采用Cygwin(注意:1.7版本以上),否则不行。
3 、我们需要NDK工具包,可以通过安卓官网下载
1.1、cygwin的安装
下载地址:http://www.cygwin.com/
也可以选择我下载好的地址:http://pan.baidu.com/s/1b1UQE
1.1.1、 可以选择从网上下载最新的安装也可以选择我下载好的安装
1.1.2、 双击cygwin1.7.1/cygwin1.7.1.exe 选择Install form LocalDirectory
1.1.3、 选择安装的路径
1.1.4、 选择的下载之后的路径tmp
1.1.5、 点击下一步直到安装完成。
1.1.6、双击桌面的图标,看是否能够进去。有没有问题(输入gcc 等命令)。
1.2、Android的NDK安装
下载地址:http://developer.android.com/tools/sdk/ndk/index.html
1.2.1、将android-ndk-r9b-windows-x86.zip解压到任意目录(记住即可)
如:E:\android\android-ndk-r9b
1.2.2、设置环境变量(有的方法是通过/home/.bashrc设置的也可以),我就直接设置。右键点击我的电脑-属性(选择高级选项卡,点击环境变量设置),然后选择新建
1.2.3、重新关掉cygwin,然后打开,输入ehco$ndk 看是否显示E:\android\android-ndk-r9b目录,如果可以则设置成功
1.2.4、编译一个简单的实例 如下图,如果生成*.so 就说明没有问题。
第二:安卓JNI实例说明
1、 用eclips 新建一个android 工程
2、 修改Activity
|
2.1 加入: static { //注意你生成的库文件名称(如libhellojni.so),去掉lib和.so即可。 System.loadLibrary("hellojni"); } 2.2加入: /* * JNI中的方法 * */ public static native int open(int fd); public static native int close(int fd); public static native String read(); 2.3 添加一个按钮:在onCreate方法中 Button tb=(Button)findViewById(R.id.button1); tb.setOnClickListener(new OnClickListener() { public void onClick(View v) { /*调用Jni */ open(2); close(2); tv.setText(read());//修改文本框中的内容 }}); |
3、 通过javah生成.h文件(用于编译jni的程序)
|
3.1 切换到项目目录 #cd "C:\Documents and Settings\gonglinyuan\workspace\HelloJni" #cd ./bin/class 3.2 执行java –h命令 #javah -jni com.cem.hellojni.HelloActivity |
4、 编写jni代码
|
4.1、在工程目录中建立jni文件夹 #mkdir jni #cp ./bin/class/com_cem_hellojni_HelloActivity.h ./jni 4.2、刷新eclipse的目录,新建com_cem_hellojni_HelloActivity.c 文件,实现头文件中的代码,如下面代码
|
5、 编写Android.mk
|
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) TARGET_PLATFORM := android-4 LOCAL_MODULE := hellojni LOCAL_SRC_FILES := com_cem_hellojni_HelloActivity.c LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY) |
6、 编写Application.mk
|
APP_ABI := armeabi armeabi-v7a x86 |
7、 通过ndk-bulid编译生成库文件
|
# cd "C:\Documents and Settings\gonglinyuan\workspace\HelloJni" #$ndk/ ndk-build Android NDK: WARNING: APP_PLATFORM android-17 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml [armeabi] Compile thumb : hellojni <= com_cem_hellojni_HelloActivity.c [armeabi] SharedLibrary : libhellojni.so [armeabi] Install : libhellojni.so => libs/armeabi/libhellojni.so [armeabi-v7a] Compile thumb : hellojni <= com_cem_hellojni_HelloActivity.c [armeabi-v7a] SharedLibrary : libhellojni.so [armeabi-v7a] Install : libhellojni.so => libs/armeabi-v7a/libhellojni.so [x86] Compile : hellojni <= com_cem_hellojni_HelloActivity.c [x86] SharedLibrary : libhellojni.so [x86] Install : libhellojni.so => libs/x86/libhellojni.so |
8、 生成APK文件,测试
最终实例代码下载地址:http://files.cnblogs.com/android100/HelloJni.rar
android Jni NDK开发环境搭建及其简单实例的编写的更多相关文章
- Android下NDK开发环境搭建
Android下NDK开发环境搭建 1. AndroidNDK安装与配置 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...
- Android Studio NDK开发环境搭建
一. 下载安装Android studio 和 NDK 二. 在Android studio中配置NDK(和SDK配置一样) 三. 用Android studio建立一个工程,打开proj ...
- android NDK开发环境搭建
android NDK开发环境搭建 2012-05-14 00:13:58 分类: 嵌入式 基于 Android NDK 的学习之旅-----环境搭建 工欲善其事必先利其器 , 下面介绍下 Eclip ...
- android 5.0开发环境搭建
Android 5.0 是 Google 于 2014 年 10 月 15 日发布的全新 Android 操作系统.本文将就最新的Android 5.0 开发环境搭建做详细介绍. 工具/原料 jdk- ...
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...
- ArcGIS API for JavaScript开发环境搭建及第一个实例demo
原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...
- android NDK 开发环境搭建
基于 Android NDK 的学习之旅-----环境搭建 工欲善其事必先利其器 , 下面介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建. 1.Android 开发环 ...
- Android Studio 2.2 NDK开发环境搭建
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52763192 本文出自: [HansChen的博客] Android应用程序使用ND ...
- NDK开发环境搭建_r8
本文主内容: 1. Android NDK 安装 2. 安装Cygwin与使用NDK编译 3. 在Eclipse中集成C/C++开发环境CDT 4. 安装Sequoyah插件 5. JNI编 ...
随机推荐
- MVC 之 解决MVC中使用BundleConfig.RegisterBundles引用Css及js文件发布后的丢失
在MVC3中我们这样引用资源文件: <link href="@Url.Content("~/Content/Site.css")" rel="s ...
- directive完成UI渲染后执行JS
ui-view有相应的$viewContentLoaded http://blog.csdn.net/xinshangshangxin/article/details/44700813 ng-repe ...
- Win10下安装Ubuntu16.04虚拟机并搭建TensorFlow1.3环境
本文具体参考资料链接 1.VMware下载安装 百度输入VMware搜索,出现如下界面,点击下载: 此处安装步骤可以网上搜索,也可不用搜索,直接按照按照提示一步一步确认即可完成. 2.Ubuntu16 ...
- 算法笔记_222:串中取3个不重复字母(Java)
目录 1 问题描述 2 解决方案 1 问题描述 从标准输入读入一个由字母构成的串(不大于30个字符). 从该串中取出3个不重复的字符,求所有的取法. 取出的字符,要求按字母升序排列成一个串. 不同 ...
- JVM内的守护线程Deamon与用户线程User Thread
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561771.html 一:守护线程Daemon 守护线程:Daemon在希腊神话中解作“守护神”,顾名思义就 ...
- Linq to Entity 求最大小值Max/Min返回null的处理方法
var maxId=db.user.Select(u=>u.CId).DefaultIfEmpty() 如果maxId返回null则maxId.Max()的值为0
- ORA-00942 表或视图不存在
场景:跨scheme创建视图,提示ORA-00942 表或视图不存在 1. 创建两个用户 CREATE USER ODI_SRC IDENTIFIED BY ODI_SRC CREATE USER O ...
- 缓慢变化维 (Slowly Changing Dimension) 常见的三种类型及原型设计(转)
开篇介绍 在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库 ...
- 〖Network〗一行命令创建 http-server
一行命令启动http-server总结:1. python2.x python2 -m SimpleHTTPServer 8000 2. python3.x python -m http.server ...
- 亲历H5移动端游戏微信支付接入及那些坑(三)——支付接入
终于到接入支付了,小小的一个微信支付,居然也写了3篇,好长,好累. 接入环境 对接入环境,前端的话,应该是以js为主吧,也有可能是,PHP,Java,C++,或者C#都可以.为什么在此特意提一下接入环 ...