Windows NDK 开发调试遇到问题及解决方
2014-12-23 20:12
316 查看
弄了好久,出了N多问题
网上有关windows NDK 开发的文章很多这里就不详细说明,紧针对可能遇到的问题进行总结。
一 Windows NDK环境搭建参考:
http://blog.csdn.net/android_panda/article/details/7607946 http://blog.csdn.net/pocoyoshamoo/article/details/23533923 http://blog.csdn.net/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.csdn.net/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,大可不必理会。
网上有关windows NDK 开发的文章很多这里就不详细说明,紧针对可能遇到的问题进行总结。
一 Windows NDK环境搭建参考:
http://blog.csdn.net/android_panda/article/details/7607946 http://blog.csdn.net/pocoyoshamoo/article/details/23533923 http://blog.csdn.net/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.csdn.net/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,大可不必理会。
相关文章推荐
- 开发Windows商店应用时使用SmsDevice类API遇到的Access Denied问题解决方法
- [置顶] 在windows上搭建React Native开发环境时遇到licence问题的解决
- 个人在iOS开发过程中真机调试遇到的问题及解决方法
- Windows下用Eclipse开发Hadoop程序遇到的问题及解决方法
- Windows下用Eclipse开发Hadoop程序遇到的问题及解决方法
- Windows下用Eclipse开发Nutch遇到的问题及解决方法
- eclipse开发与调试ndk时碰到的一些问题与解决
- VS2010无法调试问题解决 最近,因为公司开发的需要,对开发环境进行全面的升级,在这其中也遇到了不少问题,在之后将陆续整理出来,以便以后查看。 之前开发环境:VS2008,ArcGIS9.3,Ar
- 在windows上搭建React Native开发环境时遇到licence问题的解决
- Android Studio NDK开发过程中遇到的问题与解决(一)
- IDEA 开发环境中 调试Spark SQL及遇到问题解决办法
- IDEA 开发环境中 调试Spark SQL及遇到问题解决办法
- windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法
- 个人在iOS开发过程中真机调试遇到的问题及解决方法 推荐
- 最近oracle开发中遇到的一些问题及解决办法(四):调试存储过程--待续
- SILVERILGHT开发遇到调试资源字符串不可用,键和参数通常会提供足够的信息来诊断问题的解决
- 搭建WinXP+VS2008+IIS+Sql Server 2005开发环境遇到的问题及解决方法备案
- 开发中遇到的DLL问题思考及解决方法
- 最近oracle开发中遇到的一些问题及解决办法(二)待续
- WCF开发中遇到的问题及解决系列(一):运行WCF客户端时碰到错误“AddressAlreadyInUseException”