确定 Android 应用程序中语句的执行顺序?

Posted

技术标签:

【中文标题】确定 Android 应用程序中语句的执行顺序?【英文标题】:Determine the sequence of execution of statements in an Android app? 【发布时间】:2021-04-27 17:36:32 【问题描述】:

我必须对 android 应用进行逆向工程才能了解其代码的工作原理。我使用 jadx v1.1.0 来查看应用程序组件(源代码等),但这个应用程序只允许我查看源代码。我不知道如何调试代码,或者弄清楚代码的执行顺序。我不知道这个 Android 应用的头部和尾部是什么。

我能做些什么来解决这种情况?

【问题讨论】:

【参考方案1】:

在尝试阅读 Android 应用程序之前,您肯定需要做一些研究。不过,需要进行多少研究取决于您对 Java 语言的熟悉程度。如果您已经熟悉语法,那么您可以直接跳到 Android 组件生命周期(这是假设您的目标只是了解应用程序中发生的事情,而不是学习如何编写 Android 应用程序)。

我将从这组 Medium 文章开始。作者简单地解释了Android组件的各种生命周期及其回调方法,做得很好:

https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-i-single-activities-e49fd3d202ab https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-ii-multiple-activities-a411fd139f24 https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-iii-fragments-afc87d4f37fd

如果您可以了解 Android 组件的生命周期及其相关的回调方法,您应该能够大致了解发生了什么。查找名称中带有“Activity”或“Fragment”字样的 Java 文件,我将从那里开始。在这些文件中,查找遵循onCreateonResumeonDestroy 等命名约定的回调方法。如果您阅读了上述文章,您就会大致了解它们的顺序调用,您可以找出应用程序的执行顺序。

从那里,有很多方法可以分支。我有一种感觉,这会给你一个足够好的开始,让你有足够的知识知道从那里研究什么。

【讨论】:

【参考方案2】:

您需要更多地了解 Android 平台,以便为记录基本事件序列奠定基础,但根据应用程序的复杂性,这可能会变得相当困难。

我建议查看 manifest 文件,这将帮助您确定哪些(如果适用)活动是启动器,以及定义任何权限、服务和接收器。还要寻找一个扩展Application 的类。这将是您在启动时的第一个执行点。另请查看 Android 文档和示例,以了解典型的应用程序结构。

可以将此源代码迁移到存根的 Android 项目中以对其进行调试,但这需要时间和耐心。

【讨论】:

以上是关于确定 Android 应用程序中语句的执行顺序?的主要内容,如果未能解决你的问题,请参考以下文章

通过讨论Oracle 中sql语句的执行顺序,判断哪里可以使用定义过的别名

如何多条SQL语句执行?

SQL语句执行顺序及优化参考 | SQL 优化宝典

SQL语句执行顺序及优化参考 | SQL 优化宝典

Android - 父活动应确定子活动调用它

switch语句