EdXposed 错误提交说明 原作:rovo89 翻译:MlgmXyysd 修正:MlgmXyysd 1.介绍 本文章介绍如何解决问题并报告错误。我们假设您至少拥有一些Android知识 - 否则,您应该放弃像root权限和Xposed这样的东西! 2.总结 真的吗?您没有10分钟阅读此文章以提供优质的错误报告?您是否希望开发人员花费更多时间来解决您的问题?伤心。 不过,如果您只需要一份清单,可以看一下: 通过可重复的步骤,可以清楚地了解该问题。 尝试最新版本的EdXposed(和模块)。 确保在停用所有EdXposed模块后仍会出现问题。 确保在完全卸载EdXposed时不会出现问题。 在交流群探讨询问相关问题,也许部分用户已经找到了解决办法。 如果其他人有相同的问题,请在网络上(例如XDA,GitHub)查看其他人反馈的已知问题,可能已经有解决办法。 如果是,请观看问题或添加更多信息。避免提交简单的“我也是”。 如果没有,请创建详细的GitHub issues(参考下文),回答问题并确认建议的修复是否有效。 有关详细信息,请花时间阅读以下段落。 3.究竟是什么问题? 首先,确保您了解您遇到的问题。以下是一些典型的类别: 安装错误(甚至无法安装EdXposed框架) 引导循环(设备卡在引导屏幕上10分钟以上) 系统崩溃(您看到锁屏或桌面,但会弹出“进程xyz已停止”使设备无法使用) 应用程序崩溃(某些应用程序在启动时/某些操作后崩溃) “随机”重启(无明显原因,设备重启/软重启) 应用程序/系统错误行为(没有崩溃,但某些东西不能按预期工作) 性能(应用程序启动/运行缓慢) 然后,尝试找出更多细节。最重要的是:尝试找到重现问题的方法。 如果您无法描述触发问题的步骤,开发人员将很难了解正在发生的事情并验证潜在的修复程序是否真正有效。重现性也有助于以后获取更详细的信息和日志。 4.确保问题实际上是由EdXposed引起的 一旦确定了可能的错误,您可能希望修复它。 等一下 - 也许已经修复了,所以请确保您使用的是最新版本的Xposed和模块(最好尝试一下Alpha或Canary通道,一些bug也许会在测试版中已经修复)。在极少数情况下,清除Dalvik缓存也会有所帮助。 最无用的反馈是:“它不起作用!” 如果仅有这么少的信息,你会浪费愿意帮助你的贡献者的时间(如果你让他们有机会这样做),你可能会得到一些愤怒的回复,bug报告将无法定位问题(因为开发人员没有时间检查整个互联网的错误),你的错误将无法修复。没有人会高兴。 修复错误通常需要缩小问题,最后定位到代码中的几行,然后调整代码。虽然所有这些听起来像是开发人员的任务,但对于“缩小”部分,您的帮助非常重要。 因此,您必须尝试重现所有禁用模块的问题。没有必要卸载它们,只需在EdXposed Manager应用程序中取消选中它们并重新启动即可。如果问题消失,请不要将其报告为EdXposed Framework中的错误。相反,再一次启用模块以找出哪个模块是罪魁祸首。一旦您认为已经找到它,再次停用所有其他模块以验证您的理论。对于向模块开发人员提供的错误报告,此页面上的以下信息可能仍然有用。 如果即使没有任何模块启用,问题仍然存在,请在卸载EdXposed后尝试重现该问题。有可能是系统本身或其他问题,报告和调查EdXposed中由其他东西引起的“错误”是在浪费时间。 您可以(并且应该)之后再次安装EdXposed。 此外,您还必须尝试禁用其他的Magisk模块来验证bug是否由EdXposed导致。 5.其他人有同样的问题吗? 好的,所以你可能在EdXposed中发现了一个错误。下一步是找出其他人是否已经报告过它。 对于EdXposed Framework,您应该搜索XDA和GitHub,或是在交流群中向其他人探讨。 对于模块,通常在模块存储库中提到支持URL。这可能是XDA帖子,GitHub issue或类似问题。 如果已报告问题,请检查是否可以添加更多信息(请参阅下文)。如果没有,请不要再次发布一个简单的“我也是”(可以在原帖跟帖回复),因为这样每个人都很难找到相关信息。您可能会使用XDA上的“Thanks”按钮等功能以及GitHub上的反应,这是向开发人员展示有多人等待解决方案的一种非侵入性方式。 6.如果有人告诉我尝试使用旧版本怎么办? 您可以尝试将其作为解决方法,知道哪个版本破坏了某个功能实际上对解决问题是有帮助的。但是,您仍应报告该错误,以便为开发人员提供修复错误的机会。只有这样,最新版本将再次成为最佳版本,您可以从新版本中的其他改进中获益。 7.创建新的错误报告 如果您是第一个注意到该问题的人,请打开一个新的错误报告。 对于EdXposed模块中的错误,请使用模块的支持URL。不要在下面提到的任何地方报告它们,我们帮不了你。 对于EdXposed Framework中的错误,报告它们的唯一地方是GitHub。在其他地方反馈的问题很可能会被忽略。 由于框架由几个部分组成,因此存在多个问题队列。作为最终用户,很难定义使用哪一个,所以这里有一些提示: https://github.com/topjohnwu/Magisk/issues(Magisk相关问题) https://github.com/rikkaapps/Riru/issues(Riru前置相关问题) https://github.com/solohsu/XposedInstaller/issues(XposedInstaller相关问题) https://github.com/ElderDrivers/EdXposedManager/issues(EdXposedManager相关问题) https://github.com/ElderDrivers/EdXposed/issues(不符合上述类别的各种其他问题) 一般情况下,你可以在EdXposedManager中找到上述反馈链接。 您无需注册即可浏览和搜索这些队列。要提交新问题,您需要一个免费的GitHub帐户。 8.我应该在错误报告中包含哪些信息? 您应该始终包含以下信息: 设备(品牌和型号) 固件(ROM)版本 EdXposed版本 Magisk版本 Riru版本 问题的详细描述(如果适用,包括确切的错误消息) 预期结果(如果有) bug解决步骤(如果您已经尝试解决此问题,无论成功与否,都可以写下来,如果您懂得Android/Java开发,还可以直接提交PullRequest来帮助我们修复bug) 重现步骤 相关日志 不要让开发人员猜测。您提供的详细信息越多,问题即将得到解决的可能性就越大。 9.我怎样才能获得日志? 好问题!您可能已经注意到可以在EdXposedManager中看到日志。当您想向其开发人员报告模块问题时(或者如果您自己是模块开发人员),这些应该足够了。它主要显示模块执行中的问题。您可以通过EdXposedManager应用程序导出它,也可以在其中找到它/data/user_de/0/org.meowcat.edxposed.manager/log/。在同一位置还有来自先前启动的第二个日志,如果您不知道该提交哪一个,请提交最大的那个(通常是all.log)。 EdXposed日志通常不足以记录开机循环和应用程序崩溃。在这些情况下,您需要提供logcat。获取logcat有四种方法: I.通过我们的LogCatcher Magisk模块 通过我们的模块,您可以轻松获取开机过程中的logcat,通常对于开机循环有很大的作用。 如果您遇到应用程序崩溃,也可以使用模块内建的catlog命令来获取崩溃记录。 II.通过logcat应用程序 有像CatLog这样的应用程序,让您轻松采取logcat。但是,通常存在两个问题:应用程序仅在系统正常引导时才起作用,并且系统仅存储一定量的日志行。达到该限制后,将覆盖旧行。如果根本原因在引导过程中,则应用程序可能不再看到相关行。虽然捕获应用程序崩溃可能已足够。 III.通过adb 这要求您在PC上设置adb并通过USB连接设备。假设您遇到引导循环或系统崩溃,请关闭设备并adb logcat -v time > logcat.txt在命令行窗口中执行。然后打开设备并等待几分钟。然后Ctrl + C在命令行窗口中按以停止捕获。如果您只是遇到应用程序问题,那么执行logcat命令就足够了,重现问题然后按Ctrl + C。 好处是这种方式不需要root权限或Recovery。 IV.通过LiveBoot ChainFire的LiveBoot应用程序可以选择将日志保存到/cache分区。 获得日志后,请将其上传到某个地方,例如上传到Pastebin,Google云端硬盘,百度网盘......,并在您的错误报告中添加一个链接。请不要尝试将整个日志粘贴到错误报告中。 10.报告错误后我该怎么办? 要有耐心,给开发人员一些时间来看看它。不要催促,这是很烦人的。 即使您包含上述所有信息,也可能需要进一步说明,因此请回答开发人员的问题。如果他们提供测试版本,请非常友好并提供反馈是否能解决问题。如果没有,发布新的logcat通常是必要的。 最后,您报告的错误有望在下一个正式版本中得到修复和发布。建议您按照始终使用最新版本的原则在测试版本上安装它。