详解如何使用Android工作室进行NDK开发和调试

  

尽管Android工作室已经越来越流行了,但很多人还是习惯于Eclipse或源码环境下开发JNI应用。个人认为使用Android工作室作NDK开发是必然趋势,所以本文将简单介绍如何工作室在Android上实现NDK开发。

  

<强>简介

  

<强> JNI

  

JNI是Java本机Inteface的缩写,是Java中定义的一种用于连接Java和C/c++接口的一种实现方式。

  

<强> NDK

  

NDK是本地Developmentit的缩写,是谷歌在安卓开发中提供的一套用于快速创建本地工程的一个工具。
  使用这个工具可以很方便的编写和调试JNI的代码。

  

NDK可从官网或jb51.net下载。

  

<强> Gradle

  

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置。

  

以往Android NDK开发需要在Eclipse或源码环境下,建立并配置Android.mk和Application.mk,且还要通过java命令生成。h头文件,才能编译生成库。但在Android工作室中这些步骤都不需要,因为它足够强大,只需配置Gradle即可编译生成库。

  

<强> gradle-experimental插件

  

在2015年5月的谷歌I/O大会上,谷歌宣布Android工作室开始支持NDK开发,通过和JetBrains的合作,将Clion整合进了Android Studio 1.3,并免费支持NDK c++开发。

  

同年7月,在Android Studio 1.3版本上添加了gradle-experimental插件,该插件支持NDK开发和调试,且带有代码不全和重构等高级功能。

  

注意:注意,这个插件是一个预览的插件反馈alt="详解如何使用Android工作室进行NDK开发和调试">

  

3,使用实验插件需要对以下三个文件做修改:

        。/build.gradle/app/build.gradle   。/它/包装/gradle-wrapper.properties      

<>强。/它/包装/gradle-wrapper.properties

  

将distributionUrl改用gradle - 2.10版本

  

代码如下:
  distributionUrl=https \ \://services.gradle.org/distributions/gradle - 2.10 - all.zip
  
  

  

<强>。/build.gradle

  

使用<代码> com.android.tools。构建:gradle-experimental 代替<代码> com.android.tools.build: gradle

        buildscript {   存储库{   jcenter ()   }   依赖关系{//类路径的com.android.tools.build: gradle: 2.0.0   类路径“com.android.tools.build: gradle-experimental: 0.7.0-alpha4”//注意:不要把你的应用程序依赖关系;他们属于//在单个模块中构建。gradle文件   }   }      之前      

<强>。/app/build.gradle

  

这部分改动比较大,修改及注释如下:

     //用com.android.model。应用程序代替com.android.application   应用插件:“com.android.model.application”//将原来的配置模型用{}包起来   模型{   android {//取值必须使用“=毙问?/否则会报“错误:原因:org.gradle.api.internal.ExtensibleDynamicObject”错误   compileSdkVersion=23   buildToolsVersion=' 23.0.2 '   defaultConfig {//取值必须使用“=毙问?   applicationId=" com.connorlin.jnitest "//这里要注意是xxSdkVersion.apiLevel//否则会报“无法加载类com.android.build.gradle.managed.ProductFlavor_Impl”错误   minSdkVersion。apiLevel=15   targetSdkVersion。apiLevel=23   versionCode=1   versionName=" 1.0 "   }//配置NDK   ndk {//生成这样的名字,是必须的   moduleName=" JNITest "   工具链='叮当声'   c99 CFlags.add('化')//添加依赖库   ldLibs。addAll([“安卓”,‘OpenSLES’,‘日志’])//生成不同abi体系的库   abiFilters。addAll ([‘armeabi’,‘armeabi-v7a’,‘arm64-v8a’,   “x86”、“x86_64’,   mips, mips64 '])   }   buildTypes {   释放{   minifyEnabled=false//这里注意:使用proguardFiles.add()方法   proguardFiles.add(文件(“proguard-rules.txt”))   }   }   }   }      之前      

4,在Java文件(这里以JNIActivity为例)中添加代码

        静态{   System.loadLibrary (“JNITest”);   }   公共原生字符串testJni ();   之前      

此时,本机方法标红,提示如下:

  

详解如何使用Android工作室进行NDK开发和调试

  

在testJni()方法上按快捷键Alt + Enter,出现如下提示

详解如何使用Android工作室进行NDK开发和调试