
我正在移动我的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_CMDlaunchctl行将使您的环境变量在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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)