首页 存档 技术 查看内容

Android Studio jni开发入门看我就够了!

2018-3-30 13:00 |来自: 互联网 309 0

摘要: 此贴记录一下Android Studio 进行jni开发的基础配置以及入门教程,想当初使用eclipse配置ndk环境都难,现在基本都向AS转型,特此给需要帮助的新手村的同学们少走弯路 一、环境配置 主要需要配置的就是NDK(Native De ...

此贴记录一下Android Studio 进行jni开发的基础配置以及入门教程,想当初使用eclipse配置ndk环境都难,现在基本都向AS转型,特此给需要帮助的新手村的同学们少走弯路

一、环境配置

主要需要配置的就是NDK(Native Development Kit),现在Android studio很便利,可以一键下载: file → setting → 按截图找到如下路径 → 选择NDK → 确定应用下载

  • 安装完成以后就可以开撸了

二、jni hello world!

1. 新建一个项目

  • 新建一个app,测试jni开发



2.设置支持jni

  • 打开gradle.properties,添加:

    
    
  1. android.useDeprecatedNdk=true

  • 打开local.properties,添加:

    
    
    1. ndk.dir=NDK的路径

  • 最后打开app内build.gradle,在android/defaultConfig下面添加ndk配置


    1. apply plugin: 'com.android.application'

    2. android {

    3. compileSdkVersion 25

    4. buildToolsVersion "25.0.0"

    5. defaultConfig {

    6. applicationId "com.lilei.testjni"

    7. minSdkVersion 15

    8. targetSdkVersion 25

    9. versionCode 1

    10. versionName "1.0"

    11. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    12. ndk {

    13. moduleName "JNISample"

    14. }

    15. }

    16. buildTypes {

    17. release {

    18. minifyEnabled false

    19. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    20. }

    21. }

    22. }

    23. dependencies {

    24. compile fileTree(dir: 'libs', include: ['*.jar'])

    25. androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

    26. exclude group: 'com.android.support', module: 'support-annotations'

    27. })

    28. compile 'com.android.support:appcompat-v7:25.3.1'

    29. compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8'

    30. testCompile 'junit:junit:4.12'

    31. }

    • moduleName 表示编译出的so文件的名字

    3.新建java访问c层的接口类

    • 创建一个Jni的工具类,并定义接口函数,函数关键字用native(static用不用均可)

    1. package com.lilei.testjni;

    2. /**

    3. * Created by lilei on 2017/3/29.

    4. */

    5. public class JniUtils {

    6. public static native String getJniString();

    7. }

    • getJniString()方法即要与C层的交互的函数

    4.生成头文件

    • "make-project"编译完成

    • 打开终端,运行

      
      

      运行成功之后打开app/build/intermediates/classes/debug/ 即可找到编译出的头文件"com_lilei_testjni_JniUtils.h",不难发现头文件名是有原报名 类名组成

    1. cd app/build/intermediates/classes/debug/

    2. javah com.lilei.testjni.JniUtils

    5.创建jni开发的文件夹

    • 点击app文件夹,New → Folder → JNI Folder, 选择在main文件夹下即可,生成成功后main目录下会出现一个jni的文件夹

    • 找到刚才生成到头文件,复制到jni文件夹下(记得关闭刚才使用的终端,否则无法复制)

    • 头文件有了,现在在jni目录下创建一个C 文件用于开发使用,命名与头文件相同

    • 编写C 文件中定义函数的代码

    1. #include "com_lilei_testjni_JniUtils.h"

    2. JNIEXPORT jstring JNICALL Java_com_lilei_testjni_JniUtils_getJniString

    3. (JNIEnv *env, jclass) {

    4. // new 一个字符串,返回Hello World

    5. return env -

    声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

    路过

    雷人

    握手

    鲜花

    鸡蛋

    相关分类

    返回顶部