源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

详解如何使用Android Studio 进行NDK开发和调试

  • 时间:2020-04-13 08:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:详解如何使用Android Studio 进行NDK开发和调试
尽管Android Studio已经越来越流行了,但很多人还是习惯于Eclipse或源码环境下开发JNI应用。个人认为使用Android Studio作NDK开发是必然趋势,所以本文将简单介绍如何在Android Studio上实现NDK开发。 [b]简介[/b] [b]JNI[/b] JNI 是Java Native Inteface的缩写,是Java中定义的一种用于连接Java和C/C++接口的一种实现方式。 [b]NDK[/b] NDK 是 Native Developmentit的缩写,是Google在Android开发中提供的一套用于快速创建native工程的一个工具。 使用这个工具可以很方便的编写和调试JNI的代码。 NDK可从官网或[url=http://www.1sucai.cn/]jb51.net[/url]下载。 [b]Gradle[/b] Gradle 是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置。 以往Android NDK开发需要在Eclipse或源码环境下,建立并配置Android.mk和Application.mk,且还要通过java命令生成.h头文件,才能编译生成so库。但在Android Studio中这些步骤都不需要,因为Gradle足够强大,只需配置Gradle即可编译生成so库。 [b]gradle-experimental插件[/b] 在2015年5月的Google I/O大会上, Google宣布Android Studio开始支持NDK开发,通过和JetBrains的合作,将Clion整合进了Android Studio 1.3,并免费支持NDK C++开发。 同年7月,在Android Studio 1.3版本上添加了gradle-experimental插件,该插件支持NDK开发和调试,且带有代码不全和重构等高级功能。 CAVEAT: Note that this plugin is a preview of the plugin for feedback on performance and NDK integration. The Gradle API for the new component model is not final, which means each plugin will only work with a specific version of Gradle. Additionally, the DSL may also change. 目前这个插件是预览插件,并不是正式的。意味着插件只能运行在特定的Gradle版本上。并且DSL(领域特定语言)也要改变。 [b]使用Experimental插件进行NDK开发[/b] [b]使用Experimental插件的必要条件[/b] 1、Gradle-2.5或更高版本 2、Android Studio 1.3 RC1或更高版本 3、Android NDK r10e 或更高版本 4、Build Tools 19.0.0 或更高版本 每个版本的experimental插件需要特定的Gradle版本
Plugin Version Gradle Version
0.1.0 2.5
0.2.0 2.5
0.3.0-alpha3 2.6
0.4.0 2.8
0.6.0-alpha1 2.8
0.6.0-alpha5 2.10
0.7.0-alpha1 2.10
[b]NDK开发步骤[/b] 1、新建一个Android标准工程 2、按F4打开工程配置 [img]http://files.jb51.net/file_images/article/201712/2017126105848091.jpg?2017116105927[/img] 3、使用experimental插件需要对以下三个文件做修改:
./build.gradle
./app/build.gradle
./gradle/wrapper/gradle-wrapper.properties
[b]./gradle/wrapper/gradle-wrapper.properties[/b] 将distributionUrl改用gradle-2.10版本
[url=http://tools.android.com/tech-docs/new-build-system/gradle-experimental]官方文档[/url],Demo可以参考[url=https://github.com/googlesamples/android-ndk]官方Demo[/url] [b]换种方式进行NDK开发[/b] 既然预览版com.android.tools.build:gradle-experimental支持NDK, 那么正式版com.android.tools.build:gradle 是否也可以实现NDK开发呢? 经过实验,答案是可以的! [b]步骤[/b] 1、新建一个Android标准工程,并在工程设置中配置NDK路径。 2、打开 app level 的 build.gradle, 配置NDK
  ndk {
    moduleName "NdkJniDemo"     //生成的so名字
    abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库,可忽略
  }
然后点击右上角Sync Now, 会有如下错误提示: [img]http://files.jb51.net/file_images/article/201712/2017126110329272.png?201711611350[/img] 按提示,在 gradl.properties 文件里加上android.useDeprecatedNdk=true即可。 3、在Java文件(这里以JNIActivity为例)中添加代码
  static {
    System.loadLibrary("JNITest");
  }
  public native String testJni();
接着在testJni()方法上按快捷键Alt + Enter并回车, 同样,会自动在main目录下生成jni文件夹,内含JniDemo.c:
#include <jni.h>
但是,你会发现并不会自动生成JNI方法,这是因为使用experimental插件才会自动生成代码。 那自动生成代码该如何实现呢? 方法依然是使用gradle-experimental插件,但是不同的是,在app level的build.gradle中添加com.android.tools.build:gradle-experimental依赖。 4、在./app/build.gradle中添加gradle-experimental依赖
  dependencies {
    compile 'com.android.tools.build:gradle-experimental:0.7.0'
  }
再次在testJni()方法上按快捷键Alt + Enter并回车
  #include <jni.h>
  JNIEXPORT jstring JNICALL
  Java_com_connorlin_jnitest_MainActivity_testJni(JNIEnv *env, jobject instance) {
    // TODO
    return (*env)->NewStringUTF(env, "returnValue");
  }
你会发现成功自动生成JNI方法了。 [b]副作用[/b] 这种方式有个副作用是 Run app 时可能会报错: [img]http://files.jb51.net/file_images/article/201712/2017126110449783.png?20171161156[/img] 此时,只要将gradle-experimental依赖注释掉即可正常运行,同时会保持自动生成代码的功能,直到关闭工程。 这样我们在需要自动生成代码的时候,将gradle-experimental依赖再次打开即可。 [b]NDK调试[/b] 默认情况下是不支持NDK调试的,但要支持NDK调试也很简单,只要做些简单配置即可。 1、打开JNI调试 [img]http://files.jb51.net/file_images/article/201712/2017126110521054.png?201711611536[/img] 2、配置Android Native - Debugger [img]http://files.jb51.net/file_images/article/201712/2017126110548222.jpg?201711611612[/img] [img]http://files.jb51.net/file_images/article/201712/2017126110628265.png?201711611646[/img] 3、下载LLDB 2.0 首次底部会报错 [img]http://files.jb51.net/file_images/article/201712/2017126110701509.png?201711611716[/img] 点击 Fix,提示下载LLDB 2.0,照做,下载安装即可。 4、完成NDK调试配置,可以正常调试了。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部