• 004androidStudio ndk开发环境


    004androidStudio ndk开发环境

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

    1. 配置ndk.dir

    在 local.properties 添加如下配置:

    sdk.dir=path_of_android-sdk
    ndk.dir=path_of_android-ndk
    

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

    【File】->[Project Struct]->Android NDK Location
    

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

    2.Gradle配置NDK模块

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

        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还可以配置更多选项,如下:

    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/ 路径下。效果如下图所示:
    当然,你也可以自定义源代码路径:

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

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

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

    android {
      // .. android settings ..
      productFlavors {
        x86 {
          ndk {
            abiFilter "x86"
          }
        }
        arm {
          ndk {
            abiFilter "armeabi-v7a"
          }
        }
        mips {
          ndk {
            abiFilter "mips"
          }
        }
      }
    } // android
    

    5. 一个编译错误的解决

    android studio 根据Gradle配置自动生成Android.mk 位于appuildintermediates dkdebug下
    如果只有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 dk-build.cmd'' finished with non-zero exit value 2

    解决方法:

       在jni文件下建一个空的empty.c文件 编译运行即可
    

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

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

    参考链接

    1. Android Studio中NDK开发
    2. NDK错误 org.gradle.process.internal.ExecException: Process 'command with non-zero exit value 2
  • 相关阅读:
    防火墙iptables 设置
    CentOS 6.5系统中安装配置MySQL数据库
    判断服务是否开启,应用是否安装,并安装应用
    判断是移动端还是PC端
    二维码的生成细节和原理
    onclick 常用手册
    PHP json_encode函数中需要注意的地方
    利用PHP SOAP扩展实现简单Web Services
    Symfony2学习笔记之事件分配器
    听 Fabien Potencier 谈Symfony2 之 《What is Symfony2 ?》
  • 原文地址:https://www.cnblogs.com/fly-fish/p/4914795.html
Copyright © 2020-2023  润新知