android studio 使用JNI开发

来源:互联网 发布:金庸群侠传x数据上限 编辑:程序博客网 时间:2024/05/22 11:47

eclipse 和 android studio使用JNI的区别:
  eclipse是使用Android.mk 这个mk文件来组织编译,在android studio上是使用build.gradle来编译的,因此eclipse项目迁移到as项目的时候要将mk文件转换为gradle语句。Android下使用JNI有两种情况,一是直接使用.so文件,还有就是使用c/c++源代码进行编译。

  一 使用.so文件,在src/main目录下建立jniLibs,把.so文件放在该目录下

        
这样在项目编译的时候就会自动将so文件打包进apk,然后在项目中直接使用LoadLibray就可以加载so文件了
         
例如
     
String libName="myLib";static {    System.loadLibrary("myLib");}

 二  使用C/C++源代码

     1,首先确保ndk版本在r9d版本以上,如果低于该版本,在使用Android studio的时候就会出现 No rule to make Target 这样的错误。 
     2,要配置ndk,在 local.properties目录配置ndk, 例如

实际目录改成自己本地所在的路径
    3,在app目录下的build.gradle目录下配置ndk使用模块
      
android {    compileSdkVersion 19    buildToolsVersion "20.0.0"    defaultConfig {        applicationId "com.example.ndksample"        minSdkVersion 9        targetSdkVersion 19        versionCode 1        versionName "1.0"        ndk {            moduleName "myLib" //这是C++代码的module文件        }    }
   4,添加C++代码,在app/src/main目录下建立jni文件夹,将C++文件放在目录下
       
      也可以自定义源代码文件目录
       
android{    sourceSet.main{        jni.srcDirs 'src/main/source'    }}
  
    5,可以分平台配置,这样做的好处是可以指定使用的平台来编译.so文件
         
android {    productFlavors {        x86 {            ndk {                abiFilter "x86"            }        }        arm {            ndk {                abiFilter "armeabi-v7a"            }        }        mips {            ndk {                abiFilter "mips"            }        }    }} 
  

  


0 0