Android NDK 学习笔记(一)

使用SWIG 自动生成封装代码。


一些注意事项

  • 必须作为动态链接库提供,按照Unix 动态链接库命名规则命名。比如:libloadwav.so
  • 在应用里必须显式加载。例如:
    static {
         System.loadLibrary("loadwav");
    }
    
    注意:不能有lib前缀和.so 后缀
  • 在application.mk 里指定CPU。

================================================================

构建原生代码的基本步骤


  1. 将代码放在 $PROJECT/jni/ 下
  2. 编写 $PROJECT/jni/Android.mk 文件
  3. (可选)创建 $PROJECT/jni/Application.mk. 可以通过Application.mk指定不同的CPU和编译/链接选项。详细设置参看<ndk>/docs/Application-mk.html .
  4. 在你的project目录下或它的任意子目录下运行$NDK/ndk-build 生成代码。

Android.mk 

  • 语法细节参看 <ndk>/docs/android-mk.html .
  • 可以在单一的android.mk文件中定义多个模块,也可以用每个模块一个android.mk文件的方式来定义。
  • 一个单一的asndroid.mk 可能被解析好几次,所以不要假定某些变量没有定义。
  • 如果想在子目录中定义一些android.mk, 则应该在顶层目录的android.mk 中显式调用。比如用如下语句:
    include $(call all-subdir-makefiles)



Application.mk

如果说android.mk文件是描述模块,则Application.mk 是描述应用本身。细节参考<ndk>/docs/APPLICATION-MK.html
主要作用:
  1. 明确描述应用需要的模块
  2. 指定CPU类型
  3. 设定可选的编译/链接选项。比如链接release 还是 debug ;特殊的C/C++编译选项;是否构建所有的模块。
application.mk 是可选的。NDK缺省行为是构建android.mk里的所有模块,CPU ABI 是 armeabi .

构建

在android NDK r4 以后,使用ndk-build 脚本来构建。为保持兼容你也可以在$NDK/apps 目录下建子目录的方式。

参看 <ndk>/docs/NDK-BUILD.html .


自定义输出路径

缺省情况下,所有的输出文件将放在$PROJECT/obj .可以通过NDK_OUT环境变量指定到其它目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值