android 修改jni版本,Android Studio下Jni开发配置

Android Studio下Jni开发配置

时间:15-06-18 栏目:Android探究 作者:魔豆先生 评论:0点击: 2,037 次

最近在将一个小应用从eclipse 开发迁移到

Android的JNI开发主要有两中情况:一种是使用已经编译好的.so动态库;一种是使用c/c++源代码开发。下面分别介绍:

一、使用已经编译好的so

这种情况比较件简单,只要把的.so文件放到相应的目录即可。如下:

.[module_name]

. . [src]

. . .[main]

. . . .[jniLibs]

. . . . .[armeabi]

. . . . .[armeabi-v7a]

. . . . .[x86]

. . . . .[mips]

注意 jniLibs 目录是放在 module 下面,在Android Studio中效果如下,这样编译之后so就会被自动打包进apk,代码中直接 loadLibrary即可了:

a3bbdab0377f299849207c22e5ade077.png

1 String libName = "helloNDK"; // 库名, 注意没有前缀lib和后缀.so

2 System.loadLibrary( libName );

二、使用C/C++源码

1 r9d以上版本NDK

首先确保自己的NDK版本在r9d以上,目前最新可以拿到的是r10,下载地址:

感谢 Android Studio中文组的无私奉献。

如果低于r9d版本,Android studio 下ndk编译会出现  No rule to make target 的错误。

2 配置 ndk.dir

在 local.properties 添加如下配置:

sdk.dir=/path/to/android-sdk

ndk.dir=/path/to/android-ndk

黄色部分修改为你本机的实际情况,如我的是:

sdk.dir=D\:\\android-sdk-windows

ndk.dir=D\:\\android-ndk

3 app下的build.gradle配置NDK模块

7721ab696addedb46ee45a07ac3ec4ee.gif

android {

compileSdkVersion 19

buildToolsVersion "20.0.0"

defaultConfig {

applicationId "com.example.ndksample"

minSdkVersion 9

targetSdkVersion 19

versionCode 1

versionName "1.0"

ndk {

moduleName "helloNDK" //

}

}

// ... more gradle stuff here ...

} // end of android section

7721ab696addedb46ee45a07ac3ec4ee.gif

ndk 还可以配置更多选项,如下:

7721ab696addedb46ee45a07ac3ec4ee.gif

ndk {

moduleName "myEpicGameCode"

cFlags "-DANDROID_NDK -D_DEBUG DNULL=0" // Define some macros

ldLibs "EGL", "GLESv3", "dl", "log" // Link with these libraries! 在这里添加你原先在makefile里ldlibs所链接的库

stl "stlport_shared" // Use shared stlport library

}

7721ab696addedb46ee45a07ac3ec4ee.gif

4 添加C/C++源代码

默认情况下,你需要把C/C++源代码放在 [module]/src/main/

d133a12e23b1f7e027a791464ec15a55.png

当然,也可以自定义源代码路径:

7721ab696addedb46ee45a07ac3ec4ee.gif

android {

// .. android settings ..

sourceSets.main {

7721ab696addedb46ee45a07ac3ec4ee.gif

这 里有一点需要注意,目前windows上

5 分平台配置编译

这一步不是必须的,你可以根据需要,对各个平台进行不同的编译配置,可以设置覆盖前面的编译选项(例如 cFlags )。例如你只想编译指定平台的.so,而不是所有的平台。如下:

7721ab696addedb46ee45a07ac3ec4ee.gif

android {

// .. android settings ..

productFlavors {

x86 {

ndk {

abiFilter "x86"

}

}

arm {

ndk {

abiFilter "armeabi-v7a"

}

}

mips {

ndk {

abiFilter "mips"

}

}

}

} // android

7721ab696addedb46ee45a07ac3ec4ee.gif

参考链接:

其他参考:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值