android studio 2.2 C++ 支持(CMAKE方法)

原创 2016年05月31日 12:47:25

上次学到了约束布局,现在继续学习android studio 2.2使用CMAKE编译C++,并支持在C++打断点,写C++代码时也支持打断点。学习的时候是使用了国外的一篇博客的代码:http://bhirawa87.my.id/blog/android-studio-cmake/
首先还是简单介绍一下Cmake.Cmake是一个构建工具,在不同的平台上是不同的构建工具 如:GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。CMake是为了达到一次编写MAKEFile,则可以在不同的平台上编译的目的编写的一款构建工具。我现在也不是太懂,以后学习一下,并写个CMake自学教程来。这里有个网站http://hahack.com/codes/cmake/,可以参考学习。
切入正题。首先建立一个空工程,然后添加NDK目录(没有添加的话,在下面添加CMakeLists.txt的路径的时候回报错),添加的方法是右键打开模块设置,然后填写NDK的路径,如下图:
这里写图片描述
接下来是连接到C++工程(翻译过来的,不知道是不是这样叫),右键模块的名字,然后点击“Link C++ Project with Gradle”,在这里会要求填写CMakeList.txt的路径,你把文件的路径填写进去就可以了。
好了,该写代码了:
1 首先是在main下面建立cpp文件夹,然后编写编译文件CMakeLists.txt的编写:
cmake_minimum_required(VERSION 2.8.7)
add_library(hello-jni SHARED hello-jni.c)
target_link_libraries(hello-jni log android)
NOTE:android studio 2.2自带的CMake的版本是3.4的
2 编写hello-jni.c的代码:

#include <string.h>
#include <jni.h>

jstring
Java_com_example_jaimeyang_nativecmaketest_MainActivity_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
#if defined(__arm__)
    #if defined(__ARM_ARCH_7A__)
    #if defined(__ARM_NEON__)
      #if defined(__ARM_PCS_VFP)
        #define ABI "armeabi-v7a/NEON (hard-float)"
      #else
        #define ABI "armeabi-v7a/NEON"
      #endif
    #else
      #if defined(__ARM_PCS_VFP)
        #define ABI "armeabi-v7a (hard-float)"
      #else
        #define ABI "armeabi-v7a"
      #endif
    #endif
  #else
   #define ABI "armeabi"
  #endif
#elif defined(__i386__)
    #define ABI "x86"
#elif defined(__x86_64__)
    #define ABI "x86_64"
#elif defined(__mips64)  /* mips64el-* toolchain defines __mips__ too */
    #define ABI "mips64"
#elif defined(__mips__)
    #define ABI "mips"
#elif defined(__aarch64__)
#define ABI "arm64-v8a"
#else
    #define ABI "unknown"
#endif

    return (*env)->NewStringUTF(env, "Hello from JNI !  Compiled with ABI " ABI ".");
}

3 此时在调试的时候你会发现在选择调试目标那里出现了红叉,然后运行的时候,提示”package id lldb not found:2.2”类似的提示,打开SDK管理器更新把lldb更新到2.2的版本,在C++代码中打个断点,此时发现可以进入断点,OK,大功告成。。。。
忘记说一个了,在android studio2.2中模拟器的速度快了很多,估计是因为使用了因特尔HAXM的驱动,并且使用了X86的镜像,如果你觉得模拟器太慢了,也可以试一试。。。

android studio 使用CMAKE

原文地址 前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的。  1. 它没有代码提示!!!这意味着我们必须自己手动敲出所有的代码,对于一个新手来说,要一个字母都不错且大小...

android studio 2.2 使用cmake编译NDK

android studio 2.2 已经进入beta版本,新功能添加众多,NDK编程也得到了简化。官方博客介绍。本文介绍如何使用新版android studio调用 c++代码,为了超级通俗易懂,例...
  • lmw21848
  • lmw21848
  • 2016年08月11日 17:51
  • 11874

Android studio CMake (一)

Android Studio 2.2支持C/C++编辑和编译,对Android开发人员来说,是一件值得‘喜大普奔’的事。国内的许多Android的开发者也很快跟进了这一块,不但翻译了官方的文章,也写了...
  • hhbgk
  • hhbgk
  • 2016年11月26日 13:36
  • 1732

NDK开发 从入门到放弃(七:Android Studio 2.2 CMAKE 高效NDK开发)

更深入的了解如何开发NDK

Android Studio Cmake配置项

Cmake的配置 Android Studio 2.2以上支持了Cmake的配置JNI的相关参数,简化了通过Android.mk配置。并很好的继承了C++的编辑方式。以下是对应的引入第三方so和第三...

Android开发学习之路--Android Studio cmake编译ffmpeg

最新的android studio2.2引入了cmake可以很好地实现ndk的编写。这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路–ND...

AndroidStudio用Cmake方式编译NDK代码

1.cmake是什么? CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C+...

Android studio 使用Cmake完成C/C++ 的使用以及生成so文件

Android studio 2.2版本以后对C/C++的支持可以说很方便了,当然官方推荐使用Cmake完成对C/C++的支持 2.2版本以上的同学新建一个项目就知道了,步骤如下: File -> N...

AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别

AndroidStudio2.2 CMake 和传统 JNI 两种开发NDK的方法相关知识

Android NDK 开发(五)AndroidStudio 2.2 NDK的开发环境搭建

前言之前一直在用Eclipse 做开发,直到今年年初才将项目迁移到Google 推荐的AndroidStudio上面,毕竟这是一个趋势,可谁知道事情根本没有我想的那么简单,这期间遇到了N多坑,我想这些...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android studio 2.2 C++ 支持(CMAKE方法)
举报原因:
原因补充:

(最多只允许输入30个字)