在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~
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务