Cygwin与android使用总结

Cygwin与android

1、 安装Cygwin:必须勾选make,gcc—core与gcc—gcc++,才能够编译c/c++文件

2、 检测安装是否正确:打开Cygwin,输入命令gcc—version和make—version,如果能弹出

版本信息则安装正确

3、 配置androidNDK:进入Cygwin的安装目录,在cygwin\home\Administrator\中找

到.bash_profile,在文本最后增加NDK=/cygdrive/NDK的解压目录 export NDK。

4、 NDK编程步骤:

(1) 新建工程,新建一个类如Jni,在该类中定义public native类的方法。

(2) 在windows命令窗口中,进入到工程目录的bin文件夹中,使用命令:javah –jni

包名.Jni(类名),在该文件夹下会生成一个.h的文件。

(3) 在项目中新建一个jni文件夹,在该文件夹下新建.c和Android.mk文件

(4) .c文件编写,头文件中必须包含#include<jni.h>,其方法可以直接从.h文件中直

接拷贝过来,然后编写具体的函数体。

(5) Android.mk文件的编写:

格式基本上是固定的,LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:=工程的名称

LOCAL_SRC_FILES:=.c文件名

Include $(BUILD_SHARED_LIBRARY)

(6) 生成.so文件:在cygwin中进入工程所在目录,使用命令$NDK/ndk-build则在该

目录下会生成libs\armeabi\lib工程名.so文件。

(7) 编写Activity代码:在Activity类中首先需要使用static函数块:

static{ System.loadLibrary(“工程名”)},接着再编写其它代码。

(8) 运行工程。

 

第二篇:linphone-android+在cygwin下编译

我是一个刚开始学java刚开始学android刚开始学linphone的菜鸟,所以编译linphone用了4天的时间。因为我是菜鸟所以走了很多弯路,放上我走的路来让大家明白,让菜鸟不菜。

我首先借鉴的是网上CSDN能找到的一个大神用linux编译的经验,现在说我用windows下编译的经验。首先来说要有源代码,这个源代码得用git下载,右键就可以选择下载目录,在linphone.org上可以下载到,记住必须要全打上,包括- -reverse。否则下不全,我就在这个上面浪费了一天,一直不全下了好多遍都没打- -reverse。最后下载下来大概300M建议备份一下,以防编的不对。解压源文件,我们打开可以看到很多文件,最主要的是prepare_sources.sh和deliver_sdk.sh。prepare.sh 就是用来运行的主要程序,deliver_sdk.sh是编好以后用来提取有用的文件的以供移植。然后找网上教程安装好android ndk

这时候要用到cygwin了,为什么要用cygwin呢,我不知道什么是交叉编译,经过编程我明白了所谓交叉编译,其实就是java和linux下c语言交叉编译。Cygwin是一个可以虚拟unix环境的软件,安装cygwin时要注意安装automake,autoconf,make,libtoolize,pkg-config,unzip,zip,flex,gcc,gcc-mingw,binutils,git,dos2unix等一系列东西,编译过程中可以通过cygwin输出的编译情况,查缺补漏继续添加新的包。安装完后我的cygwin大约400M。

运行桌面上的cygwin用cd命令(和cmd下一样)进入解压后的源码文件目录

linphone-android,因为cygwin是unix环境所以在cygwin识别不了prepare_sources.sh以及一些其他文件,利用find –type f|xargs dos2unix –o来把文件夹内所有文件转为unix下可识别的文件。这时候就可以运行./prepare_sources.sh了。运行中间会下载一个很大的东西是Skpe开发的一个包大约60M,建下载好后在 submodules\mssilk\sdk目录下建议把压缩包复制出来备份,以后重新编译时候可以直接拷进去就不用再下载了。还会下载rfc3951和extract-cfile.awk文件,如果报错可以把网址复制下来,直接从浏览器下载下来,拷到\submodules\libilbc-rfc3951\downloads下。这两个文件也建议备份,这时候再运

行./prepare_sources.sh出现一个#hunk success等一条语句,说明你的./prepare运行好了。这时候就可以进行下一步了。

用$NDK/ndk-build命令引用android ndk来编译程序。运行一段时间后会出现一个错误,说是不能识别ortp.c 中include strp/strp的路径,直接找到ortp.c用gedit打开找到include <strp/strp>改成<../../strp/include/strp>即可,继续$NDK/ndk-build。这时候又会停到带有armeabi什么的错误,找到Application.mk文件,这时候可以搜到两个,应该是有好多个if的那个,在linphone-android\jni下。用gedit打开在上面添入一行STLPORT_FORCE_REBUILD := true,即可运行通过。出现install linphone 什么的就结束啦。这时候就可以用eclipse导入了,会出现很多错误,不过不要紧,把有错误的地方上的@orride删除了就行啦,大功告成。

我一开始看到程序输出说arm-linux-gcc以为这个要装在cygwin,这是一个linux的程序。找到方法了都,可是装的很麻烦,以失败而告终,最后有继续研究我出现的错误,可能在别的电脑上出现另一些错误,不要慌,如果是使用$NDK命令直接从错误文件出发,如果是prepare_sources.sh程序出错,从程序每一行输出里面找error,有可能是你的cygwin软件包添加的不全,一定要有耐性。

由于我英文水平不太好,始终不想看查到的英文的东西,最后还是耐着性子看了,解决方法都是从里面找到的,百度就不要用了,用google吧。

对了不要指望能下载到编好的linphone-android,提取出来的都一般有错,还是自己动手丰衣足食吧,网上说编好的源码都有错。

相关推荐