Cygwin是一个在windows平台上执行的类UNIX模拟环境,是cygnussolutions公司开发的自由软件。Cygwin是很多自由软件的集合,Cygwin的主要目的是通过又一次编译。将POSIX系统上的软件移植到Windows上。Cygwin包含了一套库。该库在win32系统上实现了POSIX系统调用的API。另一套GNU开发工具集(比方GCC,GDB),这样能够进行简单的软件开发,另一些UNIX系统下的常见程序。Cygwin不支持Unicode,实际上,除了当前windows系统以及OEM codepages。Cygwin对其他字符集都不支持。

1、  从 http://cygwin.com/install.html下载setup-x86_64.exe ;

2、  将其存放到D:/soft/Cygwin目录下,执行setup-x86_64.exe,->下一步->Install from Internet, 下一步->RootDirectory: D:\ProgramFiles\cygwin64,下一步->Local PackageDirectory,下一步->Direct Connection,下一步->http://mirrors.kernel.org,下一步->DevelDefault点成Devel Install(依据须要选择安装,也可所有安装),下一步->下一步(时间较长)->完毕;

3、  验证Cygwin是否成功安装:打开Cygwin,输入相关命令如。gcc -v,make –v;

4、  从https://developer.android.com/tools/sdk/ndk/index.html下载Android NDK,解压缩后将其存放到D:\ProgramFiles\Android\android-sdk\android-ndk-r9下;

5、  打开D:\ProgramFiles\cygwin64\home\Spring目录下的.bash_profile文件,在其末尾增加:ANDROID_NDK_ROOT=/cygdrive/d/ProgramFiles/Android/android-sdk/android-ndk-r9

PATH=/cygdrive/d/ProgramFiles/Android/android-sdk/android-ndk-r9:/cygdrive/d/ProgramFiles/Android/android-sdk/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin:/cygdrive/d/soft/Java/eclipse/plugins/org.apache.ant_1.8.2.v20110505-1300/bin:$PATH

export ANDROID_NDK_ROOT PATH

6、  打开Cygwin,输入命令cd $ANDROID_NDK_ROOT,假设显示/cygdrive/d/ProgramFiles/Android/android-sdk/android-ndk-r9 ,说明配置成功;

7、  仿照http://blog.csdn.net/fengbingchun/article/details/11580983新建一个AndroidApplication Project:

MainActivity.java:

package com.cygwinjni.android;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(StringFromJni());
setContentView(tv);
} public native String StringFromJni(); static{
System.loadLibrary("hello-jni");
}
}

Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := com_cygwinjni_android_MainActivity.cpp include $(BUILD_SHARED_LIBRARY)

com_cygwinjni_android_MainActivity.cpp:

#include <string.h>
#include <jni.h>
#include "com_cygwinjni_android_MainActivity.h" #ifdef __cplusplus
extern "C" {
#endif JNIEXPORT jstring JNICALL Java_com_cygwinjni_android_MainActivity_StringFromJni
(JNIEnv * env, jobject thiz)
{
return env->NewStringUTF("Hello from JNI !");
} #ifdef __cplusplus
}
#endif

com_cygwinjni_android_MainActivity.h文件由javah -classpath命令生成;

8、  将Cygwin定位到jni目录下。输入ndk-build命令,会生成对应的.so库。

假设有写入操作。须要:打开AndroidMainfest.xml ->选择Permissions->Add->UsesPermission->Name: android.permission.WRITE_EXTERNAL_STORAGE .

Cygwin的安装及在Android jni中的简单使用举例的更多相关文章

  1. ZT ANDROID jni 中的事件回调机制JNIenv的使用 2012-09-10 12:53:01

    ANDROID jni 中的事件回调机制JNIenv的使用 2012-09-10 12:53:01 分类: 嵌入式 android framework 里java调用native,使用JNI机制,ja ...

  2. Android jni中回调java的方法

    在上一篇的基础上,添加在C++代码中回调java方法. 代码如下: Demo.java 中添加callback函数, 打印一条log. package com.example.scarecrow.dy ...

  3. Android JNI中C和JAVA代码之间的互相调用

    关于Android studio中使用NDK/JNI环境和入门:http://blog.csdn.net/quan648997767/article/details/64923143 1. C代码回调 ...

  4. Android JNI中C调用Java方法

    背景需求 我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT v ...

  5. Android JNI中的数据传递

    1.JNI 基本类型 当 Java 代码与本地代码 C/C++ 代码相互调用时,肯定会有参数的传递.两者属于不同的语言,数据类型有差别,此时,JNI 要保证两种语言之间的数据类型和数据空间大小的匹配. ...

  6. Cygwin下安装vim后,vim中退格键无法正常使用

    问题描述: 在Cygwin中安装完vim后 进入vim,发现上下左右键和退格键都无法正常使用 问题分析: 首先考虑到的就是缺少vim的配置文件,首先查看/etc路径下是否有vim的配置文件 admin ...

  7. [Android] JNI中的Local Reference

    参考文章:<在 JNI 编程中避免内存泄漏> 一.Local Reference 深层解析 JNI Local Reference 的生命期是在 native method 的执行期(从 ...

  8. 在android studio 中使用applicationid的问题

    现在我需要对项目app的某个功能做性能测试,主要测试耗电量的多少. 1.我想到的方式是,我需要在同一台手机测试,同一个应用,需要安装在手机两次,第二次安装不覆盖第一次的安装. 在android stu ...

  9. [转]ANDROID JNI之JAVA域与c域的互操作

    本文讲述AndroidJava域与C域互操作:Java域调用c域的函数:c域访问Java域的属性和方法:c域生成的对象的保存与使用.重点讲解c域如何访问Java域. 虽然AndroidJNI实现中,c ...

随机推荐

  1. Winform TabControl控件使用

    运行效果: 代码: /// <summary> /// 添加选项卡 /// </summary> /// <param name="sender"&g ...

  2. 网页制作之html基础学习1-简介

    学习网页制作主要分为三大块 1.HTML    超文本标记语言( 全称:Hyper Text  Markup Language) 专门编辑静态网页 2.CSS      网页美化:是HTML控制的样式 ...

  3. ZOJ 3603字符串操作

    解题思路:找到公共子串然后升序输出 坑的地方就在于输入是存在相同字母的 #include <stdio.h> #include <algorithm> #include < ...

  4. iOS开发之自己封装一个progressHUD控件

    看了几个轻量级的progress view 我觉得KVNProgress做的最漂亮吧 突然我想为什么我自己不封装一个控件 然后我研究了一下KVNProgress KVN简单的界面是由storyboar ...

  5. 重探 DFT

    感觉上次学习DFT简直是乱来了.不知道误导了多少人,这里深感抱歉. 这次我再看了看<算法导论>,觉得收获很大,终于粗略的知道DFT的原理了! 如何将两个多项式相乘 对于一个n次多项式,\( ...

  6. linux下shutdown无法关闭tomcat进程的解决方式

    1.问题 笔者在linux下发现使用tomcat6.0.41自带的./shutdown.sh常常无法停止进程,导致各种问题的发生,令笔者相当反感! 2.解决方式一: 查找到全部的tomcat进程 $ ...

  7. hdu 4771 Stealing Harry Potter&#39;s Precious(bfs)

    题目链接:hdu 4771 Stealing Harry Potter's Precious 题目大意:在一个N*M的银行里,贼的位置在'@',如今给出n个宝物的位置.如今贼要将全部的宝物拿到手.问最 ...

  8. Javascript 中的非空判断 undefined,null, NaN的区别

    JS 数据类型 在介绍这三个之间的差别之前, 先来看一下JS  的数据类型. 在 Java ,C这样的语言中, 使用一个变量之前,需要先定义这个变量并指定它的数据类型,是整型,字符串型,.... 但是 ...

  9. PHP把数字ID转字母ID

    PHP把数字ID转字母ID ID是网站中经常出现的,它一般是数字,但是我们发现现在的网站很多ID都是字母了,比如YouTube的视频播放页它的URL类似/watch?v=yzNjIBEdyww. 下面 ...

  10. Thymeleaf Javascript 取值

    <script th:inline="javascript"> var openid = /*[[${session.wxuser.openId}]]*/ </s ...