我正在尝试使用ndk-stack实用程序在使用本机库的应用程序调试期间获得一些帮助.问题是我使用该实用程序的所有内容是:
*** 崩溃转储: *** 构建指纹:'tmobile/htc_vision/vision:2.3.4/GRJ22/82286:user/release-keys'pid:15769,tid:15794 >>> us.ihmc.aci.dsproapp <<< signal 11( SIGSEGV),代码1(SEGV_MAPERR),故障地址00000024堆栈帧#00 pc 00063710 /data/data/us.ihmc.aci.dsproapp/lib/ libutil.so:无法打开符号文件/ home/enrico/CVSROOT/android/aci/dsproapp/obj/local/armeabi/libutil.so.错误(9):错误的文件描述符
我正在使用的命令是这样的:
ndk-stack -sym ../obj/local/armeabi -dump /home/enrico/stacktrace/crash_waypoint.txt
我的所有本机库都是用它编译的
APP_OPTIM:=调试APP_STL:= gnustl_static
在Application.mk中,应该存在调试符号.你们之前有没有人遇到过这个问题?谢谢,恩里科
升级到Android 8后,我的应用程序的某些功能已经破坏,甚至没有明确定位到API 26.特别是,用于检查服务是否正在运行的良好旧函数(如此处的StackOverflow中所述:如何检查服务是否在Android上运行?)不再起作用.
为了刷新我们的集体记忆,这是一个经典的方法:
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题getRunningServices是现在已经弃用,并且不再返回正在运行的服务.有没有人在Android 8上遇到过这个问题?有没有官方解决方案(或黑客)?我还应该指出,我想要查找的服务与调用的代码不在同一个进程/应用程序中isMyServiceRunning()(由于向后兼容性原因,仍提供该功能)