iOS – 检测应用程序是否从Xcode运行

iOS – 检测应用程序是否从Xcode运行,第1张

概述这个问题在这里已经有一个答案:            >             Detecting if iOS app is run in debugger                                    4个 我试图根据代码是否通过USB / Xcode(调试)运行,或者从应用商店(发行版)下载的生产模式中启用/禁用部分代码.我知道检查它是否在DEBUG或RELEASE 这个问题在这里已经有一个答案:> Detecting if iOS app is run in debugger4个
我试图根据代码是否通过USB / Xcode(调试)运行,或者从应用商店(发行版)下载的生产模式中启用/禁用部分代码.我知道检查它是否在DEBUG或RELEASE模式下运行,如下所示:
#ifdef DEBUG// Stuff for deBUG mode#else// Stuff for release mode#endif

但问题是,我看到一个明显的循环孔,您可以将“运行”构建方案的构建配置从“DeBUG”更改为“Release”.一个更好的方法是,如果我可以简单地检测它是否从Xcode运行.我没有找到一个方法来检查这个.

有没有办法检查iOS应用程序是否从Xcode运行?

@R_404_6120@ 您可以使用sysctl检查调试器是否附加(可能是但不是绝对的Xcode).以下是 HockeyApp does it:
#include <Foundation/Foundation.h>#include <sys/sysctl.h>/** * Check if the deBUGger is attached * * Taken from https://github.com/plausiblelabs/plcrashreporter/blob/2dd862ce049e6f43feb355308dfc710f3af54c4d/Source/Crash%20Demo/main.m#L96 * * @return `YES` if the deBUGger is attached to the current process,`NO` otherwise */- (BOol)isDeBUGgerAttached {  static BOol deBUGgerIsAttached = NO;  static dispatch_once_t deBUGgerPredicate;  dispatch_once(&deBUGgerPredicate,^{    struct kinfo_proc info;    size_t info_size = sizeof(info);    int name[4];    name[0] = CTL_KERN;    name[1] = KERN_PROC;    name[2] = KERN_PROC_PID;    name[3] = getpID(); // from unistd.h,included by Foundation    if (sysctl(name,4,&info,&info_size,NulL,0) == -1) {      NSLog(@"[HockeySDK] ERROR: Checking for a running deBUGger via sysctl() Failed: %s",strerror(errno));      deBUGgerIsAttached = false;    }    if (!deBUGgerIsAttached && (info.kp_proc.p_flag & P_TRACED) != 0)      deBUGgerIsAttached = true;  });  return deBUGgerIsAttached;}
总结

以上是内存溢出为你收集整理的iOS – 检测应用程序是否从Xcode运行全部内容,希望文章能够帮你解决iOS – 检测应用程序是否从Xcode运行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1106656.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存