如何在gradle文件中为android ndk build指定NDK_TOOLCHAIN_VERSION

如何在gradle文件中为android ndk build指定NDK_TOOLCHAIN_VERSION,第1张

概述我正在移动我的Android项目,该项目使用ndk-build来使用gradle构建系统,如Android新构建工具的示例中所述.在这个链接http:/ools.android.comech-docsew-build-system.我看了页面底部的gradle-samples-0.11获取灵感.所以我设法通过在build.gradle默认配置部分中包含以下代码

我正在移动我的Android项目,该项目使用ndk-build来使用gradle构建系统,如AndroID新构建工具的示例中所述.在这个链接http://tools.android.com/tech-docs/new-build-system.我看了页面底部的gradle-samples-0.11获取灵感.

所以我设法通过在build.gradle默认配置部分中包含以下代码来配置我需要的所有部分.

ndk {            modulename "MyModulename"            ldlibs "log"            cFlags "-std=c++11 -fexceptions"            stl "gnustl_static"}

我在原始项目的Application.mk文件中有这一行:
  NDK_TOolCHAIN_VERSION:= 4.9
这是我无法配置的最后一块.

我正在使用NDK修订版10.我需要这个NDK_TOolCHAIN_VERSION:= 4.9因为我的构建报告错误:(25,11)错误:在’Integer’之前预期的嵌套名称说明符,并且该行的c代码看起来像这样.

using Integer = int16_t;

有没有人知道如何解决这个问题,拜托?

解决方法:

我一直在努力解决这个问题.但最终通过编写自定义任务使AndroID Studio使用Application.mk和AndroID.mk就像在eclipse中一样.

我的build.gradle看起来像这样

apply plugin: 'com.androID.application'androID {    buildTypes {        release {            runProguard false            proguardfiles getDefaultProguardfile('proguard-androID.txt'), 'proguard-rules.pro'        }    }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_7        targetCompatibility JavaVersion.VERSION_1_7    }    compileSdkVersion 20    buildToolsversion "20.0.0"    defaultConfig {        minSdkVersion 15        targetSdkVersion 20        versionCode 1    }    packagingOptions {        exclude 'meta-inf/DEPENDENCIES'        exclude 'meta-inf/liCENSE'        exclude 'meta-inf/NOTICE'    }    sourceSets.main {        jnilibs.srcDir 'src/main/libs'        jni.srcDirs = [] //disable automatic ndk-build call    }}task buildNative(type: Exec) {    def ndkBuild = null;    def ndkBuildingDir = new file("src/main/jni");    def hasNdk = false;    if (System.getenv("NDK_BUILD_CMD") != null) {        hasNdk = true;        ndkBuild = new file(System.getenv("NDK_BUILD_CMD"))    }    commandline ndkBuild, "--directory", ndkBuildingDir    doFirst {        if (!hasNdk) {            logger.error('##################')            logger.error("NDK build Failed!!")            logger.error('Reason: NDK_BUILD_CMD not set.')            logger.error('##################')        }        assert hasNdk: "NDK_BUILD_CMD not set."    }}tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn buildNative }task cleanNative(type: Exec) {    def ndkBuild = null;    def ndkBuildingDir = new file("src/main/jni");    def hasNdk = false;    if (System.getenv("NDK_BUILD_CMD") != null) {        hasNdk = true;        ndkBuild = new file(System.getenv("NDK_BUILD_CMD"))    }    commandline ndkBuild, "--directory", ndkBuildingDir, "clean"    doFirst {        if (!hasNdk) {            logger.error('##################')            logger.error("NDK build Failed!!")            logger.error('Reason: NDK_BUILD_CMD not set.')            logger.error('##################')        }        assert hasNdk: "NDK_BUILD_CMD not set."    }}clean.dependsOn 'cleanNative'

为此,您需要设置一个环境变量NDK_BUILD_CMD来设置确切的ndk-build可执行文件.

在windows上,您只需将环境变量NDK_BUILD_CMD指向ndk-build.exe即可

在Mac上,您在.bash_profile中设置的路径变量在GUI应用程序上无法访问(因此AndroID Studio将无法读取它们).
因此,将.bash_profile编辑为类似的内容

GRADLE_HOME={path_to_gradle}ANDROID_SDK_ROOT={path_to_sdk_dir}ANDROID_HOME=$ANDROID_SDK_ROOT/platform-toolsANDROID_NDK_HOME={path_to_ndk}NDK_BUILD_CMD=$ANDROID_NDK_HOME/ndk-build export PATH=$GRADLE_HOME/bin:$ANDROID_HOME:$ANDROID_SDK_ROOT/tools:$ANDROID_NDK_HOME:/opt/local/bin:/opt/local/sbin:$PATHlaunchctl setenv GRADLE_HOME $GRADLE_HOMElaunchctl setenv ANDROID_HOME $ANDROID_HOMElaunchctl setenv ANDROID_NDK_HOME $ANDROID_NDK_HOMElaunchctl setenv NDK_BUILD_CMD $NDK_BUILD_CMD

launchctl行将使您的环境变量在AndroID Studio中可见.
PS:每次打开终端时都会运行.bash_profile.因此,要使其与AndroID Studio一起正常运行,您需要启动一次终端,然后运行AndroID Studio.否则,构建将失败,表示未设置NDK_BUILD_CMD.我没有找到任何方法来设置Mac启动时的值.如果其他人可以找到方法,请随时提出建议.

总结

以上是内存溢出为你收集整理的如何在gradle文件中为android ndk build指定NDK_TOOLCHAIN_VERSION全部内容,希望文章能够帮你解决如何在gradle文件中为android ndk build指定NDK_TOOLCHAIN_VERSION所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1115682.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存