使用Android Studio与Eclipse开发NDK的对比
来源:互联网 发布:centos php exec 权限 编辑:程序博客网 时间:2024/06/05 06:28
最近开发的一个项目中用到了JNI,所以针对Android的两大IDE开发NDK做了一下对比。
Android Studio开发NDK的配置
我使用的是稳定版的2.0的插件,默认情况下它是不支持NDK的,即如果你在build.gradle中配置了ndk
属性是无法别识别的。
这个时候我们只需要在gradle.properties中配置以下属性即可
android.useDeprecatedNdk=true
当我第一次配置时,android studio报错无法识别前边提到的ndk
属性,提示在gradle.properties文件中添加上面的属性。
网上有很多文章提到使用试验版的插件以支持ndk,我觉得这样费事费力,而且迁移项目时容易遇到麻烦,毕竟使用稳定版插件的还是大多数。
从创建项目到一步一步添加实现JNI的整个流程网上有很多,这里就不再赘述,这里边贴一个链接 - 用Android Studio 运行ndk 程序
Eclipse开发NDK的配置
eclipse没有什么好多说的,同样,贴一个链接 - Eclipse下的Android JNI 开发
两者的区别
编译配置
编译配置主要包括3个部分:library的名字,支持的cpu架构,需要编译的源代码
以android官方提供的例子”HelloJNI”为例,这些配置在两个文件中:Android.mk与Application.mk
Android.mk文件内容如下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jniLOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_SHARED_LIBRARY)
Application.mk文件内容如下:
APP_ABI := all
由上可以很方便的看出来,library的名字和哪些源代码需要编译一般在Android.mk文件中配置,而Application.mk文件一般负责指定支持哪些cpu架构。
如果我们使用Eclipse,则上面的配置文件必不可少,否则IDE无法编译c/c++代码。
但是到了Android Studio,这两个文件则被build.gradle中的ndk
属性取代了。
下面是在Android Studio中等价的配置
ndk { moduleName "hello-jni" // adbFilters "armeabi", "armeabi-v7a", "x86" }
如果要指定支持的cpu架构,则可以取消上面的注释,否则则会生成所有支持的cpu架构的libraries
其实ndk
属性的配置只是对Android.mk的配置做了一层封装,如果你观察仔细的话,会在目录build/intermediates/ndk/debug
中发现IDE自动帮你生成了Android.mk文件,内容如下
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := jni-utilLOCAL_LDFLAGS := -Wl,--build-idLOCAL_SRC_FILES := \ /XXX/HelloJNI/src/main/jni/hello-jni.c \LOCAL_C_INCLUDES += /XXX/HelloJNI/src/main/jniLOCAL_C_INCLUDES += /XXX/HelloJNI/src/debug/jniinclude $(BUILD_SHARED_LIBRARY)
可以看到,与Eclipse版本里的Android.mk文件内容基本一致。
C++编码支持
在这个方面,Android Studio甘拜下风,在它里边写代码就像在记事本里边写一样,没有任何代码提示。
在Eclipse中可以在项目属性中的”C/C++ general”->”Paths and Symbols”里配置开发使用到的头文件,配置好之后就有代码提示和跳转功能了,配合Eclipse平台上的CDT插件,编写C++代码还是比较方便的。
Native调试
Eclipse无疑是可以Native调试的,不过我并没有调试成功,以后有空再试试。
如何调试可以参考:
eclipse 单步调试JNI
Android平台使用GDBServer 调试Native C代码
Android Studio倒是调试成功了,不过需要在build.gradle中添加以下配置,参考 build type isn’t jni debuggable error
debug { debuggable = true jniDebuggable = true}
总结
如果要编写比较多的C++代码,那么还是不要用Android Studio了,毕竟记事本的效率大家可想而知。
其它的比如编译、调试Android Studio支持的还不错,相信以后的版本会支持的更好,包括写C++代码。
- 使用Android Studio与Eclipse开发NDK的对比
- Android开发工具:Eclipse与Android Studio 快捷键对比
- 使用Android Studio开发NDK
- 使用Android Studio开发NDK
- Eclipse转Android Studio-NDK开发
- android studio的ndk开发
- Android Studio常用快捷键与Eclipse的对比(亲测)
- 2.1 Android Studio和Eclipse的对比与选择
- Android Studio jni的开发与ndk的配置
- android studio与eclipse常用快捷键对比
- Eclipse与Android Studio快捷键对比
- Android Studio 与 Eclipse 目录结构对比
- Android Studio与eclipse常用快捷键对比
- Android Studio 与 Eclipse快捷键对比
- Android Studio 快捷键 与 Eclipse快捷键对比
- Android Studio和Eclipse使用不同对比
- android 使用Eclipse开发NDK的配置和简单使用
- android开发---2.eclipse与ndk adb等工具的使用
- Widgets之Spinner
- RIL框架结构及RILJ的运行机制
- iOS 各种常用的正则表达式
- Android从1.0到 6.0各版本的差别
- strstr
- 使用Android Studio与Eclipse开发NDK的对比
- 自定义浏览器滚动条的样式,打造属于你的滚动条风格
- nginx及依赖包资源下载地址
- JQuery点击隐藏行或者列
- 极简代码(一)—— 精确率和错误率的计算
- android listview优化几种写法详细介绍
- C++ 单例模式中处理在类中声明一个指向一个自己的指针,在编译时显示定义的指针未定义的处理办法
- 【DirectX11-Tutorial】实时消息循环The Real-Time Message Loop
- Android中intent启动Activity中intent.setFlags()的作用