前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Studio对ndk开发调试的支持前言支持版本对ndk-build的支持对CMake的支持

Android Studio对ndk开发调试的支持前言支持版本对ndk-build的支持对CMake的支持

作者头像
用户2930595
发布2018-08-23 09:54:12
1.3K0
发布2018-08-23 09:54:12
举报

前言

编写C/C++代码最大的痛苦就是语法提示和调试,早期Android Studio对NDK不做支持或者支持得不够好,导致NDK开发异常缓慢,最大的问题是调试,经常一些崩溃问题需要反复的加日志排查。

然而现在Android Studio对NDK的开发和调试都做了比较好的支持(仍然存在一些bug)。下面就来说一下如何进行配置。

支持版本

不太确定是从哪个版本开始支持的,但我当前使用的版本能很好支持:

代码语言:javascript
复制
Android Studio 2.2.3
gradle-2.14.1-all.zip   //在gradle-wrapper.properties中指定
com.android.tools.build:gradle:2.2.3   //在项目根目录下的build.gradle中指定

假如以前的项目不是这些版本,手动进行升级。

对ndk-build的支持

如果项目之前使用ndk-build那一套编译方式,即需要Android.mk,那么只要在module下的build.gradle中稍加配置即可集成,例子如下:

代码语言:javascript
复制
1 apply plugin: 'com.android.application'
2 
3 android {
4     compileSdkVersion 25
5     buildToolsVersion "24.0.3"
6     defaultConfig {
7         applicationId "com.andr0day.test"
8         minSdkVersion 19
9         targetSdkVersion 25
10        versionCode 1
11        versionName "1.0"
12        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
13        externalNativeBuild {
14            ndkBuild{
15                abiFilters "armeabi-v7a"
16                cFlags "-DNDKLOG"
17                cppFlags "-std=c++11"
18            }
19        }
20    }
21    buildTypes {
22        release {
23            minifyEnabled false
24            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
25        }
26    }
27    externalNativeBuild {
28        ndkBuild{
29            path "src/main/cpp/Android.mk"
30        }
31    }
32 }
33
34 dependencies {
35    compile fileTree(dir: 'libs', include: ['*.jar'])
36    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
37        exclude group: 'com.android.support', module: 'support-annotations'
38    })
39    compile 'com.android.support:appcompat-v7:25.0.0'
40    testCompile 'junit:junit:4.12'
41 }

其中有两处需要注意:

  1. android.externalNativeBuild.ndkBuild配置好Android.mk的路径
  2. android.defaultConfig.externalNativeBuild.ndkBuild配置好ndk-build的参数

你同样可以在Android.mk的同级目录下放置Application.mk,配置依然会生效,比如在其中指定:APP_STL := stlport_static

关于Android.mk的更多知识,参考Android.mk语法解释[转]

对CMake的支持

现在AndroidStudio默认对CMake进行支持,例子如下:

代码语言:javascript
复制
1 apply plugin: 'com.android.application'
2 
3 android {
4     compileSdkVersion 25
5     buildToolsVersion "24.0.3"
6     defaultConfig {
7         applicationId "com.andr0day.ndktest"
8         minSdkVersion 19
9         targetSdkVersion 25
10        versionCode 1
11        versionName "1.0"
12        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
13        externalNativeBuild {
14            cmake {
15                cppFlags "-std=c++11 -frtti -fexceptions"
16            }
17        }
18    }
19    buildTypes {
20        release {
21            minifyEnabled false
22            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23        }
24    }
25    externalNativeBuild {
26        cmake {
27            path "CMakeLists.txt"
28        }
29    }
30 }
31
32 dependencies {
33    compile fileTree(dir: 'libs', include: ['*.jar'])
34    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
35        exclude group: 'com.android.support', module: 'support-annotations'
36    })
37    compile 'com.android.support:appcompat-v7:25.0.0'
38    testCompile 'junit:junit:4.12'
39 }

可以看到对应于之前ndkBuild的地方被调整为cmake。

关于更多CMake的知识,参见这里

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.12.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 支持版本
  • 对ndk-build的支持
  • 对CMake的支持
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档