NDK 编辑C/C++ SO库

以下是我在window环境下编译SO库文件,以下过程亲测有效,在此做个笔记,以备后查!


1.配置NDK的开发环境

  1).下载NDK,放到指定的目录下面
  2).Preferences -> Andriod -> NDK -> NDK location 点击按钮【Browse...】 放置NDK的路径 ->OK

2.新建NDK开发工程
  1).new -> New Android Application  
      Minimun Required SDK:API 8   
      Target SDK:API 8  
      Compile Whit:API 8  
      Theme:None
     然后一直 next 直到 finish
  2).添加NDK支持:右键项目 -> Android Tools -> Add Native Support ->SO库名 ->finish 自动创建jni目录
  3).#include<jni.h> 找不到这个头文件解决办法:
     右键项目 -> Properties -> C/C++ General ->Paths and Symbols -> Includes选项卡 -> Add -> File system... ->选择目录
     andriod-ndk-r8d\platforms\android-8\arch-arm\usr\include  
     同时勾选上:"Add to all configuration"和"Add to all languages"  -> OK

3.编译C语言
   1).右键项目下面\src\包名 -> New -> Class ->输入类名 -> finish
   2).打开 新建的类的java文件 新建c函数  例如:public native int add( int arg1 , int arg2 );
   3).找到当前工程的目录:右键工程名->Properties->Resource->Location 
      编译C代码:cmd->切换到工程目录下面(cd /d 目录名) -> 进入目录 bin\classes -> 
      输入命令 :javah -d ../../jni -jni 包名加类名(例如:com.myndk.ndktest.HelloC)->回车
   4).Refresh 工程目录下面的 jni 文件夹就会出现 编译好的头文件
   5).在.cpp文件中添加包含 编译好的头文件 #include"头文件" ,把头文件中的声明函数进行编辑 不要拷贝NIEXPORT 这个关键词 
   6).在新建类.java中添加静态模块来加载生成的so库 例如:static{System.loadLibrary("库名");}

4. 1).把ndk开发包发入到环境变量中
      右键-我的电脑-高级-环境变量-系统变量-新建-Path:D:\adt-bundle\android-ndk-r8d-确定

   2). 命令行 - 进入到工程目录 - 输入:ndk-biuld



5.若出现以下问题:
  Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml    
  则在jni目录下面加入:Application.mk
APP_STL := gnustl_static
APP_PLATFORM := android-8
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -fexceptions

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值