前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >004android初级篇之androidStudio ndk开发环境

004android初级篇之androidStudio ndk开发环境

作者头像
上善若水.夏
发布2018-09-28 10:34:03
7650
发布2018-09-28 10:34:03
举报
文章被收录于专栏:上善若水

android studio中编译C/C++源代码

1. 配置ndk.dir

在 local.properties 添加如下配置:

代码语言:javascript
复制
sdk.dir=path_of_android-sdk
ndk.dir=path_of_android-ndk

android studio中有对ndk环境的设置:

代码语言:javascript
复制
【File】->[Project Struct]->Android NDK Location

在如上位置设置ndk的安装位置。

2.Gradle配置NDK模块

参考如下: android { compileSdkVersion 23 buildToolsVersion "23.0.1"

代码语言:javascript
复制
    defaultConfig {
        applicationId "com.frank.smart.smarthome"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        ndk {
            moduleName "SmartSocket"
            ldLibs "log", "z", "m"
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }

ndk还可以配置更多选项,如下:

代码语言:javascript
复制
ndk {  
  moduleName "myEpicGameCode"
  cFlags "-DANDROID_NDK -D_DEBUG DNULL=0"   // Define some macros
  ldLibs "EGL", "GLESv3", "dl", "log"       // Link with these libraries!
  stl "stlport_shared"                      // Use shared stlport library
}

3.添加C/C++源代码

默认情况下,你需要把C/C++源代码放在 [module]/src/main/jni/ 路径下。效果如下图所示: 当然,你也可以自定义源代码路径:

代码语言:javascript
复制
android {

  // .. android settings ..

  sourceSets.main {
      jni.srcDirs 'src/main/source'
  }
}

4.分平台配置编译(可选)

这一步不是必须的,你可以根据需要,对各个平台进行不同的编译配置,可以设置覆盖前面的编译选项(例如 cFlags )。例如你只想编译指定平台的.so,而不是所有的平台。如下:

代码语言:javascript
复制
android {
  // .. android settings ..
  productFlavors {
    x86 {
      ndk {
        abiFilter "x86"
      }
    }
    arm {
      ndk {
        abiFilter "armeabi-v7a"
      }
    }
    mips {
      ndk {
        abiFilter "mips"
      }
    }
  }
} // android

5. 一个编译错误的解决

android studio 根据Gradle配置自动生成Android.mk 位于app\build\intermediates\ndk\debug下 如果只有c/cpp文件,直接这样编译的话,会报错,这应该是android studio 在这种情况自动生成Android.mk 时的一个bug,见编译错误。

Error:Execution failed for task ':nativeactivity:compileDebugNdk'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\android-ndk-r10\ndk-build.cmd'' finished with non-zero exit value 2

解决方法:

代码语言:javascript
复制
   在jni文件下建一个空的empty.c文件 编译运行即可

如果还运行不了,在当前model的build.gradle下添加

代码语言:javascript
复制
android{

   …………
    sourceSets.main {
        jni.srcDirs = []
    }
}    

参考链接

  1. Android Studio中NDK开发
  2. NDK错误 org.gradle.process.internal.ExecException: Process 'command with non-zero exit value 2
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015.11.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • android studio中编译C/C++源代码
    • 1. 配置ndk.dir
      • 2.Gradle配置NDK模块
        • 3.添加C/C++源代码
          • 4.分平台配置编译(可选)
            • 5. 一个编译错误的解决
              • Error:Execution failed for task ':nativeactivity:compileDebugNdk'.
          • 参考链接
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档