NDK 下载地址 : http://developer.android.com/sdk/ndk/index.html

Cygwin 下载地址 :http://www.cygwin.com

1 Cygwin 安装

Cygwin安装就很简单啦,直接下一步就行。唯一需要注意的就是,因为我们在cygwin中编译ndk的时候需要make和gcc,所以我们在Select Packages 这一步的时候要选择Devel 选项为Install(默认为不安装的,Defatult状态)。顺便也要把vim所在的包选择为isntall,因为后续我们在cygwin中需要编辑文件。vim所对应的包名字呀? 不记得了,直接在查找里面输入vim就能看到对应的package名字了。

2 NDK 安装

更简单了,只需要将下载的文件解压缩到任意目录就可以了。

3 编译NDK程序

这里先介绍下Application.mk不在应用程序目录下的jni里,而是在其它目录下的jni里,这里具体目录就是在$NDK_ROOT/jni/下。通过Application.mk中的APP_BUILD_SCRIPT可以指定任意的应用程序里的Android.mk的特性来实现的。当然Application.mk也可以和Android.mk一起放在应用程序$Program/jni目录下,这种情况的编译请参见我的另一篇文章。

1> 先配置ndk相关环境

进入到cygwin的/home/username目录,username是你当前登录机器的用户名,修改该目录下的.bash_profile,在文件的尾部加入如下代码,设置ndk安装的根目录。

NDK_ROOT=/cygdrive/d/workdoc_tool/android_env_build/windows/android-ndk-r6b
export NDK_ROOT

NDK_PROJECT_PATH=/cygdrive/d/workdoc_tool/android_env_build/windows/android-ndk-r6b
export NDK_PROJECT_PATH

环境变量名NDK_ROOT为NDK安装包根目录,名字可以随便取,只是用于切换目录时方便而已。

环境变量NDK_PROJECT_PATH名字不能更改,因为如果定义了此环境变量后,编译器会根据此变量去找此目录下的jni下的Application.mk.

然后重新启动Cygwin。

2> cd $NDK_ROOT, 在ndk安装目录下mkdir jni 目录。

3>cd $NDK_ROOT/build/core,将该目录下的default-application.mk 拷贝到2>中jni目录下,并且重新命名为Application.mk。

4> 修改Application.mk中变量内容,指定需要编译的project路径,并且指定project path下对应的build 的make file脚本。这里编译ndk自带的samples下的hello-jni工程。

# Project Path
APP_PROJECT_PATH := $(NDK_PROJECT_PATH)/samples/hello-jni

# We expect the build script to be located here
APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/jni/Android.mk

变量APP_PROJECT_PATH是可选的,不过这里最好是指定下,看起来清晰些.

变量APP_BUILD_SCRIPT是必须的

5> $(APP_PROJECT_PATH)/jni/Android.mk 内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

6> cd $NDK_ROOT,执行./ndk-build.

因为指定了NDK_PROJECT_PATH环境变量,所以在$NDK_ROOT根目录下执行./ndk-build或是在$APP_PROJECT_PATH下执行$NDK_ROOT/ndk-build来编译$APP_PROJECT_PATH程序都可以。编译器都会先根据NDK_PROJECT_PATH环境变量去找jni/Application.mk,然后根据其中的APP_BUILD_SCRIPT来执行对应的Android.mk.

这样就可以编译Application.mk中指定的native project了,在samples/hello-jni/libs/armeabi/下生成动态库libhello-jni.so了。

呵呵, 大功告成了!

更多相关文章

  1. android 中的adb命令安装和卸载app、导出手机中的log文件
  2. Android(安卓)cmake编译FFmpeg
  3. 64位系统中安装Android(安卓)SDK“系统找不到指定的文件Java.exe
  4. DataBinding使用指南(三):生成的binding类
  5. 使用AndroidStudio报错:INSTALL_FAILED_UPDATE_INCOMPATIBLE
  6. android ndk 之Android.mk编写
  7. 工欲善其事必先利其器之Android环境搭建
  8. Launcher 安装APK快捷方式出现在末尾空白位置
  9. android UVC h264 ffmpeg软解码

随机推荐

  1. Android(安卓)SDK 2.2 离线安装
  2. TextView属性大全+单行显示长文本
  3. android viewpager+fragment做主界面(超
  4. android动画效果
  5. Android之TabLayout布局的使用
  6. Android(安卓)实习生面试经历记录
  7. Android(安卓)绘图基础:Canvas,Paint,RectF,P
  8. findViewById替代方案:Android(安卓)Jetpa
  9. android
  10. Android(安卓)计算器的开发