尽管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 (); >之前此时,本机方法标红,提示如下:
在testJni()方法上按快捷键Alt + Enter,出现如下提示
详解如何使用Android工作室进行NDK开发和调试