JNI调试

    在Android下使用JNI调用自己实现的so共享库,通过网络链接访问无服务,程序刚启动时就崩溃了,没有任何的提示信息,adb logcat查看运行日志信息:

05-20 21:14:10.288  1382  1520 I ActivityManager: Process com.galen.snappy (pid 6476) has died.
05-20 21:14:10.288  1382  1387 I WindowManager: WIN DEATH: Window{45d9ecb0 com.galen.snappy/com.galen.snappy.Snappy paused=false}
05-20 21:14:10.311  1236  1236 D Zygote  : Process 6476 exited cleanly (1)
05-20 21:14:10.311  1382  1520 I UsageStats: Unexpected resume of org.adwfreak.launcher while already resumed in com.galen.snappy
05-20 21:14:10.389  1382  1382 W InputManagerService: Got RemoteException sending setActive(false) notification to pid 6476 uid 10095

找不到错误原因,使用ndk-gdb进行调试,提示没有提示符号表。

在AndroidManifest.xml中配置调试项:

android:debuggable="true"

在Android.mk中添加编译选项:-g

在ndk中屏蔽对编译符号信息过滤的脚本:

         android-ndk-r5b/build/core/build-binary.mk:#$(hide) $(call cmd-strip, $(PRIVATE_DST))

编译脚本如下:

#!/bin/sh
android update project -p ./
cd jni
ndk-build
cd ..
ant debug
adb uninstall com.galen.snappy
echo uninstall
cd bin
adb install Snappy-debug.apk
echo install


生成可供调试的带有符号表的debug版本。

ndk-gdb进行调试,并开启debug_log最终定位到出错位置,错误信息如下:

05-20 22:27:18.116  7272  7280 E ----android----: connection failed, trying with TLS port
05-20 22:27:18.116  7272  7280 E ----android----: Connect error
05-20 22:27:18.116  7272  7280 E ----android----: Coroutine exit

调试,打印错误信息,最终找到错误原因:

Permission denied

原来是没有网络操作权限啊,墨迹了这么久终于找到。

OK,添加权限在AndroidManifest.xml中:

<uses-permission android:name="android.permission.INTERNET"/>

adb logcat查看debug信息,终于调试通过。

小小错误费如此大功夫,还是对android了解太少。

~End~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值