Error:FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:externalNativeBuildDebug'.
> Build command failed.
Error while executing process E:\Android\Sdk\ndk-bundle\ndk-build.cmd with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=G:\project\Android\Anti-shake-arithmetic\app\src\main\jni\Android.mk NDK_APPLICATION_MK=G:\project\Android\Anti-shake-arithmetic\app\src\main\jni\Application.mk APP_ABI=armeabi NDK_ALL_ABIS=armeabi NDK_DEBUG=1 APP_PLATFORM=android-15 NDK_OUT=G:/project/Android/Anti-shake-arithmetic/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=G:\project\Android\Anti-shake-arithmetic\app\build\intermediates\ndkBuild\debug\lib G:/project/Android/Anti-shake-arithmetic/app/build/intermediates/ndkBuild/debug/obj/local/armeabi/libNDKUtils.so}
[armeabi] StaticLibrary : libclapack1.a
process_begin: CreateProcess(NULL, E:/Android/Sdk/ndk-bundle/build//../toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar crsD G:/project/Android/Anti-shake-arithmetic/app/build/intermediates/ndkBuild/debug/obj/local/armeabi/libclapack1.a
make: *** [G:/project/Android/Anti-shake-arithmetic/app/build/intermediates/ndkBuild/debug/obj/local/armeabi/libclapack1.a] Error 206
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
 
出现上述错误,是我在NDK开发中,想在 Android Studio 配置 debug 环境(具体步骤:http://www.cnblogs.com/xiaoxiaoqingyi/p/7143536.html),于是在 gradle 配置文件下 添加了如下节点:
 externalNativeBuild {
// 采用ndk-build
ndkBuild {
path 'src/main/jni/Android.mk'
}
// 如采用 cmake 使用如下配置
//cmake {
// path 'src/main/jni/CMakeLists.txt'
//}
}
    在没添加这些节点的时候, 我编译是能通过的,且能运行 .so动态库。加入这些节点后,就出现了上面的错误。第一反应,我看到的是 NDK_PROJECT_PATH=null ,想到应该是 .so 库没有衔接好,于是我google了好久,大概有如下解决方案,你可以一 一去尝试:
 
1、修改 module 下 gradle 里 sourceSets 指定动态库路径节点,该节点用来配置 jni 库的路径。Android Studio 环境下,默认的 jniLibs 路径是:src/main/jniLibs。如果你是从旧项目移植过来的话,可能没有该目录,你可以在 android 节点中添加如下配置:
//指定动态库路径
sourceSets {
main {
jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk
jniLibs.srcDir 'src/main/libs'
}
}
2、也有方案说,需要把 编译好的 动态库放到 app/libs 目录下, 因为这个目录默认是存放 jar包,把编译好的动态库放入 app/libs 目录后,再在 android 节点中添加如下配置:
sourceSets {
main {
jniLibs.srcDirs = ['libs‘]
}
}
3、如果上述都两种方案都没解决你的问题,这很大可能是 你的Android.mk 配置问题。你的Android.mk 是否有一个 总的 Android.mk,然后include 了其它子Android.mk ? 如果是,你应该重新配置好你的子Android.mk。像 OpenCV native库, 它就是用一个 总的 Android.mk,include 了其它子Android.mk,OpenCV 库是配置是没有问题的,我编译成功过。
 
     我得到最开始的那个错误是 因为我在 配置levmar 库时,levmar 使用了第三方的库(clapack),而子Android.mk 没有配置好,最后,我把 clapack 库去了,因为该项目刚好也没有使用到 clapack 库。最后,编译成功了。
 
    上述我也说了,我的目的是为了能debug C/C++ 代码,编译成功后,其实debug 环境是配置好了,但还是debug 不了,就是说,在那行代码设置了断点,运行到那里了,还是停不下来。 只有C/C++代码报错的时候, debug才检测到。这个问题我一直没有解决,很有可能的原因是,我使用了比较多的 第三方编译好的动态库,而直接使用源代码,如 ffmpeg,opencv。
 
 

NDK配置debug环境时:Error:FAILURE: Build failed with an exception的更多相关文章

  1. FAILURE: Build failed with an exception. Crunching Cruncher screen.png failed

    自己测试ionic的模板项目cutePuppyPics时,按照https://github.com/driftyco/ionic/blob/2.0/CHANGELOG.md#angular-updat ...

  2. FAILURE: Build failed with an exception.

    FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:installD ...

  3. Android Studio 中 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileDebugAidl'.的问题解答

    Android Studio 中 FAILURE: Build failed with an exception. * What went wrong: Execution failed for ta ...

  4. Starting a Gradle Daemon, 5 busy and 1 incompatible and 1 stopped Daemons could not be reused, use --status for details FAILURE: Build failed with an exception. * What went wrong: Could not dispatch

    执行gradle build出的问题,查看hs_err_pid11064.log日志文件发现,是电脑的RAM不足导致

  5. NDK开发,如何配置 debug环境

    刚开始做NDK 开发的时候,Android Studio 还没提供了 native C/C++ 设置断点 调试,我们都是通过输出 日志来调试,这样费时耗力.Android Studio 应该是在 2. ...

  6. Cocos2d-x 2.2.3 使用NDK配置编译环境

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wwj_748/article/details/30072379 Cocos2d-x 2.2.3 使用 ...

  7. Vue+Webpack配置css-loader时报错:Module build failed: Unknown word

    使用Vue+Webpack搭建工程时,在webpack.config.js中的module的rules里针对各种文件配置加载工具.在针对css文件配置时遇到一个问题:打包构建时报错——Module b ...

  8. 安卓真机或者模拟器运行安装应用时提示 Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]解决办法

    有时候为了方便调试APP,会在电脑上开启模拟器来调试我们的代码,有时候会出现 Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract n ...

  9. 初始化构建React+Ts项目时出现:Module build failed (from ./node_modules/css-loader/dist/cjs.js): CssSyntaxError

    具体错误 ERROR in ./src/index.tsx Module build failed (from ./node_modules/css-loader/dist/cjs.js): CssS ...

随机推荐

  1. [ios 开发笔记]:一句话笔记

    1.NSString转int int a=[@"123" intValue]; 同样适用于NSDictionary将NSNumber转为int   2.switch(stateme ...

  2. 使用VSCode和VS2017编译调试STM32程序

    近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台 ...

  3. crontab执行带参数的php脚本,并取得参数[转]

    现在越来越喜欢用linux了,程序当中也去掉了很多触发性判断,改用了借用linux的crontab的特性来进行,这样程序效率确实是高了很多. 比如我们每月1号清空月点击,比如每天凌晨统计上一天的访问报 ...

  4. linux_RAID

    什么是RAID? 磁盘阵列,把多个磁盘组合成一个磁盘组,在逻辑上看起来就是一块大的磁盘,提供单个物理磁盘的存储量和更高的存储性能,同时提供不同级别的冗余备份的一种技术,不同的RAID技术对应不同级别 ...

  5. Duilib学习(一)

    #pragma once #include <UIlib.h> using namespace DuiLib; #ifdef _DEBUG # ifdef _UNICODE # pragm ...

  6. 自己写的日志框架--linkinLog4j--日志框架的必要性

    OK,在开始研究Log4j的源码之前,我们先来自己模拟一个日志工具,名字就叫linkinlog4j好了. 在软件开发过程中,出现bug总是在所难免:事实上,以我个人经验,即使在实际开发阶段,fix b ...

  7. Java多线程之线程的控制

    Java多线程之线程的控制 线程中的7 种非常重要的状态:  初始New.可运行Runnable.运行Running.阻塞Blocked.锁池lock_pool.等待队列wait_pool.结束Dea ...

  8. libev学习代码

  9. 【转】shell学习笔记(三)——引用变量、内部变量、条件测试、字符串比较、整数比较等

    1.env显示当前的环境变量 2.PS1='[\u@\h \w \A] \$' 可以设置bash的命令与提示符. 3.echo $$ 显示当前bash的PID号 4.echo $?显示上一条指令的回传 ...

  10. Netty 编解码技术 数据通信和心跳监控案例

    Netty 编解码技术 数据通信和心跳监控案例 多台服务器之间在进行跨进程服务调用时,需要使用特定的编解码技术,对需要进行网络传输的对象做编码和解码操作,以便完成远程调用.Netty提供了完善,易扩展 ...