一.安装Cygwin

在Windows环境而又不想使用linux环境,可以安装cygwin(http://www.cygwin.com/ ),为了使用gcc注意cygwin的必选安装包在devel目录下:binutils,gcc,make。

选择与Devel与Shells一起安装

安装完成以后,运行cygwin的快捷方式,在控制台输入命令 gcc和make,有合理的反馈即可

cygwin里面增加环境变量,修改C:\cygwin\etc\profile文件

增加/cygdrive/d/Android/android-ndk-r10e后

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

二.开始集成

运行Eclipse,新建一个android project,取名HelloJni(名字随意)。

手动创建一个jni目录

Libs目录一会会自动创建,现在木有也没关系。

obj是临时文件夹,如果修改了jni下的C代码,编译前最好将其删除.

如果你现在运行这个工程,就会在android控制台看到如下错误:

java.lang.UnsatisfiedLinkError: Library HelloJni not found

因为你还没有造出那个libHelloJni.so出来。

工程属性

打开hello-jni工程属性,选择builder,New… ,  选择program,点OK

配置如下,名字随便取一个(如NDK_Builder),location和working directory要和你的cygwin目录一致,arguments要和你的工程目录一致。

Location:

C:\cygwin\bin\bash.exe:

working directory

C:\cygwin\bin

Arguments

--login -c "cd /cygdrive/e/AndroidWorkspace/HelloJni && /cygdrive/d/Android/android-ndk-r10e/ndk-build

然后勾选其他配置如下

注意在勾选Specify working set of relevant resources时指定资源选择你的工程的jni目录即可。

当以上步骤都正确配置无误,保存配置后应该就会自动编译jni目录下的C相关代码并输出相应的.so库文件到工程的libs目录下,libs目录会自动创建。

编译时控制台输出类似如下:

[armeabi] Cygwin         : Generating dependency file converter script
[armeabi] Compile thumb  : HelloJni <= StrUtil.c
[armeabi] SharedLibrary  : libHelloJni.so
[armeabi] Install        : libHelloJni.so => libs/armeabi/libHelloJni.so

再运行工程,结果正确。

以后修改了C代码,保存后也会自动触发编译,省时省力。

三.打包jar文件

  Eclipse中选择工程,右击选择 Export->java->JAR file, NEXT按钮,然后选择需要打包入jar的.java,.class文件,注意在"Select the export destination:"下面,点击Browe...按钮,选择保存的路径及文件名,点击Finish按钮好可.

四.将jar及so整合到别的应用中

  Eclipse中选择待整合工程,右击, 选择 Properties -> Java Build Path -> Libraries, 点击 Add External JARs ..., 然后选择已经打包的.jar文件.也可以将jar直接放到libs目录下.

Native C/C++ 的动态库.so文件, 分arm 和 x86 两种,在APK的工程里添加目录libs, 然后建立两个子目录armabi 和x86,将.so文件放到对应的目录中即可.

Eclipse集成Android NDK及导出Jar和so动态库的更多相关文章

  1. Android NDK开发及调用标准linux动态库.so文件

    源:Android NDK开发及调用标准linux动态库.so文件 预备知识及环境搭建 1.NDK(native development Kit)原生开发工具包,用来快速开发C.C++动态库,并能自动 ...

  2. Android Studio下导出jar包和aar包

    Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...

  3. [Android Pro] AndroidStudio导出jar包

    reference :  http://blog.csdn.net/beijingshi1/article/details/38681281 不像在Eclipse,可以直接导出jar包.Android ...

  4. 关于Android开发中导出jar包后的资源使用问题解决

    我们经常遇到一个需求,就是给别人使用我们工程的时候,为了能够屏蔽代码,把代码封装成jar包提供给第三方使用,但是这样我们的资源文件怎么给对方用呢? 其实并不用这么的复杂,下面就介绍一下具体的方法 一, ...

  5. Android Android Studio 如何导出 Jar 给 Unity 使用

    大致步骤如下: 1.创建新的 Android Studio 工程 2.为此 Android Studio 工程创建 Android Library 类库(也就是一个 Module)(后面就是用它生成 ...

  6. android NDK 使用(多个)静态库生成动态库

    android NDK 使用(多个)静态库生成动态库. 1.编写Android.mk文件:如下两种方式都可以,用于NDK编译工具生成的两个.a文件来生成最终的libtwolib-second.so动态 ...

  7. NDK学习笔记-使用现有so动态库

    前面将的都是如何使用C/C++文件生成so动态库,那么在使用别人的so动态库的时候应该怎么做呢?这篇文章就是使用一个变声功能的动态库,完成对于以有so动态库的说明. 动态库来源 在互联网中,有着许许多 ...

  8. Android.mk中引用第3方动态库

    Android.mk 文件内容: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOC ...

  9. Android项目编译和使用C语言动态库(so库)

    编译SO库 1.新建工程,建立jni目录用于放置c语言相关文件 2.编写Android.mk文件 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) ...

随机推荐

  1. spark相关脚本解析

    spark-shell/spark-submit/pyspark等关系如下: #spark-submit 逻辑: ########################################### ...

  2. 解析范式(1NF-4NF)

    亲爱的盆友们~又是新的一年,你,准备好新的学习计划了吗~?是读书100本,还是考上5个证?嘛~不管怎么说,角落里那一堆蒙尘的计划表好像在昭示着这仍然是一个充满朝气又艰难的9102年呢!总之,先把#技本 ...

  3. 十分钟掌握pandas(pandas官方文档翻译)

    十分钟掌握pandas 文档版本:0.20.3 这是一个对pandas简短的介绍,适合新用户.你可以在Cookbook中查看更详细的内容. 通常,我们要像下面一样导入一些包. In [1]: impo ...

  4. 深入理解eos账户体系 active和action

    在eos中,账户是一个非常重要的概念. 账户分为两部分组成 一种是active 一种是action. 智能合约本质上来讲就是一个action加上一个回馈脚本程序.任何智能合约都有这俩个部分组成. 那么 ...

  5. Spring 3整合Quartz 2实现定时任务:动态添加任务

    先展示一下后台管理定时任务效果图: 1.新增任务页面: 2.列表页(实现任务的禁用启用) 3.数据库脚本: -- ------------------------------ Table struct ...

  6. 一:yarn 介绍

        yarn的了出现主要是为了拆分jobtracker的两个核心功能:资源管理和任务监控,分别对应resouceManager(RM)和applicationManager(AM).yarn中的任 ...

  7. Centos下的SVN搭建

    需求: 搭建SVN实现本地开发环境,方便线上代码的更新. 步骤: 1. 安装SVN服务 yum install -y subversion 2.创建SVN代码库的目录.创建版本库 mkdir -p / ...

  8. iOS- 如何将非ARC的项目转换成ARC项目(实战)

    1.前言   因为公司有个国外餐饮系统,编程开发了3-4年,之前用的都是非ARC,开发到今年,第一批迭代开发的人员早已不见,目前发现了有许多的内存泄露之类的,系统没有自动释放该释放的内存.一旦app长 ...

  9. HSF原理

    HSF(High-speed Service Framework),高速服务框架,是阿里系主要采用的服务框架,其目的是作为桥梁联通不同的业务系统,解耦系统之间的实现依赖.其高速体现在底层的非阻塞I/O ...

  10. Spring Boot 运行原理

    Spring Boot并没有任何新的技术,全都是基于Spring4提供的技术,用优秀的设计,为Web开发提供了一套新的方式. 在HelloWorld中,我们没有进行任何显示的配置,但是程序还是运行起来 ...