Windows NDK 开发调试遇到问题及解决方

本文总结了Windows NDK环境下开发时可能遇到的问题及其解决办法,包括环境搭建、NDK开发注意事项、真机调试、CPU版本设置、断点调试、NDK编译平台设置等问题,并提供了详细的步骤和实例,帮助开发者高效解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

弄了好久,出了N多问题

网上有关windows NDK 开发的文章很多这里就不详细说明,紧针对可能遇到的问题进行总结。

一 Windows NDK环境搭建参考:

http://blog.youkuaiyun.com/android_panda/article/details/7607946

http://blog.youkuaiyun.com/pocoyoshamoo/article/details/23533923

http://blog.youkuaiyun.com/watkinsong/article/details/9849973

注意:选择Cywin安装包时必须安装:autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包。

注意:配置Cywin 的bash_profile文件。

注意:如果无法正常下载相关软件如ADT、SDK、NDK等,可以参考这个网址,有很多你需要的下载资源:http://www.cnblogs.com/tc310/p/3938353.html。


二  NDK 开发注意事项

注意:在“Add Native Support”操作后,项目中会生成jni等文件夹,这个操作是不可逆的,如果手动删除了jni文件夹可能会导致项目错误。

注意:右键,选择项目属性(Properties),在C/C++ Build中设置Native Debug参数,如下图所示,Build Command 默认参数是:ndk-build,如果你想单步调试NDK C/C++代码,必须加上 NDM_DEBUG=1,‘=’号两边没有空格。


 

注意:编写完代码后,接下来调试程序,如果只调试Java程序,Debug中选择Android Application,如果想调试C/C++程序,Debug中选择 Android Native Application!


注意:真机环境十有八九调试不了C/C++程序,会报错误如下所示 the program is not being run。这个时候就要用模拟器调试。



注意:一定要确定模拟器或真机的CPU,可能是armeabi、armeabi-7va、x86、mips,那么我们的NDK程序只能是对应的一种,即在jni文件夹下的Application.mk中设置lib对应的CPU版本,APP_ABI:= armeabi-v7a 或 APP_ABI:= armeabi。如果设置不对或设置了多个CPU版本,在调试的时候,可能会将错误的gdb传递过去,导致无法进入断点调试。


注意:NDK调试提示No symbol table is loaded. Use the "file" command.

请参见:http://blog.youkuaiyun.com/a19860903/article/details/10500565


注意:其他设置没有问题,但是自己设置的断点就是无效,可能是断点在程序启动前设置的,你可以删除原来断点重新设置,就OK了。


注意:提示Unable to detect device compatibility. Please select a target device.APP_PLATFORM ** is larger than android:minSdkVersion 8.  Unable to detect application ABI's 错误。这是因为在AndroidManifest.xml中我们设置了minSdkVersion 为8,但是NDK编译平台(platform)最小的版本仍然大于8,所以需要在jni下的Application.mk中添加 APP_PLATFORM := android-8。



注意:如果你在C++中使用了vector 、queue等STL,需要在Application.mk中设置APP_STL属性,如上图所示,我在项目中使用了Vector,必须在Application.mk进行说明。可能有多个stl参数。



注意:当需要编译多个CPP或.c文件时,需要在LOCAL_SRC_FILES :中设置,不同文件用‘\’隔开,如:

LOCAL_SRC_FILES := Native_algorithm_NSPFA.cpp \ Native_algorithm_NFloyd.cpp \ TNode.cpp

否则会在编译过程中找不到其他的文件,报错。


注意:调试的时候NDK可能会提示一些warning,大可不必理会。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值