一步一步教你调试JNI

本文转自 http://user.qzone.qq.com/65112183/main#!app=2&via=QZ.HashRefresh&pos=1332229687
这个东西还是很有用,看上去很高级的哈。
先决条件:
    必须先安装Sequoyah. 你能从下面2个地址安装 Sequoyah   http://download.eclipse.org/sequoyah/updates/1.1 or http://download.eclipse.org/sequoyah/updates/2.0
  如果需要,它会安装CDT的依赖包:  


  • 平台必须是Android2.2(android-8)或者更高
  • NDK版本必须是r4b或更高
  • 必须安装Eclipse CDT 7.0 或更高版本
  • AndroidManifest.xml 设置属性 android:debuggable="true" ,或者项目使用 "NDK_DEBUG=1" 编译(for r5)
  • 必须用ndk-build编译项目(如果使用Sequoyah  组件,将会自动完成)

设置调试部分
  • 为Android程序创建debug配置 (用 Eclipse 或 MOTODEV Studio)
  • 打开Android NDK附带的 ndk-gdb 脚本,注释最后一行.另存为eclipse-ndk-gdb

(我们不调用原来的gdb客户端, 而是用 Eclipse gdb 代替):

#$GDBCLIENT -x $GDBSETUP -e $APP_PROCESS
  • 最好在调用 System.loadLibrary() 前的Java代码中插入一个断点, 以确保正确地连接到调试器的Java进程.
  • 运行Android Debug,等待它到达断点的位置
  • 打开一个终端,进入项目目录,运行eclipse-ndk-gdb . 它不会附加一个GDB客户端,而是在模拟器上调用gdbserver的连接,打开一个TCP端口.
  • 为项目创建C/C++ Debug配置
  • 设置下面的属性:
  • 选择标准的进程启动器.在"Main"选项卡的底部:


  • 选择"Main" 选项卡:  在"C/C++ Application"填上:
$PROJECT_PATH/obj/local/armeabi/app_process

  • 选择 "Debugger" 选项卡:
  • Debugger: gdbserver
  • 选择 "Main" 子选项卡:
  • GDB debugger:
(for NDK r4b)$NDK_PATH/build/prebuilt/$ARCH/arm-eabi-$GCC_VERSION/bin/arm-eabi-gdb 
(for NDK r5)$NDK_PATH/toolchains/arm-eabi-$GCC_VERSION/prebuilt/$ARCH/bin/arm-eabi-gdb
  • GDB 命令文件:
$PROJECT_PATH/obj/local/armeabi/gdb2.setup[Windows 用户] 取消 "Use full file path to set breakpoints" 选项

  • 选择 "Connection" 子选项卡:
  • Type: TCP
  • Hostname or IP address: localhost
  • Port number: 5039


  • 修改本地文件夹的 gdb.setup 文件.
$PROJECT_PATH/obj/local/armeabi/

删除 "target remote:5039" .

  • 在Eclipse到GDB连接到gdbserver 后,启动上面配置C/C++调试器.


在完成上面的步骤后,我们就能像平常一样调试程序.


当然可以,下面是针对将Android应用程序对接新PDA设备的详细步骤: 1. **添加aar文件到Gradle**: - 打开你的`build.gradle`文件,在`dependencies`区域,添加一行类似这样的代码,将路径替换为实际的aar文件路径: ``` implementation 'path.to.your.pda_device_library:library-name:version' ``` 2. **配置aar的依赖**: - 如果aar文件包含了额外的SDK版本需求,比如针对某个特定版本或架构的,可能需要在`defaultConfig`或`multiDexEnabled`部分做相应设置。 - 如果有So文件(动态链接库),记得在`jniLibs`目录下放入对应平台的so文件。 3. **整合元数据**: - 确保AAR包内包含的AndroidManifest.xml文件已正确配置,特别是Activity、Service等组件,以及权限声明等。 - 检查是否有新的资源文件(strings.xml, drawable等),可能需要将它们导入到你的项目中,并在必要时更新代码引用。 4. **适配UI和功能**: - 依据PDA的屏幕大小和分辨率调整布局XML文件,确保界面在新设备上显示得体。 - 对于设备特有的硬件功能或API,编写针对性的代码来利用。 5. **兼容性测试**: - 使用模拟器或实际的PDA设备进行测试,关注性能、用户交互、错误提示等各个方面。 - 运行单元测试和集成测试,确保关键功能的稳定性和兼容性。 6. **处理兼容性问题**: - 针对可能出现的问题(如API差异、API版本冲突等),进行必要的异常处理和版本判断。 - 使用条件注解(如if语句)或工具类来区分对待不同设备的行为。 7. **更新文档和用户指南**: - 更新开发文档和用户手册,告知开发者如何在新设备上部署和调试。 8. **发布和更新**: - 确认所有问题解决后,提交到应用商店,同时提供版本更新说明,让用户知道新设备的支持情况。 以上就是每个步骤的详细描述。如果你有任何疑问,随时提问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值